上一篇 | 下一篇

浅谈virtools和shockwave 3D

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

1. 先谈谈他们的各自优缺点奥古多媒体upHBLnM
奥古多媒体*u#fue:_ T#k5^
ShockWave3D优点是编程比较灵活,如果你有Lingo的基础,所作的3D物体要求的面数在2万个以下,我感觉ShockWave是个不错的选择.至于说他的缺点,就是,引擎太差,支持的面数太少,对纹理的支持也不太好.另外MM公司对它的更新太慢了.
%r|+^^A~ 参考帖子:http://www.aougu.net/bbs/index.php?...:flat&tid=16206
K1P` `~ W(k
']'pP0Ybh"}5yQ\X 奥古多媒体fH? \%Ivvg
Virtools优点有很多,比如提供了大量的BB使用,细心的用户会发现这些BB完全可以组成一个强大的游戏开发引擎.除了有大量的BB可以使用外,VT还提供了他的脚本语言VSL,这对喜欢写代码的朋友来说是一件好事情,比如我们要用一个BB来完成一个求解一元二次方程:你可以用以下几行可以搞定:奥古多媒体 c2D2o z/X1j"e|
void main()奥古多媒体$hxKEMoh%eW
{奥古多媒体b%ey6C1a@N|
if (!a)
.[\:FJUS(O9l;] return;奥古多媒体Y Fn7YsK
奥古多媒体K K[tOM9x
float delta = pow(b, 2)-4*a*c;奥古多媒体9y4Z4}_:b
奥古多媒体@t(k$Jlk&WGd^
if (delta >= 0)奥古多媒体DdwzY
{奥古多媒体^ ZD4q\6U7l&Xm
float sqrtDelta = sqrt(delta);
3oo4G"V!vJ:`F 奥古多媒体wCw m.aa%f@l
x1 = (-b+sqrtDelta)/2*a;奥古多媒体-W }9qO3@'HJAo
x2 = (-b-sqrtDelta)/2*a;奥古多媒体 qE5Ve-Qb
}奥古多媒体 Ve&dj7c!A
}
4d U7KAa 对有C++基础的朋友来说,入门VT的VSL简直太容易了,因为它的语法和C几乎是一模一样.此外Vritools的Shader是很强的( 完全支持DirectX 9.0 High-Level Shader Language (HLSL) 语言),Physics pack对3D游戏的开发都很有帮助.Virtools的开放性很好,提供给用户的SDK可以扩展VT的功能.
C I-i%JM~K|
7VU{)ydky ^ 2. virtools 对硬件设备的支持
1e0WiS9^ 奥古多媒体~0KQn;H2H]
Virtools对对虚拟软件所需的硬件设备支持不错,不过要用到SDK开发工具包.奥古多媒体1q"GZN.w,RH
奥古多媒体 oX Z/\g E2\U+M P
如果深入研究Virtools,要用C的基础,最好掌握DirectX(它会帮助你弄清楚许多概念).因为很多东西Virtools都为我们封装好了,我们可以不知道坐标变换,顶点缓冲区,象素渲染等概念,也可以搞出象模象样的东西来.但封装好了对有些想知道所以然的用户来说.又不是件好事情,因为你想知道一些东西它没有呈现给你.奥古多媒体K{6Am/H7T9Ipb8t
奥古多媒体%|3Tud5h~0nZ$|j`8Z
比如,在Virtools中用鼠标拖动来实现物体的旋转,缩放和平移,我们用"Mouse Camera Orbit"BB很容易实现,实际上这个BB封装了太多的东西,在DirectX3D中要实现这个功能要用到一些函数,奥古多媒体){ E6EDp

FV@C"CBO //MouseMessages CallBack奥古多媒体D!m1u'?WM
LRESULT HandleMouseMessages( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
0P*YcEe //Axis to axis quaternion double angle (no normalization)奥古多媒体 I%|c:X!yL
inline D3DXQUATERNION* WINAPI D3DXQuaternionAxisToAxis奥古多媒体!rv(r/FLJO {[
( D3DXQUATERNION *pOut, const D3DXVECTOR3 *pvFrom, const D3DXVECTOR3 *pvTo);
.uZ&tc.KO0[$C inline D3DXQUATERNION* WINAPI D3DXQuaternionUnitAxisToUnitAxis2奥古多媒体YLS;l"X3?
( D3DXQUATERNION *pOut, const D3DXVECTOR3 *pvFrom, const D3DXVECTOR3 *pvTo);
(v_ M T6` //Normalize奥古多媒体4F,Cs5h Yv%n
D3DXVECTOR3* WINAPI D3DXVec3Normalize( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV );
D8R B)Y_4pj //initialize 4D Matrix
Y![']N'}9cX ?T D3DXINLINE D3DXMATRIX* D3DXMatrixIdentity( D3DXMATRIX *pOut );奥古多媒体LX-iBY(`tv
// Build a matrix from a quaternion
w+x,c)S?.rup D3DXMATRIX* WINAPI D3DXMatrixRotationQuaternion( D3DXMATRIX *pOut, CONST D3DXQUATERNION *pQ);奥古多媒体l/M*n$o cV CX
....
Y f"P;k)@2h&gK 奥古多媒体r4z/`l3{8K m.I
如果这些代码你搞懂了,那对于你理解3D中经常用到的一些概念简直太又帮助了 当然你需要一些理论知识

字号: | 推荐给好友

 

评分:0

我来说两句

seccode


音乐
落叶 画心 放生 天亮了 牡丹江 那滋味 擦肩而过 怀念过去 北京欢迎你 突然好想你 吻的太逼真 说好的幸福呢 坐上火车去拉萨 如果爱能早些说出来
愚爱 心碎 稻香 带我走 醉赤壁 魔杰座 我还想她 为你而活 一定要爱你 等爱的玫瑰 原谅我一次 越单纯越幸福 最后一次的温柔 给我一首歌的时间
白狐 光荣 火花 下雨天 小酒窝 樱花草 为你写诗 无可取代 无情的温柔 寂寞才说爱 忘不掉的伤 爱上你是个错 陪你一起看草原 地球人都知道我爱你
城府 假如 花海 兰亭序 爱太痛 舍不得 你若成风 女人如烟 外滩十八号 我们的纪念 摇滚怎么了 和寂寞说分手 爱上你是我的错 爱情里没有谁对谁错