Size: 635
Comment:
|
Size: 1051
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 3: | Line 3: |
树型结构 Render -> NodePath -> PandaNode(Geom) [GeomVertexData, GeomPrimitive] GeomVertexData 保存顶点数据, GeomPrimitive 保存顶点的index |
树型结构 * Render -> NodePath -> PandaNode(Geom)[GeomVertexData, GeomPrimitive] * GeomVertexData 保存顶点数据, GeomPrimitive 保存顶点的index |
Line 10: | Line 8: |
render(3d) X右,Y前,Z上 render2d 坐标左下角(-1,0,-1)到右上角(1,0,1) |
* render(3d) X右,Y前,Z上 * render2d 坐标左下角(-1,0,-1)到右上角(1,0,1) |
Line 15: | Line 12: |
NodePath.setPos(X,Y,Z) #位移 | * 位移 NodePath.setPos(X,Y,Z) #位移 * 旋转 NodePath.setHpr(H,P,R) * 旋转方向 * Heading: 绕Y轴转 * Pitch: 绕X轴转 * Roll: 绕Z轴转 * 旋转的例子: attachment:hprtest.py 使用simples/tutorial1中的model * 缩放 NodePath.setScale(uniform) # |
Line 17: | Line 21: |
NodePath.setHpr(H,P,R) #旋转 NodePath.setScale(uniform) #缩放 * 旋转方向 Heading: XZ平面逆时针转 Pitch: YZ平面 Roll: 旋转的例子: attachment:hpr.py 使用simples/tutorial1中的model |
== 文件格式 == === EGG === ==== 创建EGG === * EggData() * .addChild * EggPolygon() * .addVertex * .recomputePolygonNormal * EggVertex() * EggVertexPool('') * .addVertex * .loadEggData() |
Line 33: | Line 36: |
= 地形 = == 高度图算法 == === Diamond-Square Algorithm == = 碰撞 = == 基础 == * .setCollideMask * .setIntoCollideMask * .setFromCollideMask |
基础
组成结构
- 树型结构
Render -> NodePath -> PandaNode(Geom)[GeomVertexData, GeomPrimitive]
GeomVertexData 保存顶点数据, GeomPrimitive 保存顶点的index
坐标
- render(3d) X右,Y前,Z上
- render2d 坐标左下角(-1,0,-1)到右上角(1,0,1)
移动、形变
位移 NodePath.setPos(X,Y,Z) #位移
旋转 NodePath.setHpr(H,P,R)
- 旋转方向
- Heading: 绕Y轴转
- Pitch: 绕X轴转
- Roll: 绕Z轴转
- 旋转的例子: attachment:hprtest.py 使用simples/tutorial1中的model
- 旋转方向
缩放 NodePath.setScale(uniform) #
文件格式
EGG
==== 创建EGG ===
EggData()
- .addChild
- .addVertex
- .recomputePolygonNormal
EggVertexPool()
- .addVertex
- .loadEggData()
镜头
- base.camera
地形
高度图算法
=== Diamond-Square Algorithm ==
碰撞
基础
- .setCollideMask
- .setIntoCollideMask
- .setFromCollideMask