1
2
3
4
5
6
7
8
9
10
11from pyfbsdk import *
12import os
13
14def CreateMultiPatchMesh(pArrayIds):
15
17
18
19 lMesh.GeometryBegin()
20
21
22 lMesh.VertexArrayInit(5, False, pArrayIds)
23
24
25 lPosList = [0, 100, 0, 100,100, 0, 100, 0, 0, 0, 0, 0, 50, 150, 0]
26 lMesh.SetPositionsArray(lPosList)
27
28
29 lUVList = [0, 1, 1, 1, 1, 0, 0, 0, 0.5, 0]
30 lMesh.SetUVSetDirectArray(lUVList)
31
32
33 lNormalList = [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1]
34 lMesh.SetNormalsDirectArray(lNormalList)
35
36 if (pArrayIds & FBGeometryArrayID.kFBGeometryArrayID_Binormal):
37
38 lBinormalList = [0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0]
39 lMesh.SetBinormalsDirectArray(lBinormalList)
40
41 if (pArrayIds & FBGeometryArrayID.kFBGeometryArrayID_Tangent):
42
43 lTangentList = [1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0]
44 lMesh.SetTangentsDirectArray(lTangentList)
45
46 if (pArrayIds & FBGeometryArrayID.kFBGeometryArrayID_Color):
47
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)
50
51
52 lTriStrip = [0, 1, 3]
53 lMesh.TriangleStripAdd(3, lTriStrip, 0)
54
55
56 lTriList = [1, 3, 2]
57 lMesh.TriangleListAdd(3, lTriList, 1)
58
59
60 lPolygonList = [0, 1, 4]
61 lMesh.PolygonListAdd(3, 3, lPolygonList, 2)
62
63
64
65
66
67
68 lMesh.GeometryEnd()
69
70 return lMesh
71
72
73gArrayIds = \
74 [ \
75 0, \
76 FBGeometryArrayID.kFBGeometryArrayID_Color, \
77 FBGeometryArrayID.kFBGeometryArrayID_Tangent, \
78 FBGeometryArrayID.kFBGeometryArrayID_Binormal, \
79 FBGeometryArrayID.kFBGeometryArrayID_Tangent | FBGeometryArrayID.kFBGeometryArrayID_Binormal \
80 ]
81
82
85
88
91
92
94
95
96gCgFxSrcFile = os.path.abspath(os.path.join(
FBSystem().ApplicationPath,
"../config/Scripts/Samples/Geometry/DiffuseUVNormalTangentBinormal.cgfx"))
97
98
99gNumOfInstance = len(gArrayIds)
100for lIndex in range(0, gNumOfInstance):
101
103
104
105 lModel.Geometry = CreateMultiPatchMesh(gArrayIds[lIndex])
106
107
108 lModel.SetVector( FBVector3d( (lIndex * 2.0 - gNumOfInstance) * 55, 50, 50 ) )
109
110 if (lIndex == 0):
111 lModel.ConnectSrc(gMat1)
112 lModel.ConnectSrc(gMat2)
113 lModel.ConnectSrc(gMat3)
114
115 elif (lIndex == 1):
116 lModel.ShadingMode = FBModelShadingMode.kFBModelShadingFlat
117
118 else:
119 lCgFxShader = gShaderMgr.CreateShader("CgFxShader")
120
121 lProp = lCgFxShader.PropertyList.Find("CgFxPath")
122 lProp.SetString(gCgFxSrcFile)
123
124 lProp = lCgFxShader.PropertyList.Find("Diffuse/UV/Normal/Tangent/Binormal")
125 lProp.SetString(
str(lIndex) +
".5")
126
127 lModel.ConnectSrc(lCgFxShader)
128
129
130 lModel.Visible = True
131 lModel.Show = True
132
Color vector.
Definition: pyfbsdk_generated.h:4470
Material class.
Definition: pyfbsdk_generated.h:10458
Mesh class.
Definition: pyfbsdk_generated.h:10849
Cube model class.
Definition: pyfbsdk_generated.h:11337
Shader manager.
Definition: pyfbsdk_generated.h:17240
Provides access to the underlying system, and the MotionBuilder scene.
Definition: pyfbsdk_generated.h:18771
Python built-in string class.
Definition: pyfbsdk.h:77