summaryrefslogtreecommitdiff
path: root/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-particles.qdoc
blob: 6f1a2c584631ca251c5f3efa9ef85519172b93e8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
/****************************************************************************
**
** Copyright (C) 2021 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Design Studio.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/

/*!
    \page studio-3d-particles.html
    \previouspage studio-3d-loader-3d.html
    \nextpage studio-3d-particle-system.html
    \title Particles

    With a \e {particle system} you can use sprites, 3D models, or images to
    create effects that are hard to reproduce with conventional rendering
    techniques. This includes chaotic systems, natural phenomena, or processes
    caused by chemical reactions. For example, you can simulate fire, smoke,
    sparks, explosions, flowing water, fog, snow, stars, and galaxies.

    The \QDS particle system contains the following main types of components:

    \list
        \li \l {Particle System}
        \li \l {Logical Particles}
        \li \l {Particle Emitters}
        \li \l {Particle Affectors}
        \li \l {Particle Directions}
    \endlist

    Preset particle \l{Particle Components}{components},
    \l{Particle Templates}{templates}, and \l{Particle Effects}{effects} are
    available in \uicontrol Components > \uicontrol {QtQuick3D Particles3D}
    after you add the \uicontrol {QtQuick3D.Particles3D} module to
    your project, as instructed in \l{Adding and Removing Modules}.

    \image studio-3d-particles.png "3D Particles"

    \section1 Particle Components

    When you add an instance of the \uicontrol {Particle System} component to a
    scene, \QDS automatically adds instances of the \uicontrol {Sprite Particle},
    \uicontrol Emitter, and \uicontrol {Vector Direction} components for you.

    \image studio-3d-particle-system-navigator.png "Particle System in Navigator"

    The \uicontrol {Sprite Particle} is a visual \l{Textures}{2D texture}
    particle. To use \l{3D Models}{3D model} particles, add instances of the
    \uicontrol {Model Particle} component to the particle system. It is
    important to define the amount of particles to use in \uicontrol Properties
    > \uicontrol Particle > \uicontrol {Max amount}, so that the optimal buffer
    sizes get allocated. You can also specify the color and opacity of the
    particles, as well as the speed at which they fade in and out.

    The \uicontrol Emitter component emits the sprite or model particles.
    You can specify particle shape and the area where they are emitted. Use
    variation in particle size and rotation for more natural results. Further,
    define the life span and initial direction of speed of the emitted
    particles.

    Usually, affectors are used to make particle movement more interesting.
    For example, you could add an instance of the \uicontrol Gravity component
    to simulate falling objects, an instance of the \uicontrol Wander component
    to simulate flying objects that follow wavy curves, or an instance of the
    \uicontrol {Point Rotator} to simulate windy weather.

    The following table lists preset particle components.

    \table
    \header
        \li Icon
        \li Name
        \li Purpose
    \row
        \li \inlineimage icons/attractor-16px.png
        \li Attractor
        \li Attracts particles towards a specific point.
    \row
        \li \inlineimage icons/emit-burst-16px.png
        \li Emit Burst
        \li Generates declarative emitter bursts.
    \row
        \li \inlineimage icons/emitter-16px.png
        \li Emitter
        \li Emits logical particles.
    \row
        \li \inlineimage icons/gravity-16px.png
        \li Gravity
        \li Accelerates particles to a vector of the specified magnitude in the
            specified direction.
    \row
        \li \inlineimage icons/model-blend-particle-16px.png
        \li Model Blend Particle
        \li Blends a particle effect with an instance of a \uicontrol Model
            component.
    \row
        \li \inlineimage icons/model-particle-16px.png
        \li Model Particle
        \li Creates a particle that uses an instance of a \uicontrol Model
            component.
    \row
        \li \inlineimage icons/model-shape-16px.png
        \li Model Shape
        \li Provides 3D shapes from a model to emitters and affectors.
    \row
        \li \inlineimage icons/particle-shape-16px.png
        \li Particle Shape
        \li Provides 3D shapes to emitters and affectors.
    \row
        \li \inlineimage icons/particle-system-16px.png
        \li Particle System
        \li Creates a particle system that includes particle, emitter, and
            affector components.
    \row
        \li \inlineimage icons/point-rotator-16px.png
        \li Point Rotator
        \li Rotates particles around a pivot point.
    \row
        \li \inlineimage icons/sprite-particle-16px.png
        \li Sprite Particle
        \li Creates particles that use a 2D sprite texture.
    \row
        \li \inlineimage icons/sprite-sequence-16px.png
        \li Sprite Sequence
        \li Provides image sequence features for \uicontrol {Sprite Particle}
            component instances.
    \row
        \li \inlineimage icons/target-direction-16px.png
        \li Target Direction
        \li Specifies a direction towards the target position.
    \row
        \li \inlineimage icons/trail-emitter-16px.png
        \li Trail Emitter
        \li Emits logical particles from other particles.
    \row
        \li \inlineimage icons/vector-direction-16px.png
        \li Vector Direction
        \li Specifies a direction towards the target direction.
    \row
        \li \inlineimage icons/wander-16px.png
        \li Wander
        \li Applies random wave curves to particles.
    \endtable

    \section1 Particle Templates

    A particle template is a preset of particle components that you can use to
    create specific particle effects in a convenient way.

    The following table lists particle templates and their components.

    \table
    \header
      \li Template
      \li Components
    \row
      \li Animated Sprite
      \li
      Particle System
      \list
        \li Particle Emitter
          \list
            \li Sprite Particle
            \li Sprite Sequence
            \li Texture
          \endlist
        \li Vector Direction
       \endlist
    \row
      \li Attractor
      \li
      Particle System
      \list
        \li Particle Emitter
          \list
            \li Sprite Particle
            \li Vector Direction
          \endlist
        \li Particle Attractor
       \endlist
    \row
      \li Burst
      \li
      Particle System
      \list
        \li Particle Emitter
          \list
            \li Sprite Particle
            \li Vector Direction
            \li Emit Burst
          \endlist
       \endlist
    \row
      \li Model Blend
      \li
       Particle System
      \list
        \li Particle Emitter
          \list
            \li Node
            \li Model Blend Particle
            \li Particle Emitter
            \list
              \li Vector Direction
            \endlist
          \endlist
       \endlist
    \row
      \li Model Shape
      \li
      Particle System
      \list
        \li Particle Emitter
        \list
          \li Sprite Particle
          \list
            \li Vector Direction
          \endlist
        \endlist
        \li Particle Model Shape
      \endlist
    \row
      \li Particle Trail
      \li
      Particle System
      \list
        \li Trail Emitter
        \list
          \li Vector Direction
          \li Sprite Particle
        \endlist
        \li Particle Emitter
        \list
          \li Vector Direction
          \li Sprite Particle
        \endlist
      \endlist
    \row
      \li Sprite
      \li
      Particle System
      \list
        \li Sprite Emitter
        \list
          \li Sprite Particle
          \li Vector Direction
        \endlist
      \endlist
    \row
      \li Wander
      \li
      Particle System
      \list
        \li Sprite Emitter
        \list
          \li Sprite Particle
          \list
            \li Texture
          \endlist
        \li Wander
        \li Node
        \endlist
      \endlist
    \endtable

    \section1 Particle Effects

    A particle effect is a ready-made effect that you can use to create, for
    example, fire, rain, or mist in a convenient way.

    The following particle effects are available:

    \list
      \li Clouds
      \li Dust
      \li Exhaust
      \li Fire
      \li Heavy Rain
      \li Heavy Tire Spray
      \li Light Rain
      \li Light Tire Spray
      \li Rain Mist
      \li Snow
      \li Steam
    \endlist

    \section1 Adding a Particle System

    The recommended way to add a particle system is to use one of the
    \l{Particle Templates}{particle templates} and then add or remove
    particle components according to your use case.

    For example, to add a particle system that emits sprite particles:

    \list
      \li From \uicontrol {Qt Quick 3D Particles System Templates} in
      \uicontrol {Components}, drag \uicontrol Sprite to a scene component in
      \uicontrol Navigator. You can also drag it to \uicontrol {3D Editor}.
    \endlist

    \image studio-3d-particles-sprite-template.png

    \section1 Performance Considerations

    The particles are designed to be usable on a variety of hardware on
    desktops, as well as mobile and embedded devices. However, in addition
    to rendering the maximum amount of particle elements on the screen,
    extensibility to different use-cases, rendering quality, integration
    with the other UI elements, are also important.

    Currently, the rendering runs on GPU, while the particle system logic
    runs on CPU. However, the \e {stateless particle system} enables you
    to move the system logic onto GPU if that seems beneficial. The initial
    measurements indicate that the system is quite well balanced between
    CPU and GPU. The stateless system also enables animating particles by
    using a \l{Timeline}{timeline}. The model particles use instanced rendering
    to boost the performance. Therefore, OpenGL ES 2.0 isn't sufficient to make
    rendering performant, and at least OpenGL ES 3.0, Vulkan, or some other
    modern backend is required.

    To get a more concrete view on the actual performance, the video below shows
    a particles Testbed application running on four different Android devices.
    These devices and their chipsets and GPUs could be considered to be
    lower-end to mid-range, confirming that the particles can perform well also
    on affordable hardware.

    \youtube 9MqUCP6JLCQ

    \section1 Particle System Tutorials

    \list
      \li \l{Particle System: Fire Effect}
      \li \l{Particle System: Rain and Snow Effect}
    \endlist
*/

