3DSTATEfor Visual basic.Net开发
注:转载请说明来源处!
七、Animated Models: MD2 and Anim3D运动的模型
绝大部分的模型都是以*.wld和*.state这两种格式保存,但是带有运动的模型则是以*.md2和*.anim3d两种文件类型保存。
1、导入动画模型
利用函数_3DSTATE.STATE_object_create_from_file导入动画模型。如下:
Dim Animodel AsString = "C:/VBNet 3D Developer Studio 6.0 (Student Package)/Worlds/Models/player.md2"
_3DSTATE.STATE_object_create_from_file(Animodel)
2、为模型导入贴图
在动如动画模型的时候并没有导入贴图,所以还需要导入贴图并赋予动画模型,采用函数_3DSTATE.STATE_object_create_from_file和_3DSTATE.STATE_object_set_bitmap。如下:
Dim Animodelpath AsString = "C:/VBNet 3D Developer Studio 6.0 (Student Package)/Worlds/Models/player.md2"
Dim AniModel As UIntPtr = _3DSTATE.STATE_object_create_from_file(Animodelpath)
Dim ModelTexeture As UIntPtr = _3DSTATE.STATE_bitmap_load("C:/VBNet 3D Developer Studio 6.0 (Student Package)/Worlds/Models/skin.bmp", 0)
_3DSTATE.STATE_object_set_bitmap(AniModel, ModelTexeture)
3、三维动画及3D序列
每个动画里面都包含有许多3D序列,如"Run", "Attack", "Death"等。如下:
Dim Animodelpath AsString = "C:/VBNet 3D Developer Studio 6.0 (Student Package)/Worlds/Models/player.md2"
Dim AniModel As UIntPtr = _3DSTATE.STATE_object_create_from_file(Animodelpath)
Dim ModelTexeture As UIntPtr = _3DSTATE.STATE_bitmap_load("C:/VBNet 3D Developer Studio 6.0 (Student Package)/Worlds/Models/skin.bmp", 0)
_3DSTATE.STATE_object_set_bitmap(AniModel, ModelTexeture)
Dim Animation3D As UIntPtr
Animation3D = STATE_object_get_3D_animation(AniModel)
Dim AnimationWalk As UIntPtr = _3DSTATE.STATE_3D_sequence_get_using_name(Animation3D, "run")
STATE_object_set_3D_sequence(AniModel, AnimationWalk, 200)
其中,先用Animation3D = STATE_object_get_3D_animation(AniModel)获取3D动画的Handle,然后获取3D序列Dim AnimationWalk As UIntPtr = _3DSTATE.STATE_3D_sequence_get_using_name(Animation3D, "run"),最后在调用3D序列的时候采用STATE_object_set_3D_sequence(AniModel, AnimationWalk, 200)即可。