浅谈virtools和shockwave 3D
发表于2016-01-31
1、先谈谈他们的各自优缺点 ShockWave3D优点是编程比较灵活,如果你有Lingo的基础,所作的3D物体要求的面数在2万个以下,我感觉ShockWave是个不错的选择.至于说他的缺点,就是,引擎太差,支持的面数太少,对纹理的支持也不太好.另外MM公司对它的更新太慢了. 参考帖子:http://www.aougu.net/bbs/index.php?...:flat&tid=16206 Virtools优点有很多,比如提供了大量的BB使用,细心的用户会发现这些BB完全可以组成一个强大的游戏开发引擎.除了有大量的BB可以使用外,VT还提供了他的脚本语言VSL,这对喜欢写代码的朋友来说是一件好事情,比如我们要用一个BB来完成一个求解一元二次方程:你可以用以下几行可以搞定: void main() { if (!a) return; float delta = pow(b, 2)-4*a*c; if (delta >= 0) { float sqrtDelta = sqrt(delta); x1 = (-b+sqrtDelta)/2*a; x2 = (-b-sqrtDelta)/2*a; } } 对有C++基础的朋友来说,入门VT的VSL简直太容易了,因为它的语法和C几乎是一模一样.此外Vritools的Shader是很强的( 完全支持DirectX 9.0 High-Level Shader Language (HLSL) 语言),Physics pack对3D游戏的开发都很有帮助.Virtools的开放性很好,提供给用户的SDK可以扩展VT的功能. 2、virtools 对硬件设备的支持 Virtools对对虚拟软件所需的硬件设备支持不错,不过要用到SDK开发工具包. 如果深入研究Virtools,要用C的基础,最好掌握DirectX(它会帮助你弄清楚许多概念).因为很多东西Virtools都为我们封装好了,我们可以不知道坐标变换,顶点缓冲区,象素渲染等概念,也可以搞出象模象样的东西来.但封装好了对有些想知道所以然的用户来说.又不是件好事情,因为你想知道一些东西它没有呈现给你. 比如,在Virtools中用鼠标拖动来实现物体的旋转,缩放和平移,我们用"Mouse Camera Orbit"BB很容易实现,实际上这个BB封装了太多的东西,在DirectX3D中要实现这个功能要用到一些函数, //MouseMessages CallBack LRESULT HandleMouseMessages( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ); //Axis to axis quaternion double angle (no normalization) inline D3DXQUATERNION* WINAPI D3DXQuaternionAxisToAxis ( D3DXQUATERNION *pOut, const D3DXVECTOR3 *pvFrom, const D3DXVECTOR3 *pvTo); inline D3DXQUATERNION* WINAPI D3DXQuaternionUnitAxisToUnitAxis2 ( D3DXQUATERNION *pOut, const D3DXVECTOR3 *pvFrom, const D3DXVECTOR3 *pvTo); //Normalize D3DXVECTOR3* WINAPI D3DXVec3Normalize( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV ); //initialize 4D Matrix D3DXINLINE D3DXMATRIX* D3DXMatrixIdentity( D3DXMATRIX *pOut ); // Build a matrix from a quaternion D3DXMATRIX* WINAPI D3DXMatrixRotationQuaternion( D3DXMATRIX *pOut, CONST D3DXQUATERNION *pQ); .... 如果这些代码你搞懂了,那对于你理解3D中经常用到的一些概念简直太又帮助了 当然你需要一些理论知识。 |