/*!
    \page studio-3d-particle-system.html
    \previouspage studio-3d-particles.html
    \nextpage studio-3d-logical-particles.html

    \title Particle System

    The preset \uicontrol {Particle System} component is the root of the
    particle system. It ties all the other components together and manages
    the shared progression in time. Emitters and affectors must either be
    children of the same \uicontrol {Particle System} component or refer
    to the same \uicontrol System to be able to interact with each other.

    You can add several \uicontrol {Particle System} components. Typically, you
    would use separate \uicontrol {Particle System} instances for the components
    that interact with each other. Or, you can use just one instance if the
    total number of components is small enough to be controllable.

    Specify settings for the particle system in \l Properties >
    \uicontrol {Particle System}.

    \image studio-3d-properties-particle-system.png "Particle System properties"

    You can freely animate the particle system property values using a timeline,
    which enables you to synchronize particles with other animations, for
    example.

    In \uicontrol {Start time}, set the time in milliseconds where the system
    starts. This can be useful to warm up the system so that a set of particles
    has already been emitted when the simulation starts. For example, if you set
    the start time to 2000 and animate \uicontrol Time from 0 to 1000, the
    animation shows particles from 2000 ms to 3000 ms.

    In \uicontrol Time, set the time in milliseconds for the system. If
    you modify the value of this property, you should usually disable
    \uicontrol Running to stop the simulation. All particles are destroyed
    when you select it again.

    To temporarily stop the simulation, select \uicontrol Paused. Particles
    are not destroyed, and when you deselect the check box, the simulation
    resumes from the point where you paused it.

    Select \uicontrol Logging to collect particle system statistics, such as
    the current and maximum amounts of particles in the system or the average
    time in milliseconds used for emitting and animating particles in each
    frame. Logging data can be useful when developing and optimizing the
    particle effects.

    \note Logging can negatively affect performance, so it should be disabled
    before packaging applications for release and delivery to users.

    Select \uicontrol {Use random seed} to randomize the particle system
    with the seed that you specify in \uicontrol Seed to get an identical
    pixel-perfect particle effect on every run. You should not modify the
    seed value during particle animation.
*/

