Вам заказали разработку инновационной 3d game на Flash? Требования более, чем высокие, а сроки поджимают? Нет времени отладить собственный 3D движок, и встала проблема выбора наиболее подходящего из уже существующих, предлагающим самый широкий инструментарий? Как узнать, какой из стандартных 3D движков лучше всего подходит для данного проекта?
В своем докладе Михаил даст ответ на эти и многие другие вопросы. Он остановится на движках Away3D и Flare3D с Alternaiva3D в качестве почетного гостя конкурса. Будут рассмотрены важнейшие достоинства и недостатки обсуждаемых движков, чтобы сориентировать разработчиков в выборе подходящих инструментов и обеспечить успех выпускаемым 3D продуктам.
3. •
Ivanov Michael,31,Israel.
•
Lead Programmer R&D,Neurotech Solutions LTD and Geek.
•
The Author of ”Away3D 3.6 Cookbook” by Packt Publishing.
•
Spare Time:Stage3D,Unity,UnrealEngine,OpenGL.
•
Visit my tech blog:http://blog.alladvanced.net
8. 3D Engines.
ü
Alternativa3D-free,binary distribution.
ü
Flare3D-commercial,binary distribution.
ü
Away3D-free,open source.
ü
Yogurt3D-free,open source.
ü
Noob3D-commercial,binary distribution.
ü
Proscenium-free,open source by Adobe.
ü
Minko-free,open source.
ü
ND3D-free,open source.
ü
And some more…
9. 2D Engines
ü
ND2D-free,open source.
ü
Starling Framework-free , open source.
ü
M2D(Discontinued?)-free , open source.
10. Particle Engines
ü
FLINT Particles-robust particle engine .Free, open source.
ü
ND2D –basic particles system.Free,open source.
ü
Starling-basic particles system.Free,open source.
Flint demo
13. Each one wins or looses in one or more of
these categories:
Каждый из них проигрывает в одной или более
следующих категориях:
ü
Performance.(Производительность.)
ü
Features. (Функциональность)
ü
Learning Curve.(Сложность изучения)
ü
Productiveness.(Продуктивность)
ü
Customization.(Специальные настройки)
ü
Support. (Техническая поддержка)
ü
Costs.(Затраты)
18. Basic system modules in a typical 3D engine:
ü
External assets handling.
ü
Lightning system.
ü
Rendering system.
ü
Materials library & composing tools.
ü
Primitives library.
ü
Physics, AI, Particle engines.
ü
Network.
ü
GUI
19. External assets handling
Away3D Alternativa3D Flare3D
Geometry Formats
3DS Yes Yes No
Native AWD1,AWD2 A3D F3D
Collada No Yes Yes
Bones MD5.MD2 Collada F3D,Collada
Native Maya ,Blender 3Ds Max only 3Ds Max only
plugin
20. Lightning system
Away3D Alternativa3D Flare3D
Directional Yes Yes Yes
Point(Omni) Yes Yes Yes
Spot No Yes No
Ambient No Yes Yes
22. Geometry types
Away3D Alternativa3D Flare3D
Cube Yes Yes Yes
Sphere Yes Yes Yes
Plane Yes Yes Yes
Cone Yes No Yes
Cylinder Yes No Yes
Capsule Yes No No
Line Segments Yes Yes(via WireFrame) Yes (via Lines3D)
Sprite Yes Yes No
Animated Sprite Yes Yes No(via filter only)
23. Physics,AI,Particles
Away3D Alternativa3D Flare3D
Built-in Away Bullet (alchemy) Under dev Under dev
3td party JigLib JigLib JigLib
AI AwaySteer(OpenSteer) under No No
dev
Particles Native,FLINT FLINT,Native(under Native,FLINT
dev?)
25. Mastering a Flash 3D engine.
Осваиваем 3D движок.
ü
The APIs follow the same basic 3D engine paradigm.
ü
Experience with the previous versions helps a lot.
ü
Previous game development and Math experience
contribute to the learning process.
31. Code Modularity.
Компактный код .
Alternativa3D vs Flare3D Skin Animation set up code
samples
private function loadModel():void{ private function loadModel():void{
var loaderCollada:URLLoader = new URLLoader(); model =
loaderCollada.dataFormat = scene.addChildFromFile( "assets/spyAnim.f3d“,scene);
URLLoaderDataFormat.TEXT; scene.addEventListener( Scene3D.COMPLETE_EVENT,
loaderCollada.load(new completeEvent );
URLRequest("assets/SpyAnimCollada.DAE")); }
loaderCollada.addEventListener(Event.COMPLETE, private function completeEvent(e:Event):void
onColladaLoad); {
} scene.resume();
model.play();
private function onColladaLoad(e:Event):void {
}
var parser:ParserCollada = new ParserCollada();
parser.parse(XML((e.target as URLLoader).data),
"assets/");
var mesh:Skin = parser.getObjectByName("spy") as
Skin;
mesh.y =0;
container.addChild(mesh);
var animSwtich:AnimationSwitcher=new
AnimationSwitcher();
var animClip:AnimationClip=parser.animations[0];
var animAll:AnimationClip=animClip.slice(0,870/30);
animContr=new AnimationController();
animContr.root=animSwtich;
for each (var resource:Resource in
scene.getResources(true)) {
resource.upload(stage3D.context3D);
}
}
32. Away3D.
ü
Compact API ,but not like Flare3D.
ü
Prefab3D- Visual IDE V2 .still under development.
ü
Away3D 3x users benefit from smooth portability.
34. ü
Open Source is the winner!
ü
Flare3D loans engine’s source code for payment.
ü
Alternativa3D -?
Kinect demo
35. Away3D core adjustments example
Vector3D to screen fix:
Adding code to lens:
public function projectToScreenSpace(point3d:Vector3D,screenW:Number,screenH:Number):Point{
var p:Point=new Point();
var v:Vector3D=matrix.transformVector(point3d);
p.x=((v.x*screenW)/(2*v.w))+screenW*0.5;
p.y=(-(v.y*screenH)/(2*v.w))+screenH*0.5;
return p;
}
Adding code to Camera3D:
public function projectToScreen(point3d : Vector3D,screenW:Number,screenH:Number) : Point
{
return lens.projectToScreenSpace(inverseSceneTransform.transformVector(point3d),screenW,screenH);
}
Using:
var screenPoint:Point=_view.camera.projectToScreen(sp.position,_view.width,_view.height);
37. ü
Away3D has much larger community and learning
materials like books and tutorials , than others.
ü
Four books dedicated to Away3D development.
ü
Away3D and Flare3D-both supply professional
support for payment.