上一篇 | 下一篇

浅谈virtools和shockwave 3D

发布: 2007-1-25 07:58 | 作者: media | 来源: aougu | 查看: 1664次

1. 先谈谈他们的各自优缺点奥古多媒体8d4{5ZQSAGi8}v ~

`i8`n4K J ShockWave3D优点是编程比较灵活,如果你有Lingo的基础,所作的3D物体要求的面数在2万个以下,我感觉ShockWave是个不错的选择.至于说他的缺点,就是,引擎太差,支持的面数太少,对纹理的支持也不太好.另外MM公司对它的更新太慢了.
yM'HCR7i 参考帖子:http://www.aougu.net/bbs/index.php?...:flat&tid=16206奥古多媒体 }L&e+u5c d I

%N$[ TYa r&W T 奥古多媒体6y TX D)o9q {
Virtools优点有很多,比如提供了大量的BB使用,细心的用户会发现这些BB完全可以组成一个强大的游戏开发引擎.除了有大量的BB可以使用外,VT还提供了他的脚本语言VSL,这对喜欢写代码的朋友来说是一件好事情,比如我们要用一个BB来完成一个求解一元二次方程:你可以用以下几行可以搞定:
NGwE,L/ky void main()奥古多媒体#X^UY~9pJ|'z
{奥古多媒体 a!ft%Yo |D
if (!a)
@5t7c4Y"yK return;
]"qe4r*W
3v r!?| ]^ float delta = pow(b, 2)-4*a*c;
%a J U{"ah;X%w%F2h5O
C ?$bQ5xB7O.y if (delta >= 0)
i[/t9d~ {
O?-j'wf float sqrtDelta = sqrt(delta);奥古多媒体yG^9dA;FL/pB%rZ4c
奥古多媒体z8]zYp2c.N'US}e0Ep
x1 = (-b+sqrtDelta)/2*a;
a[0p5Nh ^|0QY0Z0`z x2 = (-b-sqrtDelta)/2*a;
O8XcNgNuu"f,@ }奥古多媒体O C l[8{i:](~uMb8u
}
~4_Un!M(m+c 对有C++基础的朋友来说,入门VT的VSL简直太容易了,因为它的语法和C几乎是一模一样.此外Vritools的Shader是很强的( 完全支持DirectX 9.0 High-Level Shader Language (HLSL) 语言),Physics pack对3D游戏的开发都很有帮助.Virtools的开放性很好,提供给用户的SDK可以扩展VT的功能.
,sPy\R5bd"~ 奥古多媒体1W&M T*XA1t/p
2. virtools 对硬件设备的支持
:q)e0eVx0j+]
X?Sn"u$ko&]D Virtools对对虚拟软件所需的硬件设备支持不错,不过要用到SDK开发工具包.
;[!M+f K y1B)`?(MS_
O(R8W.U"\jzd 如果深入研究Virtools,要用C的基础,最好掌握DirectX(它会帮助你弄清楚许多概念).因为很多东西Virtools都为我们封装好了,我们可以不知道坐标变换,顶点缓冲区,象素渲染等概念,也可以搞出象模象样的东西来.但封装好了对有些想知道所以然的用户来说.又不是件好事情,因为你想知道一些东西它没有呈现给你.奥古多媒体,r4L2}8m4W!q
奥古多媒体hg4r8DUz u
比如,在Virtools中用鼠标拖动来实现物体的旋转,缩放和平移,我们用"Mouse Camera Orbit"BB很容易实现,实际上这个BB封装了太多的东西,在DirectX3D中要实现这个功能要用到一些函数,奥古多媒体4b^p S*lG]
奥古多媒体 }mCWC8p8@#Y
//MouseMessages CallBack
nd:P+t'w4{#@2S LRESULT HandleMouseMessages( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
[ J] |L s0k!ITH L //Axis to axis quaternion double angle (no normalization)奥古多媒体KO,e;a3U%L ])mD
inline D3DXQUATERNION* WINAPI D3DXQuaternionAxisToAxis奥古多媒体cz-d9eL:n~k
( D3DXQUATERNION *pOut, const D3DXVECTOR3 *pvFrom, const D3DXVECTOR3 *pvTo);奥古多媒体3mJ4aCzlX
inline D3DXQUATERNION* WINAPI D3DXQuaternionUnitAxisToUnitAxis2奥古多媒体LAGPwh z:a"{
( D3DXQUATERNION *pOut, const D3DXVECTOR3 *pvFrom, const D3DXVECTOR3 *pvTo);奥古多媒体}6|Y.|$[$T9~
//Normalize
7l S1r+eI.D.}Oc+Sc(G9G D3DXVECTOR3* WINAPI D3DXVec3Normalize( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV );奥古多媒体&RS3Y2U(K
//initialize 4D Matrix奥古多媒体2~*f4`,GEq8W
D3DXINLINE D3DXMATRIX* D3DXMatrixIdentity( D3DXMATRIX *pOut );
yq%y\*Qg.w // Build a matrix from a quaternion
0w#l.l&l*L;rW1E D3DXMATRIX* WINAPI D3DXMatrixRotationQuaternion( D3DXMATRIX *pOut, CONST D3DXQUATERNION *pQ);
U:X[V)C?4C ....奥古多媒体 xf t4v |rg s%G

3Q8g9L2v+of!^d 如果这些代码你搞懂了,那对于你理解3D中经常用到的一些概念简直太又帮助了 当然你需要一些理论知识

字号: | 推荐给好友

 

评分:0

我来说两句

seccode