/*!
    \page studio-3d-logical-particles.html
    \previouspage studio-3d-particle-system.html
    \nextpage studio-3d-particle-emitters.html

    \title Logical Particles

    All the particle system components act on \e {logical particles}. Each
    particle has a logical representation within the particle system, and this
    is what the components act upon. Not every logical particle needs to be
    visualized, and some logical particles could lead to multiple visual
    particles being drawn on screen.

    Two different logical particle components are supported:
    \uicontrol {Sprite Particle} for \l{Textures}{2D texture} particles and
    \uicontrol {Model Particle} for \l{3D Models}{3D model} particles. Model
    particles use \l{Instanced Rendering}{instanced rendering} to enabled the
    rendering of thousands of particles, with full \l{3D Materials}{materials}
    and \l{Lights}{lights} support.

    The following components are available for adding logical particles and
    for modifying their actions and appearance:

    \list
        \li \l{Sprite Particle}
        \li \l{Sprite Sequence}
        \li \l{Model Particle}
        \li \l{Model Blend Particle}
    \endlist

    \section1 Sprite Particle

    Specify properties for sprite particles in \uicontrol Properties >
    \uicontrol {Sprite Particle}.

    \image studio-3d-properties-sprite-particle.png "Sprite Particle properties"

    \uicontrol {Blend mode} determines whether particles are blended using
    source over, screen, or multiply mode. If you select \uicontrol SourceOver,
    the pixel component values from a foreground source are written over the
    source by using alpha blending. If you select \uicontrol Screen, the values
    are negated, then multiplied, negated again, and written. If you select
    \uicontrol Multiply, they are multiplied and written.

    \uicontrol Sprite defines the \l{Textures}{Texture} component used for the
    particles. For example, to use an image of a snowflake to simulate snow,
    create an instance of the \uicontrol Texture component with the image
    as the \uicontrol Source.

    In \uicontrol {Sprite sequence}, select the \l{Sprite Sequence} component
    instance for the particle if the sprite texture contains a frame sequence.
    If your image only has a single sprite frame, don't set this value.

    Select \uicontrol Billboard to specify that the particle texture should
    always be aligned face towards the screen. Enabling this property
    automatically disables \uicontrol Particle > \uicontrol {Align mode}.

    \uicontrol {Particle scale} specifies the scale multiplier of the particles.
    To adjust particle sizes in the emitter, set \uicontrol {Particle Emitter}
    properties.

    In \uicontrol {Color table}, select the \uicontrol Texture component that is
    used for coloring the particles. The image can be a 1D or a 2D texture.
    Horizontal pixels determine the particle color over the value you set in
    \uicontrol {Particle Emitter} > \uicontrol {Life span}. For example, when
    the particle is halfway through its life, it will have the color specified
    halfway across the image. If the image is 2D, a vertical row is randomly
    selected for each particle. For example, a \c {256 x 4} image contains 4
    different coloring options for particles.

    \section1 Sprite Sequence

    Specify properties for a sprite particle sequence that contains a frame
    sequence in \uicontrol Properties > \uicontrol {Particle Sprite Sequence}.

    \image studio-3d-properties-particle-sprite-sequence.png "Particle Sprite Sequence properties"

    \uicontrol {Frame count} specifies the amount of image frames in a sprite.
    A particle animates through these frames during its duration. The frames
    should be laid out horizontally in the same image file. For example, the
    sprite could be a 512x64 image, with the frame count of 8. This would make
    each particle frame size 64x64 pixels.

    \uicontrol {Frame index} specifies the initial index of the frame.
    This is the position between frames where the animation is started. For
    example, when the frame index is 5 and \uicontrol {Animation direction} is
    set to \uicontrol Normal, the first rendered frame is 5. If the animation
    direction is set to \uicontrol Reverse, the first rendered frame is 4.

    The value of \uicontrol {Frame index} must be between 0 and the value of
    \uicontrol {Frame count} minus 1. When \uicontrol {Animation direction} is
    set to \uicontrol SingleFrame and \uicontrol {Random start} is disabled, all
    the particles will render sprites with the frame index.

    Enable \uicontrol {Random start} to start the animation from a random frame
    between 0 and \uicontrol {Frame count} minus 1. This allows animations to
    not look like they all just started when the animation begins.

    \uicontrol Interpolate determines whether sprites are blended
    between frames to make the animation appear smoother.

    \uicontrol Duration specifies the time in milliseconds that it
    takes for the sprite sequence to animate. For example, if the duration
    is 400 and the \uicontrol {Frame count} is 8, each frame will be shown
    for 50 milliseconds. When the value is -1, \uicontrol Particle >
    \uicontrol {Life span} is used as the duration.

    \uicontrol {Duration variation} defines the duration variation in
    milliseconds. The actual duration of the animation is between
    duration minus duration variation and duration plus duration variation.

    \uicontrol {Animation direction} defines the animation playback direction
    of the sequence. Select \uicontrol Normal to play the animation from the
    first frame to the last frame and to jump back to the first frame from the
    last one. Select \uicontrol Reverse to reverse the normal order. Select
    \uicontrol Alternate or \uicontrol AlternateReverse to alternate between
    normal and reversed orders.

    If you don't want to animate the frame, select \uicontrol SingleFrame.
    When \uicontrol {Random start} is disabled, the frame set in
    \uicontrol {Frame index} is rendered. When it is enabled, each particle
    renders a random frame.

    \section1 Model Particle

    Specify properties for model particles in \uicontrol Properties >
    \uicontrol {Model Particle}.

    \image studio-3d-properties-model-particle.png "Model Particle properties"

    In \uicontrol Delegate, select the \uicontrol {3D Model} component that
    defines each object instantiated by the particle.

    \uicontrol {Instance table} provides you with access to the internal
    instancing table of the model particle that is used to implement efficient
    rendering. This table can be applied to the instancing property of models
    that are not part of the particle system.

    You can use this feature also to provide an instancing table without
    showing any particles. This is done by omitting the delegate.

    \section1 Model Blend Particle

    Specify properties for model blend particles in \uicontrol Properties >
    \uicontrol {Model Blend Particle}.

    \image studio-3d-properties-model-blend-particle.png "Model Blend Particle properties"

    The \uicontrol {Model Blend Particle} component blends a particle effect
    with a \uicontrol {3D Model} component. The provided model needs to be
    triangle-based. Each triangle in the model is converted into a particle,
    which are then used by the emitter. Instead of particle shader, the model
    is shaded using the material specified in the model. The way the effect is
    blended is determined by \uicontrol {Model blend mode}.

    The possible blend modes are:

    \list
        \li \uicontrol Construct, where the model is constructed from the
            particles.
        \li \uicontrol Explode, where the model is converted into particles.
        \li \uicontrol Transfer, where \uicontrol Construct and
            \uicontrol Explode are combined to create an effect where the
            model is transferred from one place to another.
    \endlist

    The particles are emitted in the order they are specified in the model
    unless \uicontrol {Activation node} is set or \uicontrol Random is enabled.

    In \uicontrol Delegate, select the \uicontrol {3D Model} component that
    defines each object instantiated by the particle.

    \uicontrol {End node} specifies the transformation for the model at the end
    of a particle effect. It defines the size, position, and rotation where the
    model is constructed when you set \uicontrol {Model blend mode} to
    \uicontrol Construct or \uicontrol Explode.

    \uicontrol {End time} specifies the end time of the particle in
    milliseconds. The end time is used during construction and defines
    duration from particle lifetime at the end where the effect is blended
    with the model positions. Before the end time, the particles' positions
    are defined only by the particle effect, but during the end time the
    particle position is blended linearly with the model end position.

    In \uicontrol {Activation node}, select the component instance that
    activates particles and overrides the regular emit routine. The activation
    node can be used to control how the particles are emitted spatially when
    the model is exploded or constructed from the particles. The activation
    node emits a particle if the center of that particle is on the positive
    half of the z-axis of the activation node. Animating the activation node
    to move trough the model will cause the particles to be emitted sequentially
    along the path the activation node moves.

    To emit particles in random order instead of in the order in which they are
    specified in the model, select \uicontrol Random.

    \section1 Common Particle Properties

    The properties that you specify for logical particles in
    \uicontrol Properties > \uicontrol Particle determine the common
    appearance of all particles.

    \image studio-3d-properties-particle.png "Particle properties"

    \uicontrol {Max amount} allocates data for particles. Setting this value
    instead of just growing the data based on \uicontrol {Particle Emitter} >
    \uicontrol {Emit rate}, \uicontrol {Life span}, and \uicontrol {Emit Bursts}
    enables you to optimize memory usage and to modify the emit rate and life
    span without reallocation.

    \uicontrol Color determines the base color for particles. You can use the
    \l{Picking Colors}{Color Picker} to select colors. For color variation, set
    values in \uicontrol {Color variation}. The values are in RGBA order (X=red,
    Y=green, Z=blue, and W=alpha), and each value should be between 0.00
    (no variation) and 1.00 (full variation).

    To apply color variation uniformly for all the color channels, enable
    \uicontrol {Unified color variation}. This applies all variations with
    the same random amount.

    \uicontrol {Fade in effect} and \uicontrol {Fade out effect} define the
    fading effect used when the particles appear. Fading is implemented by
    changing the value of opacity or scale between 0 and 1 over the time
    specified in milliseconds in \uicontrol {Fade in duration} and
    \uicontrol {Fade out duration}. Fading duration is calculated into the
    particle lifespan. For example, if \uicontrol {Particle Emitter} >
    \uicontrol {Life span} is 3000, \uicontrol {Fade in duration} is 500, and
    \uicontrol {Fade out duration} is 500, the particle will be fully visible
    for 2000 ms.

    \uicontrol {Align mode} determines the direction that particles face:

    \list
        \li Select \uicontrol AlignNone to use the value set for the emitter
            component in \uicontrol {Particle Rotation} > \uicontrol Rotation.
        \li Select \uicontrol AlignTowardsTarget to align the particles towards
            the direction set in \uicontrol {Align target position}.
        \li Select \uicontrol AlignTowardsStartVelocity to align the particles
        towards their starting velocity direction.
    \endlist

    This value takes no effect if \uicontrol {Sprite Particle} >
    \uicontrol Billboard is enabled.

    Unlike the materials used with the models, particles default to being
    rendered with assuming semi-transparency, and so with blending enabled.
    This is the desired behavior most of the time due to particle textures,
    color (alpha) variations, fadings, and so on. If you don't need the
    blending, disable \uicontrol {Has transparency} for possible performance
    gain.

    \uicontrol {Sort mode} determines the order in which the particles are
    drawn. You can sort particles based on their distance from the camera,
    farthest first, or lifetime, newest or oldest first.

    The particles are emitted from the location of the \l Emitter or
    \l {Trail Emitter} component instance.
*/

