Exemplo n.º 1
0
def CalculateColour(aTriangle):

    AmbColour = [0.0, 0.0, 0.0]
    AmbColour[R] = ambientMatR * ambientLightR
    AmbColour[G] = ambientMatG * ambientLightG
    AmbColour[B] = ambientMatB * ambientLightB

    DiffuseColour = [0.0, 0.0, 0.0]
    DiffuseFactor = Diffuse(aTriangle.normal, Triangle.AveragePoint(aTriangle))
    #print(DiffuseFactor)

    DiffuseColour[R] = DiffuseFactor * diffuseMatR * lightSourceR
    DiffuseColour[G] = DiffuseFactor * diffuseMatG * lightSourceG
    DiffuseColour[B] = DiffuseFactor * diffuseMatB * lightSourceB
    #print(DiffuseColour[R],DiffuseColour[G],DiffuseColour[B])

    SpecularColour = [0.0, 0.0, 0.0]
    SpecularFactor = Specular(aTriangle.normal,
                              Triangle.AveragePoint(aTriangle))
    #print(SpecularFactor)

    SpecularColour[R] = SpecularFactor * specularMatR * lightSourceR
    SpecularColour[G] = SpecularFactor * specularMatG * lightSourceG
    SpecularColour[B] = SpecularFactor * specularMatB * lightSourceB
    #print(SpecularColour[R],SpecularColour[G],SpecularColour[B])

    endColour = [0.0, 0.0, 0.0]
    endColour[R] = AmbColour[R] + DiffuseColour[R] + SpecularColour[R]
    endColour[G] = AmbColour[G] + DiffuseColour[G] + SpecularColour[G]
    endColour[B] = AmbColour[B] + DiffuseColour[B] + SpecularColour[B]

    #if >1, clamp the values
    if endColour[R] > 1.0:
        endColour[R] = 1.0

    if endColour[G] > 1.0:
        endColour[G] = 1.0

    if endColour[B] > 1.0:
        endColour[B] = 1.0

    return Colour.Colour(endColour[R], endColour[G], endColour[B])
Exemplo n.º 2
0
triangleList = copyList
copyList = []

#do perspective division for perspective

for t in triangleList:
    t = AppInfo.PerspDiv(t)
    t = Triangle.MultiplyTriangle(t, AppInfo.ScreenMatrix)
    copyList.append(t)

triangleList = copyList
copyList = []

#clip in z
for t in triangleList:
    averagePt = Triangle.AveragePoint(t)
    if averagePt[2] < 1.0 or averagePt[2] > 0.0:
        copyList.append(t)

triangleList = copyList
copyList = []

for t in triangleList:
    t.AveragePoint = Triangle.AveragePoint(t)

#sort triangles by z
triangleList = bubbleSortTriangles(triangleList)

#draw triangles
for t in triangleList:
    Triangle.drawTriangle(t, windowSurface, t.colour)