场景数据
Simplygon python API
提供了类spScene
来表示一个场景,一个场景通常包含材质、贴图、骨骼以及网格模型。一个场景默认包含一个场景根节点spSceneNode
,一张材质表spMaterialTable
,一张纹理表spTextureTable
,一张骨骼表spSceneBoneTable
和一个选择集表spSelectionSetTable
。如下图:
场景类spScene
可使用如下方法来创建一个场景类spScene
:
def CreateScene(sg : Simplygon.ISimplygon) -> Simplygon.spScene:
sgScene = sg.CreateScene()
场景类spScene
提供了通过路径来获取场景中的节点spSceneNode
的方法:
def GetNodeFromPath(self, path: str) -> spSceneNode:
pass
场景节点类spSceneNode
提供了GetPath方法来获取节点的路径。
场景类spScene
还提供了SaveToFile
方法将场景保存成二进制文件:
def SaveToFile(self, path: str) -> bool:
pass
同时提供方法LoadFromFile
来从之前保存好的二进制文件中加载场景:
def LoadFromFile(self, path: str) -> bool:
pass
场景节点类spSceneNode
Simplygon python API
提供基类 spSceneNode
来表示场景中的一个节点,可通过如下方法来创建一个场景节点类spSceneNode
:
class ISimplygon(object):
def CreateSceneNode(self) -> Simplygon.spSceneNode:
return _Simplygon.ISimplygon_CreateSceneNode(self)
每个场景节点对象都可以通过名称来从场景对象访问,场景节点对象提供用户如下方法来操作其子节点:
class spSceneNode(spObject):
def GetChildCount(self):
pass
def GetChild(self, index):
pass
def FindNamedChild(self, name):
pass
def AddChild(self, child):
pass
def RemoveChild(self, child):
pass
def RemoveChildren(self):
pass
def HasChild(self, child):
pass
场景节点同样提供了GetPath方法来获取该节点在场景中的路径,每个场景节点保存了其相对父节点的相对变换,这个变换矩阵可通过如下方法获取:
class spSceneNode(spObject):
def GetRelativeTransform(self):
pass
场景节点类也提供了方法来获取其在场景中的绝对变换矩阵:
class spSceneNode(spObject):
def EvaluateDefaultGlobalTransformation(self, global_transform):
pass
上图中的RootNode
是一个场景节点类对象,当创建场景对象时会自动创建场景根节点对象。任何场景节点对象必须通过放置在根节点对象的下方层次结构中来添加到场景中。
场景模型类spSceneMesh
Simplygon api提供spSceneMesh
代表场景中的模型节点,spSceneMesh
继承自场景节点类spSceneNode
。spSceneMesh
可以通过调用Simplygon的api接口
class ISimplygon(object):
def CreateSceneMesh(self) ->Simplygon.spSceneMesh:
pass
创建得到。要为spSceneMesh
设置几何数据,则可通过SetGeometry方法来设置。
class spSceneMesh(spSceneNode):
def SetGeometry(self, geometryData : Simplygon.IGeometrydata):
pass
材质表IMaterialTable
Simplygon场景spScene
通过维护材质表IMaterialTable
来维护场景中的材质,通过下面的方法可以获得该场景中的材质表:
class spScene:
def GetMaterialTable(self) -> Simplygon.IMaterialTable:
pass
任何为场景创建的材质都必须添加到材质表中,通过使用
class spMaterialTable:
def AddMaterial(self, material : Simplygon.IMaterial) -> int:
pass
上述AddMaterial
方法来将材质添加到材质表中,该函数会返回一个唯一的材质id,它被用于给几何数据IGeometryData
设置材质,注意:Simplygon场景中的模型的每个三角形面片都需要指定一个对应的材质id。
贴图表ITextureTable
Simplygon场景spScene
通过维护贴图表ITextureTable
来维护场景中的纹理贴图,它被用户添加或缓存材质着色器网络需要用到的纹理贴图。可通过场景spScene
的GetTextureTable方法来获取场景中的纹理表:
class spScene:
def GetTextureTable(self) -> Simplygon.ITextureTable:
pass
要往纹理表中添加贴图,可以通过贴图表ITextureTable
的AddTexture
方法:
class spTextureTable:
def AddTexture(self, texture :Simplygon.ITexture):
pass