/*!
    \page studio-3d-particle-emitters.html
    \previouspage studio-3d-logical-particles.html
    \nextpage studio-3d-particle-affectors.html

    \title Particle Emitters

    The \uicontrol {Particle Emitter} component emits logical particles into
    the system. You can determine how individual particles will look like and
    how they are emitted. Many of the properties have \e variation counterparts,
    such as \uicontrol {Color variation}, for adding variation to the particles.

    The \uicontrol {Trail Emitter} component emits particles from the location
    of other logicial particles. Any logical particle of the followed component
    within the bounds of a trail emitter will cause particle emission from its
    location, as if there were an emitter on it with the same properties as the
    trail emitter.

    Emitter components can use instances of the \l {Particle Shape} or
    \l {Model Shape} component to emit particles from the surface of the
    selected shape.

    You always need one emitter. If the \uicontrol {Particle System} component
    instance is the direct parent of the emitter component instance, you don't
    need to specify the particle system separately. However, you always need
    to select the logical particle to emit, or nothing is emitted.

    The following components are available for emitting particles:

    \list
        \li \l Emitter
        \li \l {Trail Emitter}
        \li \l {Emit Burst}
        \li \l {Model Shape}
        \li \l {Particle Shape}
    \endlist

    \section1 Emitter

    Specify properties for particle emitters in \uicontrol Properties >
    \uicontrol {Particle Emitter}. You need at least one emitter.

    \image studio-3d-properties-particle-emitter.png "Particle Emitter properties"

    \uicontrol Emitter emits \l{Logical Particles}{logical particles} that you
    select in \uicontrol Particle, as defined by the other properties. If the
    \uicontrol {Particle System} component instance is not the direct parent of
    the emitter component instance, you need to select it in \uicontrol System.

    You can control the amount of particles emitted per second by setting the
    value of \uicontrol {Emit rate} or add \uicontrol {Emit Burst} component
    instances in \uicontrol {Emit bursts} to emit bursts of specified amounts
    of particles at the specified point in time for the specified duration.

    In \uicontrol Velocity, set a starting velocity for emitted particles.
    If velocity is not set, particles start motionless, and velocity is
    determined by \l{Particle Affectors}{particle affectors}.

    Use \uicontrol Enabled to turn an emitter on or off. Usually, this property
    is used in code to conditionally turn emitters on and off. To continue
    emitting bursts, set \uicontrol {Emit rate} to 0 instead of disabling
    \uicontrol Enabled.

    In \uicontrol Shape, select the instance of the \l {Particle Shape} or
    \l {Model Shape} component to use. The shape is scaled, positioned, and
    rotated based on the emitter node properties. When the shape \uicontrol Fill
    property is set to false, particles are emitted only from the surface of the
    shape. When the shape is defined, it is visualized in
    \uicontrol {3D Editor}. When the shape is not defined, particles are emitted
    from the center point of the emitter.

    In \uicontrol {Life span}, specify the lifespan of a single particle
    in milliseconds. Specify variation in the particle lifespan in
    \uicontrol {Life span variation}. For example, to emit particles that
    will exist from three to four seconds, set \uicontrol {Life span} to
    3500 ms and \uicontrol {Life span variation} to 500 ms.

    \uicontrol {Particle scale} and \uicontrol {Particle end scale} specify the
    scale multiplier of the particles at the beginning and end. For variation
    in particle size, specify values for \uicontrol {Particle scale variation}
    and \uicontrol {Particle end scale variation}.

    \uicontrol {Depth bias} specifies the the depth bias of the emitter. Depth
    bias is added to the object's distance from camera when sorting objects.
    This can be used to force the rendering order of objects that are located
    close to each other if it might otherwise change between frames. Negative
    values cause the sorting value to move closer to the camera while positive
    values move it further from the camera.

    \section1 Trail Emitter

    Specify additional properties for particle trail emitters in
    \uicontrol Properties > \uicontrol {Particle Trail Emitter}.

    Select the logical particle component to follow in \uicontrol Follow.

    \section1 Particle Rotation

    Specify properties for the rotation of particles in \uicontrol Properties >
    \uicontrol {Particle Rotation}

    \image studio-3d-properties-particle-rotation.png "Particle Rotation properties"

    \uicontrol Rotation specifies the rotation of the particles in the
    beginning. Rotation is defined as degrees in euler angles. For variation
    in rotation, specify values for \uicontrol Variation.

    \uicontrol Velocity specifies the rotation velocity of the particles in the
    beginning. Rotation velocity is defined as degrees per second in euler
    angles. For variation in velocity, specify values in
    \uicontrol {Velocity variation}.

    \section1 Emit Burst

    Specify properties for emit bursts in \uicontrol Properties >
    \uicontrol {Emit Burst}.

    \image studio-3d-properties-particle-emit-burst.png "Particle Emit Burst properties"

    \uicontrol Time specifies the time in milliseconds when emitting the burst
    starts, and \uicontrol Amount specifies the amount of particles emitted
    during the time specified in milliseconds in \uicontrol Duration.

    For example, you could use two \uicontrol {Emit Burst} instances to emit 100
    particles at the beginning and 50 particles at 2 seconds, so that both
    bursts take 200 milliseconds. For one instance, set \uicontrol Time to 0,
    \uicontrol Amount to 100, and \uicontrol Duration to 200. For the other
    instance, set \uicontrol Time to 2000, \uicontrol Amount to 50, and
    \uicontrol Duration to 200.

    \section1 Particle Shape

    The \uicontrol {Particle Shape} component supports shapes, such as cube,
    sphere, and cylinder, for emitting particles from their area.

    Specify properties for particle shape in \uicontrol Properties >
    \uicontrol {Particle Shape}.

    \image studio-3d-properties-particle-shape.png "Particle Shape properties"

    In \uicontrol Type, select the shape to use.

    Select \uicontrol Fill to fill the shape instead of just displaying its
    outline.

    \uicontrol Extents determines the extent coordinates of the shape geometry.

    \section1 Model Shape

    The \uicontrol {Model Shape} component specifies a template for defining the
    model.

    Specify properties for model shape in \uicontrol Properties >
    \uicontrol {Particle Model Shape}.

    \image studio-3d-properties-particle-model-shape.png "Particle Model Shape properties"

    In \uicontrol Delegate, select the \uicontrol {3D Model} component that
    defines each object instantiated by the particle.

    Select \uicontrol Fill to fill the shape instead of just displaying its
    outline.
*/

