Simplest Method of Using Particles

This page describes the content of ParticleDemo.

Creating an instance from a resource

This demo loads a resource and creates an instance from ResModelArray and ResEmitterArray. At this time, the SceneObject (specifically, the ParticleModel or ParticleEmitter) created by SceneBuilder::CreateObject is stored for reference resolution purposes.

Resolving the node hierarchical structure

The reference structure of nodes is resolved using SceneHelper::ResolveReference.

Initial setup of particle-related nodes

The following initial setup is performed by SetupParticleObject.

Resolving references

Because references to a ParticleSet from a ParticleEmitter and references to a ParticleSet from a ResParticleChildUpdater are not resolved, they are resolved here. References are resolved within an array given as an argument. Within this scope, there is no problem as long as names do not conflict. The array is passed as an argument in order to explicitly limit the scope of references. This is useful when creating mutliple instances from a single resource.

Initializing random numbers

The random number type is set for each ParticleEmitter and ParticleSet based on the random number for ParticleSceneContext.

Adding to the scene tree

After references have been resolved for the SceneNode, it is added to the scene tree. 3D models (SkeletalModel) and particles can be mixed together in the scene tree. Configure the tree according the your application design.

The description up to here is in preparation for creating objects. The description from here on regards processing performed for each frame.

Updating gfx

Processing equivalent to that performed by nw::demo::SceneSystem::UpdateScene is executed. Nodes are updated. If necessary, you can process all gfx animations such as material animations.

Updating particles

Execute nw::gfx::ParticleSceneUpdater::UpdateNode. Here, particles are updated, and animation for emitter emission and particles is performed. ParticleContext, passed as an argument, is only for maintaining memory used temporarily, so just one is enough for the system.
Because ParticleSceneUpdater is also a class that includes only processing without saving status, it can be used.

Rendering

Execute normal gfx rendering. There is no specific processing for particles at the application level.


CONFIDENTIAL