SunFlow场景文件的Object代码块
网格:
- 三角形网格 (Triangle Meshes)
- 句法:
点(Point)等同于节点(Vertex)
object {
shader default
type generic-mesh
name meshName
points X
x y z
…
triangles X
A B C /* 顶点索引,从0开始 */
…
normals none/vertex/facevarying
uvs none/vertex/facevarying
}
对于法线和UVS,如果使用vertex类型,网格的每个点都需要自己的法线或UV坐标,如:
...
points 3
x1 y1 z1
x2 y2 z2
x3 y3 z3
triangles 1
0 1 2
normals vertex
d1 e1 f1
d2 e2 f2
d3 e3 f3
uvs vertex
u1 v1
u2 v2
u3 v3
}
对于facevarying类型,要使用如下的格式:
...
points 3
x1 y1 z1
x2 y2 z2
x3 y3 z3
triangles 1
0 1 2
normals facevarying
d1 e1 f1 d2 e2 f2 d3 e3 f3
uvs facevarying
u1 v1 u2 v2 u3 v3
} - 变换:
是否需要围绕特定的法线旋转一个对象?可以在 shader / modifier 后面调用如下的句法:
transform {
rotate x y z d /* {x,y,z}是法线坐标,d是旋转角度 */
}
可以使用变换矩阵进行变换,如:
object {
shader default
transform col my4x4MatrixReadByColumn
type generic-mesh - 面阴影/修改器:(Face Shaders/Modifiers)
如果要对同一个网格对象的不同的面附加多个阴影或修改器,如下:
object {
在 face_shaders节,把阴影0(即阴影列表中的第一个阴影 -- shaderName0)赋给三角形列表中的第一个三角形,阴影1赋给第二个三角形,等等。
shaders 2
shaderName0
shaderName1
modifiers 2
bumpName0
"None"
type generic-mesh
name meshName
points 6
x1 y1 z1
x2 y2 z2
x3 y3 z3
x4 y4 z4
x5 y5 z5
x6 y6 z6
triangles 2
0 1 2
1 2 3
normals none
uvs facevarying
u1 v1 u2 v2 u3 v3
u4 v4 u5 v5 u6 v6
face_shaders
0
1
}
对于修改器来说是通理的,但对于具备纹理的修改器来说(bump/normal map),需要同时附加uvs坐标,另外,如果一个面没有修改器,只要在列表中使用"None"就可以了。 - Object Motion Blur 运动模糊效果,略
-
Bezier Patches 略
- 句法:
-
Quad Meshes 略。