3DSTATE for Visual basic.Net开发(十二)

来源:互联网 发布:赋码软件 编辑:程序博客网 时间:2024/06/11 10:00

 3DSTATEfor Visual basic.Net开发

三峡大学土木水电学院3S实验室 肖泽云

注:转载请说明来源处!

十、Editor Mode编辑模式

在引擎导入世界时,有两种模式,一种就是Viewer Mode,另外一种就是Editor Mode。这两种模式是有区别的,选用何种模式,主要根据你的程序的需要。
在下列情况下,要用Viewer Mode这种模式:
1、要用到自动运动,如对象跟踪、沿轨迹移动等;
2、运动的对象相对这个场景来说比较少,而且这些对象都是动态的(在后面我们介绍什么是动态?)。如果大部分都是这样的动态的对象,用编辑模式比用户模式要快的多。
3、在运行的时候不需要创建新的对象,即不需要更改wld世界文件;
4、需要用到三维动画模型
用户模式的使用:
Res = STATE_engine_load_world("Object2.wld", Path & "/", _
         Path & "/bitmaps", USER_DEFINED_BEHAVIOR)
在下列情况下,要用Editor Mode这种模式:
1、需要编写、更改wld世界文件;
2、在程序运行的时候需要创建新的对象;
3、需要重新设置或修改对象;
4、如果场景比较大,你可以通过只创建可是的某一部分来达到计算机能流畅运行的目的。
编辑模式的使用:
Result = STATE_engine_load_world("hello.wld", Path & "/../worlds", Path & "/../worlds/bitmaps", EDITOR_MODE)

1、组
组是由一系列面构成的。例如一个车的对象,由于车在运动的过程中轮子在宣政院,可以将所有轮子设为一个组,将剩下的其他设为一个组,这样这个车的对象就由两个组构成。
2、添加世界场景
添加场景只能在Editor Mode下进行,采用函数STATE_engine_add_world,如下:
Dim path AsString = "C:/VBNet 3D Developer Studio 6.0 (Student Package)/Worlds"
Dim newworldpos(2) AsDouble
newworldpos(0) = 0 : newworldpos(1) = 0 : newworldpos(2) = 0
STATE_engine_add_world("newcube.wld", path & "/", _
path & "/bitmaps", newworldpos)
3、将二维点转换为三维
这个主要用于鼠标事件,采用函数
STATE_engine_2D_point_to_3D(ByVal x AsInteger, ByVal y AsInteger, ByVal result() AsDouble, ByRef selected_object_handle As UIntPtr , ByRef selected_polygon_handle As UIntPtr ) AsInteger
4、保存世界文件
用函数STATE_engine_save( File_Name, group_to_save, save_flags),如:
STATE_engine_save("C:/www.wld", 0, SAVE_DEFAULT)
其中File name为文件保存的路径及文件名;group to save为保存的组,若全部保存,则用0;save flags为保存标志,其参数为:
SAVE_DEFAULT
SAVE_ONLY_WHATS_NEEDED
SAVE_FLAT_BITMAP_PATH
SAVE_BITMAP_AS_JPG
SAVE_BITMAP_AS_BMP
SAVE_BITMAP_AS_JBM
SAVE_IN_MULTIPLE_FILES
SAVE_ONLY_MODELS
SAVE_RELEASE
SAVE_BITMAP_OPTIMIZED
SAVE_WITHOUT_GROUPS
SAVE_WITH_BSP_TREE_INFORMATION