14 def CreateMultiPatchMesh(pArrayIds):
22 lMesh.VertexArrayInit(5,
False, pArrayIds)
25 lPosList = [0, 100, 0, 100,100, 0, 100, 0, 0, 0, 0, 0, 50, 150, 0]
26 lMesh.SetPositionsArray(lPosList)
29 lUVList = [0, 1, 1, 1, 1, 0, 0, 0, 0.5, 0]
30 lMesh.SetUVSetDirectArray(lUVList)
33 lNormalList = [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1]
34 lMesh.SetNormalsDirectArray(lNormalList)
36 if (pArrayIds & FBGeometryArrayID.kFBGeometryArrayID_Binormal):
38 lBinormalList = [0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0]
39 lMesh.SetBinormalsDirectArray(lBinormalList)
41 if (pArrayIds & FBGeometryArrayID.kFBGeometryArrayID_Tangent):
43 lTangentList = [1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0]
44 lMesh.SetTangentsDirectArray(lTangentList)
46 if (pArrayIds & FBGeometryArrayID.kFBGeometryArrayID_Color):
48 lColorList = [0.5, 0.5, 0, 0.5, 0, 0.5, 0.5, 0.5, 1, 0, 0, 0.5, 0, 1, 0, 0.5, 1, 1, 0, 0.5]
49 lMesh.SetVertexColorsDirectArray(lColorList)
53 lMesh.TriangleStripAdd(3, lTriStrip, 0)
57 lMesh.TriangleListAdd(3, lTriList, 1)
60 lPolygonList = [0, 1, 4]
61 lMesh.PolygonListAdd(3, 3, lPolygonList, 2)
76 FBGeometryArrayID.kFBGeometryArrayID_Color, \
77 FBGeometryArrayID.kFBGeometryArrayID_Tangent, \
78 FBGeometryArrayID.kFBGeometryArrayID_Binormal, \
79 FBGeometryArrayID.kFBGeometryArrayID_Tangent | FBGeometryArrayID.kFBGeometryArrayID_Binormal \
84 gMat1.Diffuse =
FBColor(0, 1, 0)
87 gMat2.Diffuse =
FBColor(1, 0, 0)
90 gMat3.Diffuse =
FBColor(0, 0, 1)
96 gCgFxSrcFile = os.path.abspath(os.path.join(
FBSystem().ApplicationPath,
"../config/Scripts/Samples/Geometry/DiffuseUVNormalTangentBinormal.cgfx"))
99 gNumOfInstance = len(gArrayIds)
100 for lIndex
in range(0, gNumOfInstance):
105 lModel.Geometry = CreateMultiPatchMesh(gArrayIds[lIndex])
108 lModel.SetVector(
FBVector3d( (lIndex * 2.0 - gNumOfInstance) * 55, 50, 50 ) )
111 lModel.ConnectSrc(gMat1)
112 lModel.ConnectSrc(gMat2)
113 lModel.ConnectSrc(gMat3)
116 lModel.ShadingMode = FBModelShadingMode.kFBModelShadingFlat
119 lCgFxShader = gShaderMgr.CreateShader(
"CgFxShader")
121 lProp = lCgFxShader.PropertyList.Find(
"CgFxPath")
122 lProp.SetString(gCgFxSrcFile)
124 lProp = lCgFxShader.PropertyList.Find(
"Diffuse/UV/Normal/Tangent/Binormal")
125 lProp.SetString( str(lIndex) +
".5")
127 lModel.ConnectSrc(lCgFxShader)
130 lModel.Visible =
True