/*!
    \page studio-3d-particle-affectors.html
    \previouspage studio-3d-particle-emitters.html
    \nextpage studio-3d-particle-directions.html

    \title Particle Affectors

    Affectors are an optional component of a particle system. They can perform
    a variety of manipulations to the simulation, such as altering the
    trajectory of particles or prematurely ending their life in the simulation.
    For performance reasons, it is recommended not to use affectors in
    high-volume particle systems.

    The following affector components control how the particles are animated
    during their lifetime:

    \list
        \li \l Attractor attracts particles towards a specific point.
        \li \l Gravity accelerates particles to a vector of the specified
            magnitude in the specified direction.
        \li \l {Point Rotator} rotates particles around a pivot point.
        \li \l Wander applies random wave curves to particles.
    \endlist

    If the system has multiple affectors, the order of affectors may result in
    different outcome, as affectors are applied one after another.

    By default, affectors affect all particles in the system, but you can limit
    this to the particles listed in \l Properties > \l {Particle Affector} >
    \uicontrol Particles.

    \section1 Attractor

    The \uicontrol Attractor component attracts particles towards a position
    inside the \l{3D Views}{View 3D} component instance. To model the gravity
    of a massive object whose center of gravity is far away, use an instance of
    the \l Gravity component.

    The attraction position is defined either by using the position of the
    attractor and the value of \uicontrol {Position variation} or by selecting
    an instance of the \uicontrol {Particle Shape} or \uicontrol {Model Shape}
    component in \uicontrol Shape. If both position and shape are defined, the
    shape is used.

    Specify settings for \uicontrol Attractor components in
    \uicontrol Properties > \uicontrol {Particle Attractor}.

    \image studio-3d-properties-particle-attractor.png "Particle Attractor properties"

    \uicontrol {Position variation} specifies the variation on attract position.
    Instead of attracting particles into a single point, it attracts them
    randomly towards a wider area. For example, to attract particles into some
    random point inside a (50, 50, 50) cube at position (100, 0, 0) within 2 to
    4 seconds, set \uicontrol X, \uicontrol Y, and \uicontrol Z to 50.00,
    \uicontrol Duration to 3000, and \uicontrol {Duration variation} to 1000.

    In \uicontrol Shape, select an instance of the \l {Particle Shape} or
    \l {Model Shape} component to attract particles into a random position
    inside the shape. When the shape is defined, it is visualized in
    \uicontrol {3D Editor}.

    \uicontrol Duration specifies the duration in milliseconds that it takes
    for particles to reach the attraction position. When the value is -1,
    \uicontrol {Particle Emitter} > \uicontrol {Life span} is used as
    the duration. If you specify \uicontrol {Duration variation}, the actual
    duration to reach the attractor is between duration minus duration variation
    and duration plus duration variation.

    Select \uicontrol {Hide at end} to make the particle disappear when it
    reaches the attractor.

    Select \uicontrol {Use cached positions} to cache possible positions within
    the attractor's \uicontrol Shape. Cached positions give less random results
    but are better for performance.

    \uicontrol {Positions amount} specifies the amount of possible positions
    stored within the attractor's \uicontrol Shape. By default, the amount
    equals the particle count, but you can specify a lower amount for a smaller
    cache. Specify a higher amount for additional randomization.

    \section1 Gravity

    The \uicontrol Gravity component models the gravity of a massive object
    whose center of gravity is far away, and thus the gravitational pull is
    effectively constant across the scene. To model the gravity of an object
    near or inside the scene, use an \l Attractor component instance.

    Specify settings for \uicontrol Gravity component instances in
    \uicontrol Properties > \uicontrol {Particle Gravity}.

    \image studio-3d-properties-particle-gravity.png "Particle Gravity properties"

    \uicontrol Magnitude defines the magnitude in particle position change in
    degrees per second. A negative value accelerates in the opposite way from
    the direction specified in \uicontrol Direction. Direction \uicontrol X,
    \uicontrol Y, and \uicontrol Z values are automatically normalized to a unit
    vector.

    \section1 Point Rotator

    Specify settings for \uicontrol {Point Rotator} component instances in
    \uicontrol Properties > \uicontrol {Point Rotator}.

    \image studio-3d-properties-particle-point-rotator.png "Particle Point Rotator properties"

    The \uicontrol {Point Rotator} component rotates particles around the
    pivot point specified in \uicontrol {Pivot point} towards the direction
    specified in \uicontrol Direction. Direction \uicontrol X, \uicontrol Y, and
    \uicontrol Z values are automatically normalized to a unit vector.

    \uicontrol Magnitude defines the magnitude in particle position change in
    degrees per second. A negative value accelerates in the opposite way from
    the direction specified in \uicontrol Direction.

    \section1 Wander

    The \uicontrol Wander component applies random wave curves to particles.
    Curves can combine \l {Global Wander Properties}{global} values that are
    the same for all particles and \l{Unique Wander Properties}{unique} values
    that differ randomly.

    Specify settings for \uicontrol Wander component instances in
    \uicontrol Properties > \uicontrol {Particle Wander}.

    \image studio-3d-properties-particle-wander.png "Particle Wander properties"

    \uicontrol {Fade in duration} specifies the duration in milliseconds for
    fading in the affector. After this duration, the wandering will be in full
    effect. Setting this value can be useful to emit from a specific position or
    shape, otherwise wander will affect the position also at the beginning.

    \uicontrol {Fade out duration} specifies the duration in milliseconds for
    fading out the affector. Setting this value can be useful to reduce the
    wander when the particle life time ends, for example when combined with an
    instance of the \l Attractor component so that the end positions will match
    the shape.

    \section2 Global Wander Properties

    Specify global settings for \uicontrol Wander component instances in
    \uicontrol Properties > \uicontrol {Global}.

    \image studio-3d-properties-particle-wander-global.png "Global Particle Wander properties"

    \uicontrol Amount specifies the distance that each particle moves
    at the ends of curves. For example, if you set the value of \uicontrol X to
    100.00, \uicontrol Y to 10.00, and \uicontrol Z to 0.00, all particles
    wander between (100, 10, 0) and (-100, -10, 0).

    \uicontrol Pace defines the frequency at which each particle wanders in
    curves per second, starting from \uicontrol {Pace start}. The meaningful
    range for pace start is between 0 .. 2 * PI.

    \section2 Unique Wander Properties

    Specify unique settings for the \uicontrol Wander component instances in
    \uicontrol Properties > \uicontrol {Unique}.

    \image studio-3d-properties-particle-wander-unique.png "Unique Particle Wander properties"

    \uicontrol Amount specifies the distance that each particle moves
    at the ends of curves. Specify amount variation for each particle between
    0.00 and 1.00 in \uicontrol {Amount variation}. When the amount variation is
    0.00, all particles reach the maximum amount. When it is 0.50, every
    particle reaches between 0.50 and 1.50 of the amount. For example, if you
    set \uicontrol Amount \uicontrol X to 100.00, \uicontrol Y to 50.00, and
    \uicontrol Z to 20.00) and \uicontrol {Amount variation} to 0.10, the
    particles' maximum wave distances are something random between (110, 55, 22)
    and (90, 45, 18).

    \uicontrol Pace defines the frequency at which each particle wanders in
    curves per second. Specify unique pace variation for each particle between
    0.00 and 1.00 in \uicontrol {Pace variation}. When the variation is 0.00,
    all particles wander at the same frequency. For example, if you set
    \uicontrol Pace \uicontrol X to 1.00, \uicontrol Y to 2.00, and \uicontrol Z
    to 4.00 and \uicontrol {Pace variation} to 0.50, the particles' wave paces
    are something random between (2.00, 4.00, 8.00) and (0.50, 1.00, 2.00).

    \section1 Particle Affector

    Specify common settings for particle affectors in \uicontrol Properties >
    \l {Particle Affector}.

    \image studio-3d-properties-particle-affector.png "Affector properties"

    If the affector is not a direct child component of the particle system,
    select the \uicontrol {Particle System} component instance to affect in
    \uicontrol System.

    To only affect some of the particles in the particle system, select
    them in \uicontrol Particles. Select \inlineimage icons/plus.png
    to add logical particles to the list.

    Deselect \uicontrol Enabled to turn the affector off. Usually, this
    property is used in code to conditionally turn affectors off and on.
*/

