SlideShare a Scribd company logo
1 of 29
WaveEngine Team
@waveengineteam
http://waveengine.net
WaveEngine Components
Component Based Game
Engine
Component types
Components
Drawables
Behaviors
Components 3D
Components Behavior Drawable
• Transform3D
• Model
• SkinnedModel
• MaterialsMap
• ParticleSystem3D
• Joint3D
• Collider3D
• Animation3D
• Spinner
• RigidBody3D
• ModelRenderer
• SkinedModelRenderer
• ParticleSystemRenderer3d
Entity
To draw a primitive cube
Transform3D
MaterialsMap
ModelRenderer
Model
To draw a primitive cube
Entity cube = new Entity(“mycube")
.AddComponent(new Transform3D())
.AddComponent(new MaterialsMap())
.AddComponent(Model.CreateCube())
.AddComponent(new ModelRenderer());
EntityManager.Add(cube);
Transfom3D
.AddComponent(new Transform3D()
{
Position = new Vector3(0, 10, 0), // Default: (0,0,0)
Rotation = new Vector3(0, (float)Math.PI, 0), //Default: (0,0,0)
Scale = new Vector3(3, 3, 3), // Default: (1,1,1)
})
MaterialsMap
• None
• BasicMaterial
• DualTextureMaterial
• EnviromentMapMaterial
• NormalMapping Material
• SkyboxMaterial
• ToonShadingMaterial
• RimLightMaterial
MaterialsMap - BasicMaterial
Entity cube = new Entity(“mycube")
.AddComponent(new Transform3D())
.AddComponent(new MaterialsMap(
new BasicMaterial("Context/mytexture.wpk"))
)
.AddComponent(Model.CreateCube())
.AddComponent(new ModelRenderer());
EntityManager.Add(cube);
MaterialsMap - BasicMaterial
Entity cube = new Entity(“mycube")
.AddComponent(new Transform3D())
.AddComponent(new MaterialsMap(
new NormalMappingMaterial(“difuse.wpk", "normal.wpk"))
)
.AddComponent(Model.CreateCube())
.AddComponent(new ModelRenderer());
EntityManager.Add(cube);
Model - Primitives
• Primitives
• Cube
• Cone
• Cylinder
• Pyramid
• Sphere
• Torus
• Capsule
• Plane
• Teapot
Model – From file
• Load from File .DAE, .FBX, .Obj, .3DS y .X
Model – From file
Entity car = new Entity(“myCar")
.AddComponent(new Transform3D())
.AddComponent(new MaterialsMap()
.AddComponent(new Model(“Content/Car.wpk”))
.AddComponent(new ModelRenderer());
EntityManager.Add(cube);
Animated Model – From file
• Load from File .DAE, .FBX y .X
Animated Model – From file
Entity player = new Entity(“myplayer")
.AddComponent(new Transform3D())
.AddComponent(new MaterialsMap()
.AddComponent(new SkinnedModel("Content/model.wpk"))
.AddComponent(new Animation3D("Content/animation.wpk"))
.AddComponent(new SkinnedModelRenderer());
EntityManager.Add(cube);
Collision detection
Collider3D
• BoxCollider
• SphereCollider
• CapsuleCollider
• MeshCollider
Collision detection
Entity cube = new Entity(“mycube")
.AddComponent(new Transform3D())
.AddComponent(new BoxCollider())
.AddComponent(new MaterialsMap())
.AddComponent(Model.CreateCube())
.AddComponent(new ModelRenderer());
EntityManager.Add(cube);
BoxCollider collider = cube.FindComponent<BoxCollider>();
collider.Intersects(...);
3D Particle System
3D Particle System
Entity smokeParticles = new Entity(“myParticles")
.AddComponent(new Transform3D())
.AddComponent(new ParticleSystem3D() { //Parameters })
.AddComponent(new MaterialsMap(
new BasicMaterial("Content/particleTexture.wpk“,
DefaultLayers.Alpha)))
.AddComponent(new ParticleSystemRenderer3D());
EntityManager.Add(smokeParticles);
3D Particle System
.AddComponent(new ParticleSystem3D()
{ //Parameters
NumParticles = 100,
EmitRate = 1500,
MinLife = TimeSpan.FromSeconds(1f), MaxLife = TimeSpan.FromSeconds(3f),
LocalVelocity = new Vector3(0f, 0f,0f),
RandomVelocity = new Vector3(3f, 2.5f,0f),
MinSize = 15, MaxSize = 40,
MinRotateSpeed = 0.03f, MaxRotateSpeed = -0.03f,
EndDeltaScale = 0f,
EmitterSize = new Vector2(30),
Gravity = new Vector2(0, 0.03f),
EmitterShape = ParticleSystem2D.Shape.FillCircle,
Emit = false,
})
3D Physic components
• Wave engine integrates the Bepu physic engine.
• Offers a component based interface.
3D Physic components
Entity cube = new Entity("myCube")
.AddComponent(new Transform3D())
.AddComponent(new BoxCollider())
.AddComponent(new RigidBody3D() { //Parameters})
.AddComponent(new MaterialsMap())
.AddComponent(Model.CreateCube())
.AddComponent(new ModelRenderer());
EntityManager.Add(cube);
3D Physic components
.AddComponent(new RigidBody3D()
{ //Parameters
EnableContinuousContact = true, // Default : false
Mass = 4f, // Default: 1f
IsKinematic = true, // Default: false
KineticFriction = 4f, // Default: 0.3f
StaticFriction = 4f, // Default: 0.6f
LinearVelocity = new Vector3(1, 0, 0), // Default (0,0,0)
AngularVelocity = Vector3.Zero, // Default (0,0,0)
Rotation = new Vector3(0, (float)Math.PI, 0), // Default (0,0,0)
Restitution = 4f, // Default: 0
})
3D Physic components
Joint3D
• BallSocketJoint
• FixedJoint
• HingeJoint
• LineSliderJoint
• MotorizedGrabSpring3D
• PlaneSliderJoint
• PrismaticJoint
• SwivelHingeJoint
• UniversalJoint
Cameras
Cameras
• FixedCamera
• ViewCamera
• FreeCamera
• ThirdPersonCamera
• PathCamera
Cameras
FreeCamera myCamera = new FreeCamera("mainCamera",
new Vector3(0, 5, 5),
Vector3.Zero);
EntityManager.Add(myCamera);
Lights
3D lights
• PointLight
• DirectionalLight
Lights
DirectionalLight skylight = new DirectionalLight("SkyLight",
new Vector3(1));
EntityManager.Add(skylight);
Thank you
WaveEngine Team
@waveengineteam
http://waveengine.net

More Related Content

What's hot

Appengine ja-night-sapporo#1 bt
Appengine ja-night-sapporo#1 btAppengine ja-night-sapporo#1 bt
Appengine ja-night-sapporo#1 bt
Shinichi Ogawa
 
Getting Started with Datatsax .Net Driver
Getting Started with Datatsax .Net DriverGetting Started with Datatsax .Net Driver
Getting Started with Datatsax .Net Driver
DataStax Academy
 

What's hot (20)

Appengine ja-night-sapporo#1 bt
Appengine ja-night-sapporo#1 btAppengine ja-night-sapporo#1 bt
Appengine ja-night-sapporo#1 bt
 
The Ring programming language version 1.4.1 book - Part 16 of 31
The Ring programming language version 1.4.1 book - Part 16 of 31The Ring programming language version 1.4.1 book - Part 16 of 31
The Ring programming language version 1.4.1 book - Part 16 of 31
 
Vielseitiges In-Memory Computing mit Apache Ignite und Kubernetes
Vielseitiges In-Memory Computing mit Apache Ignite und KubernetesVielseitiges In-Memory Computing mit Apache Ignite und Kubernetes
Vielseitiges In-Memory Computing mit Apache Ignite und Kubernetes
 
Functions
FunctionsFunctions
Functions
 
Getting Started with Datatsax .Net Driver
Getting Started with Datatsax .Net DriverGetting Started with Datatsax .Net Driver
Getting Started with Datatsax .Net Driver
 
The Ring programming language version 1.5.2 book - Part 28 of 181
The Ring programming language version 1.5.2 book - Part 28 of 181The Ring programming language version 1.5.2 book - Part 28 of 181
The Ring programming language version 1.5.2 book - Part 28 of 181
 
JCConf 2015 - 輕鬆學google的雲端開發 - Google App Engine入門(上)
JCConf 2015  - 輕鬆學google的雲端開發 - Google App Engine入門(上)JCConf 2015  - 輕鬆學google的雲端開發 - Google App Engine入門(上)
JCConf 2015 - 輕鬆學google的雲端開發 - Google App Engine入門(上)
 
The Ring programming language version 1.7 book - Part 32 of 196
The Ring programming language version 1.7 book - Part 32 of 196The Ring programming language version 1.7 book - Part 32 of 196
The Ring programming language version 1.7 book - Part 32 of 196
 
Taller evento TestingUY 2017 - API Testing utilizando Chakram
Taller evento TestingUY 2017 - API Testing utilizando ChakramTaller evento TestingUY 2017 - API Testing utilizando Chakram
Taller evento TestingUY 2017 - API Testing utilizando Chakram
 
Game dev 101 part 3
Game dev 101 part 3Game dev 101 part 3
Game dev 101 part 3
 
Fun Teaching MongoDB New Tricks
Fun Teaching MongoDB New TricksFun Teaching MongoDB New Tricks
Fun Teaching MongoDB New Tricks
 
The Ring programming language version 1.5.1 book - Part 27 of 180
The Ring programming language version 1.5.1 book - Part 27 of 180The Ring programming language version 1.5.1 book - Part 27 of 180
The Ring programming language version 1.5.1 book - Part 27 of 180
 
Game dev 101 part 2
Game dev 101   part 2Game dev 101   part 2
Game dev 101 part 2
 
Protocol Oriented JSON Parsing in Swift
Protocol Oriented JSON Parsing in SwiftProtocol Oriented JSON Parsing in Swift
Protocol Oriented JSON Parsing in Swift
 
Mongo db updatedocumentusecases
Mongo db updatedocumentusecasesMongo db updatedocumentusecases
Mongo db updatedocumentusecases
 
The Ring programming language version 1.5.3 book - Part 29 of 184
The Ring programming language version 1.5.3 book - Part 29 of 184The Ring programming language version 1.5.3 book - Part 29 of 184
The Ring programming language version 1.5.3 book - Part 29 of 184
 
MySQL flexible schema and JSON for Internet of Things
MySQL flexible schema and JSON for Internet of ThingsMySQL flexible schema and JSON for Internet of Things
MySQL flexible schema and JSON for Internet of Things
 
Rental
RentalRental
Rental
 
Entity System Architecture with Unity - Unite Europe 2015
Entity System Architecture with Unity - Unite Europe 2015Entity System Architecture with Unity - Unite Europe 2015
Entity System Architecture with Unity - Unite Europe 2015
 
Experienced Selenium Interview questions
Experienced Selenium Interview questionsExperienced Selenium Interview questions
Experienced Selenium Interview questions
 

Similar to WaveEngine 3D components

Deep dumpster diving 2010
Deep dumpster diving 2010Deep dumpster diving 2010
Deep dumpster diving 2010
RonnBlack
 

Similar to WaveEngine 3D components (20)

The Ring programming language version 1.8 book - Part 50 of 202
The Ring programming language version 1.8 book - Part 50 of 202The Ring programming language version 1.8 book - Part 50 of 202
The Ring programming language version 1.8 book - Part 50 of 202
 
The Ring programming language version 1.5 book - Part 8 of 31
The Ring programming language version 1.5 book - Part 8 of 31The Ring programming language version 1.5 book - Part 8 of 31
The Ring programming language version 1.5 book - Part 8 of 31
 
HTML5 Canvas (Wall Clock).pptx
HTML5 Canvas (Wall Clock).pptxHTML5 Canvas (Wall Clock).pptx
HTML5 Canvas (Wall Clock).pptx
 
Machine learning with py torch
Machine learning with py torchMachine learning with py torch
Machine learning with py torch
 
Viktor Tsykunov: Azure Machine Learning Service
Viktor Tsykunov: Azure Machine Learning ServiceViktor Tsykunov: Azure Machine Learning Service
Viktor Tsykunov: Azure Machine Learning Service
 
Java 8 monads
Java 8   monadsJava 8   monads
Java 8 monads
 
React new features and intro to Hooks
React new features and intro to HooksReact new features and intro to Hooks
React new features and intro to Hooks
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화
 
[232]TensorRT를 활용한 딥러닝 Inference 최적화
[232]TensorRT를 활용한 딥러닝 Inference 최적화[232]TensorRT를 활용한 딥러닝 Inference 최적화
[232]TensorRT를 활용한 딥러닝 Inference 최적화
 
User Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love StoryUser Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love Story
 
User Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love StoryUser Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love Story
 
The Ring programming language version 1.7 book - Part 48 of 196
The Ring programming language version 1.7 book - Part 48 of 196The Ring programming language version 1.7 book - Part 48 of 196
The Ring programming language version 1.7 book - Part 48 of 196
 
Parallel streams in java 8
Parallel streams in java 8Parallel streams in java 8
Parallel streams in java 8
 
Write Python for Speed
Write Python for SpeedWrite Python for Speed
Write Python for Speed
 
Deep dumpster diving 2010
Deep dumpster diving 2010Deep dumpster diving 2010
Deep dumpster diving 2010
 
GANS Project for Image idetification.pdf
GANS Project for Image idetification.pdfGANS Project for Image idetification.pdf
GANS Project for Image idetification.pdf
 
The Ring programming language version 1.5.3 book - Part 44 of 184
The Ring programming language version 1.5.3 book - Part 44 of 184The Ring programming language version 1.5.3 book - Part 44 of 184
The Ring programming language version 1.5.3 book - Part 44 of 184
 
The Ring programming language version 1.5.3 book - Part 54 of 184
The Ring programming language version 1.5.3 book - Part 54 of 184The Ring programming language version 1.5.3 book - Part 54 of 184
The Ring programming language version 1.5.3 book - Part 54 of 184
 
Chapter 2
Chapter 2Chapter 2
Chapter 2
 
Simple, fast, and scalable torch7 tutorial
Simple, fast, and scalable torch7 tutorialSimple, fast, and scalable torch7 tutorial
Simple, fast, and scalable torch7 tutorial
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Recently uploaded (20)

"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 

WaveEngine 3D components

  • 4. Components 3D Components Behavior Drawable • Transform3D • Model • SkinnedModel • MaterialsMap • ParticleSystem3D • Joint3D • Collider3D • Animation3D • Spinner • RigidBody3D • ModelRenderer • SkinedModelRenderer • ParticleSystemRenderer3d
  • 5. Entity To draw a primitive cube Transform3D MaterialsMap ModelRenderer Model
  • 6. To draw a primitive cube Entity cube = new Entity(“mycube") .AddComponent(new Transform3D()) .AddComponent(new MaterialsMap()) .AddComponent(Model.CreateCube()) .AddComponent(new ModelRenderer()); EntityManager.Add(cube);
  • 7. Transfom3D .AddComponent(new Transform3D() { Position = new Vector3(0, 10, 0), // Default: (0,0,0) Rotation = new Vector3(0, (float)Math.PI, 0), //Default: (0,0,0) Scale = new Vector3(3, 3, 3), // Default: (1,1,1) })
  • 8. MaterialsMap • None • BasicMaterial • DualTextureMaterial • EnviromentMapMaterial • NormalMapping Material • SkyboxMaterial • ToonShadingMaterial • RimLightMaterial
  • 9. MaterialsMap - BasicMaterial Entity cube = new Entity(“mycube") .AddComponent(new Transform3D()) .AddComponent(new MaterialsMap( new BasicMaterial("Context/mytexture.wpk")) ) .AddComponent(Model.CreateCube()) .AddComponent(new ModelRenderer()); EntityManager.Add(cube);
  • 10. MaterialsMap - BasicMaterial Entity cube = new Entity(“mycube") .AddComponent(new Transform3D()) .AddComponent(new MaterialsMap( new NormalMappingMaterial(“difuse.wpk", "normal.wpk")) ) .AddComponent(Model.CreateCube()) .AddComponent(new ModelRenderer()); EntityManager.Add(cube);
  • 11. Model - Primitives • Primitives • Cube • Cone • Cylinder • Pyramid • Sphere • Torus • Capsule • Plane • Teapot
  • 12. Model – From file • Load from File .DAE, .FBX, .Obj, .3DS y .X
  • 13. Model – From file Entity car = new Entity(“myCar") .AddComponent(new Transform3D()) .AddComponent(new MaterialsMap() .AddComponent(new Model(“Content/Car.wpk”)) .AddComponent(new ModelRenderer()); EntityManager.Add(cube);
  • 14. Animated Model – From file • Load from File .DAE, .FBX y .X
  • 15. Animated Model – From file Entity player = new Entity(“myplayer") .AddComponent(new Transform3D()) .AddComponent(new MaterialsMap() .AddComponent(new SkinnedModel("Content/model.wpk")) .AddComponent(new Animation3D("Content/animation.wpk")) .AddComponent(new SkinnedModelRenderer()); EntityManager.Add(cube);
  • 16. Collision detection Collider3D • BoxCollider • SphereCollider • CapsuleCollider • MeshCollider
  • 17. Collision detection Entity cube = new Entity(“mycube") .AddComponent(new Transform3D()) .AddComponent(new BoxCollider()) .AddComponent(new MaterialsMap()) .AddComponent(Model.CreateCube()) .AddComponent(new ModelRenderer()); EntityManager.Add(cube); BoxCollider collider = cube.FindComponent<BoxCollider>(); collider.Intersects(...);
  • 19. 3D Particle System Entity smokeParticles = new Entity(“myParticles") .AddComponent(new Transform3D()) .AddComponent(new ParticleSystem3D() { //Parameters }) .AddComponent(new MaterialsMap( new BasicMaterial("Content/particleTexture.wpk“, DefaultLayers.Alpha))) .AddComponent(new ParticleSystemRenderer3D()); EntityManager.Add(smokeParticles);
  • 20. 3D Particle System .AddComponent(new ParticleSystem3D() { //Parameters NumParticles = 100, EmitRate = 1500, MinLife = TimeSpan.FromSeconds(1f), MaxLife = TimeSpan.FromSeconds(3f), LocalVelocity = new Vector3(0f, 0f,0f), RandomVelocity = new Vector3(3f, 2.5f,0f), MinSize = 15, MaxSize = 40, MinRotateSpeed = 0.03f, MaxRotateSpeed = -0.03f, EndDeltaScale = 0f, EmitterSize = new Vector2(30), Gravity = new Vector2(0, 0.03f), EmitterShape = ParticleSystem2D.Shape.FillCircle, Emit = false, })
  • 21. 3D Physic components • Wave engine integrates the Bepu physic engine. • Offers a component based interface.
  • 22. 3D Physic components Entity cube = new Entity("myCube") .AddComponent(new Transform3D()) .AddComponent(new BoxCollider()) .AddComponent(new RigidBody3D() { //Parameters}) .AddComponent(new MaterialsMap()) .AddComponent(Model.CreateCube()) .AddComponent(new ModelRenderer()); EntityManager.Add(cube);
  • 23. 3D Physic components .AddComponent(new RigidBody3D() { //Parameters EnableContinuousContact = true, // Default : false Mass = 4f, // Default: 1f IsKinematic = true, // Default: false KineticFriction = 4f, // Default: 0.3f StaticFriction = 4f, // Default: 0.6f LinearVelocity = new Vector3(1, 0, 0), // Default (0,0,0) AngularVelocity = Vector3.Zero, // Default (0,0,0) Rotation = new Vector3(0, (float)Math.PI, 0), // Default (0,0,0) Restitution = 4f, // Default: 0 })
  • 24. 3D Physic components Joint3D • BallSocketJoint • FixedJoint • HingeJoint • LineSliderJoint • MotorizedGrabSpring3D • PlaneSliderJoint • PrismaticJoint • SwivelHingeJoint • UniversalJoint
  • 25. Cameras Cameras • FixedCamera • ViewCamera • FreeCamera • ThirdPersonCamera • PathCamera
  • 26. Cameras FreeCamera myCamera = new FreeCamera("mainCamera", new Vector3(0, 5, 5), Vector3.Zero); EntityManager.Add(myCamera);
  • 28. Lights DirectionalLight skylight = new DirectionalLight("SkyLight", new Vector3(1)); EntityManager.Add(skylight);