/*!
    \page studio-3d-particle-directions.html
    \previouspage studio-3d-particle-affectors.html
    \nextpage quick-component-instances.html

    \title Particle Directions

    Directions can be specified by specifying the emitted particle velocity
    towards either the target position or the target vector.

    \section1 Target Direction

    The \uicontrol {Target Direction} component sets emitted particle velocity
    towards the target position.

    Specify common settings for particle target direction in
    \uicontrol Properties > \uicontrol {Particle Target Direction}.

    \image studio-3d-properties-particle-target-direction.png "Particle Target Direction properties"

    \uicontrol Position specifies the position of the target of
    the particle. For variation in the target position, specify
    \uicontrol {Position variation}.

    \uicontrol Normalized determines whether the distance to the position
    affects the magnitude of the particle's velocity. Enable
    \uicontrol Normalize to derive the velocity amount only from
    \uicontrol Magnitude and \uicontrol {Magnitude variation}.

    \uicontrol Magnitude specifies the magnitude in \uicontrol Position change
    per second. A negative value accelerates the in the opposite direction
    from the position. When \uicontrol Normalized is disabled, this value is
    multiplied with the distance to the target position. For variation in the
    magnitude, specify \uicontrol {Magnitude variation}.

    For example, to emit particles towards the target position (100, 0, 0) with
    random magnitude between 10..20, set \uicontrol Magnitude to 15.00 and
    \uicontrol {Magnitude variation} to 5.00. Further, enable
    \uicontrol Normalized.

    \section1 Vector Direction

    The \uicontrol {Vector Direction} component sets emitted particle velocity
    towards the target vector. The length of the direction vector is used as
    the velocity magnitude.

    Specify common settings for particle vector direction in
    \uicontrol Properties > \uicontrol {Particle Vector Direction}.

    \image studio-3d-properties-particle-vector-direction.png "Vector Direction properties"

    \uicontrol Direction specifies the direction of the target of the particle.
    A positive \uicontrol Y value means \e up, while a negative value means
    \e down. A negative \uicontrol Z value causes the particles to move in the
    direction opposite to the target vector.

    For variation in the target direction, specify
    \uicontrol {Direction variation}. Enable \uicontrol Normalized to
    normalize direction after applying the variation. When it is disabled,
    variation affects the magnitude of the particles' velocity. When
    it is enabled, variation affects the direction, but the magnitude is
    determined by the original direction length.
*/