here

Phantom Scatter
P R O C E D U R A L
Software user manual
I N S T A N C I N G
T E C H N O L O G Y
Author / owner
Company
Manual version
Software version
Publication date
Copyright
Guus Thissen
Phantom Technology
4.4
1.6 b
19-12-2014
©2014
Table of contents
Introduction
An introduction to Phantom Scatter.
Page 6
01
02
03
1 of 37
Support
Information about system requirements, OBJ model support and troubleshooting.
Page 7
Licensing
Information about obtaining a license, the End-User License Agreement (EULA)
and activating the Phantom Scatter software.
Page 8-10
Setup
Short tutorial on how to setup Phantom Scatter correctly before running the
software for the first time.
Page 11
Table of contents
Graphical user interface (GUI)
Information about the panels in the GUI and the individual functions.
Page 11-12
Functions & controls
A list of all the available functions. Every function gets a brief explanation.
Also contains a list of the key bindings used in Phantom Scatter.
Page 13-18
AREA-scatter
Step-by-step tutorial to help you create your first AREA-scatter.
Page 19-21
Advanced AREA-scatter
Tutorial on how to do multiple scatter objects on a single material's geometry
Page 22-23
04
05
06
07
2 of 37
Table of contents
08
09
10
PER TRI-scatter
Tutorial to help you understand per-triangle mode for precise instancing.
Page 24-25
3D AREA-scatter
A short tutorial that shows you how to make a 3D AREA-scatter.
Page 26
RAY-scatter (rain effect)
A tutorial that shows you how to create a rain effect in your scene using the RAYscatter type. The rain contains instances for raindrops in the air and instances for
rain impacts on the scene itself. They are created as individual scatter objects.
Page 27
11
3 of 37
CURVE-scatter
A tutorial on how to deal with CURVE-scatter objects. For advanced users.
Page 28-29
Table of contents
Custom object placement using
CURVE-scatter
Apart from scattering along curves, CURVE-scatter can be intelligently used to
create individual instance objects in your scene, for example to easily place chairs
or other objects.
12
Page 29
BRUSH-scatter
Tutorial to help you understand brush scatter mode for hand-painted instancing.
Page 30
Software changelog
A list that contains the changes to the software seperated per major update.
Page 31-36
13
14
Final word
A word about the software in general and the development team.
Page 37
4 of 37
5 of 37
Introduction
Proper instancing can be a frustrating and time
consuming process. If you're a SketchUp user such as
myself, it takes a lot of effort and time to get proper
instancing in your model. Instance data has to be
exported one component type at a time. It clogs up
the model, increasing model size and slows down
the PC. It's also incredibly time consuming.
I've come up with a tool to tackle these problems
and provide an easy instancing solution to your
workflow. To make this work, I'm developing a
program called Phantom Scatter. Phantom Scatter is
a program that can procedurally generate instancing
data for your scenes in Octane Render. This can be
very useful for creating organic looking vegetation in
a matter of seconds, but also static repeated models
such as cars and streetlights.
Phantom Scatter nestles itself in your workflow
between OBJ export and Octane Render. It can scan
the contents of your OBJ model and generate the
instancing data for that OBJ scene in a matter of
seconds. Automatizing instancing data like this
doesn't just save time, but thanks to all the available
features it looks amazing too!
Guus Thissen
Phantom Scatter lead developer
6 of 37
01 | Support
System requirements
Troubleshooting
Phantom Scatter has the following system
requirements:
Should you run into any problems, please contact
me at [email protected].
•
The software is designed for the Microsoft
Windows platform. It's tested and working
on Windows Vista, Windows 7, Windows 8
and Windows 8.1. It will probably also run
on Windows XP should you want to.
•
A problem in the ArchiCAD OBJ exporter
can cause it to export incorrect normals in
the OBJ. When this happens, try
exporting your model into Google
SketchUp first. Then export it as OBJ using
TIG’s plugin.
•
An active internet connection is required
so the software can validate your
registration. This only happens when the
program is launched.
•
If you possibly get the error “MSVCP100.dll
is missing”, it means you need to install the
Microsoft Visual C++ 2010 Redistributable
package.
•
The software is designed to cooperate with
Octane Render. This software is obviously
required to make usage of Phantom
Scatter.
link:
http://www.microsoft.com/enus/download/confir
mation.aspx?id=5555
•
OBJ model support
OBJ models should work flawlessly as long as the
faces that make up the model are triangles (3
vertices/face) and/or quads (4 vertices/face).
Faces with 5 vertices or more are not supported. If
your OBJ models have 5 vertices or more, try
triangulating them.
I am trying to deliver broad OBJ support. If your
modeling package creates OBJs that are not
compatible, please contact me. Users have tested
and tried with the following modeling packages:
ArchiCAD, Blender, SketchUp, Rhino, Maya,
Lightwave, DAZ, Artlantis, 3DS Max, Revit,
Softimage and ZBrush.
7 of 37
DirectX9.0c is required. You
will need to install this if you run into
problems. Newer DirectX versions are not
backwards compatible. Installing
DirectX9.0c will not interfere with your
other DirectX installations. An
application always automatically picks one
to use.
link:
http://www.microsoft.com/nlnl/download/details.aspx?id=34429
•
I've received a report where the software
did not get data loading/writing
permissions from Windows. I suspect
Microsoft UAC (User Account Control) was
blocking it. I recommend to run the
software as administrator when this
happens, that should solve it.
02 | Licensing
Obtaining a license
A license can be obtained for the price of € 20*
and will last 365 days (1 year). A license is valid for
a single PC. Once you've activated the software,
the software will be locked to that PC. As long as
you have a valid license, you will always get the
latest version of the software.
To request a license, please contact me at the
following e-mail address:
[email protected]
You will be given a link to PayPal, where you can
make the transaction. As soon as I see the
transaction has been completed, I will send you a
reply to your e-mail with your personal username,
registration key and download link to the software.
Activating the Phantom Scatter
software
When first running the Phantom Scatter software,
you will be asked to enter your username. This will
be the e-mail address you requested the license
with, unless I specifically give you another
username (this can be requested).
Enter your username and press OK.
A new window pops up, requesting your
registration key.
Enter your registration key (I recommend copypasting it) and press OK.
The software should now be registered and ready
for use!
By downloading and/or using the software, you
agree to the End-User License Agreement (EULA).
The EULA can be read on the next two pages of
this manual.
Should you upgrade your PC, then you can contact
me for a new license key. Your old key will be
deactivated.
Please check the system requirements before
buying.
*excluding government taxes
8 of 37
End-User License Agreement (EULA)
9 of 37
10 of 37
03 | Setup
Creating the library
Before the program can be used, it has to be setup
correctly.
1.
Go to your C:/ drive.
04 | Graphical user
interface (GUI)
Please check out figure 04.1 on the next page.
(1) Preview size
Your 'C:/Phantom Scatter' folder should contain
the following files:
When dealing with AREA and TRI scatter previews,
preview instances are only calculated on triangles
up to a defined range. This value is set by the
preview size. Clicking the arrow down or the arrow
up will change the value. If you have a lot of
instances going on, decreasing the preview size
might improve performance. The preview size is
only relevant inside the preview window. When
exporting, every triangle in the OBJ will get
checked for instance calculations.
•
Phantom Scatter.exe
(2) Performance information
•
EULA.txt (End-User License Agreement)
•
[optional] A folder called 'library'.
Phantom Scatter will create this folder
itself if it doesn't exist yet. This is where all
your material/scatter object settings will be
saved.
Shows the current performance of the program. If
performance drops below 30 fps, consider
disabling MOTION BLUR, AA and/or VSYNC.
2.
Create a folder called 'Phantom Scatter'.
Phantom Scatter runs sandboxed, which means the
library needs a fixed location.
3.
Unzip the contents of 'Phantom Scatter.zip'
and place them in the created folder.
•
[optional] The 'tutorial' folder. This folder
includes the files which are used during
the tutorial in this manual.
figure 03.1: Example setup of Phantom Scatter. In
this example image the 'tutorial' folder is not
included.
The smaller your scene, the faster the program can
work. So if you export a seperate OBJ for Phantom
Scatter with just the geometry you want to scatter
on, you can dramatically increase performance.
(3) Camera position
The camera position is shown in meters. The
indicators show the relative position on the model.
The reset button brings the camera back to the
origin (0, 0, 0).
(4) Scatter source/range preview
This UI element only shows when dealing with
AREA scatters. When designing such scatter, it is
important to know how the source and range
settings react. It is best displayed with a 3D
heightmap. The source controls the heights of the
map. The range determines which heights of the
map are used for the scatter. A range min of 0%
and a range max of 100% would use the entire
heightmap for the scatter.
(5) 3D Map
The 3D map displays the OBJ you are currently
viewing from above. You can use it to move
around the scene with more oversight. The scale of
the map is determined by the preview size setting,
see (1) Preview size.
figure 03.1
11 of 37
1
3
2
5
4
6
7
(1) Preview size, (2) Performance information, (3) Camera position, (4) Scatter source/range preview,
(5) 3D map, (6) Compass, (7) Toolset.
figure 04.1 (taken from Phantom Scatter 1.5)
(6) Compass
The compass allows you to navigate to the origin
of the scene (0,0,0).
(7) Toolset
This is where you operate the functions. Phantom
Scatter works with scatter modes. Every scatter
type gets its own mode. When selecting a mode
(the MODE setting in the module MAIN) the toolset
will change to that scatter type. An AREA-scatter
will have different settings compared to a RAYscatter.
12 of 37
05 | Functions & controls
MAIN
MODE (all modes)
Determines the type of scatter object that you
want to work on and/or export.
DIRECTORY (all modes)
Allows you to export the CSV files either alongside
the OBJ, or to a directory of your choosing. The
directory chosen will be saved to the options file.
MOTION BLUR (all modes)
Determines the use of per-pixel motion blur in the
3D view. Greatly enhances visual quality.
Performance will take a hit.
Note: due to WinAPI being the worst, I can't make it
snap to the current export directory for your
convenience.
ANTI ALIASING (all modes)
Determines the use of anti-aliasing in the 3D view.
Makes 3D geometry very smooth to look at.
Performance will take a hit.
VERTICAL SYNC (all modes)
Determines the use of vertical synchronisation.
GPUs do not run at the same speed as monitors.
Enabling this makes the GPU wait for the next
monitor update. Prevents screen tearing.
Performance will take a hit.
VISUAL THEME (REMOVED / OBSOLETE)
Choose a colorset that is used in the interface.
WIREFRAME (all modes)
Displays the wireframe of the imported OBJ, which
helps to identify the OBJ structure. Especially
useful when dealing with BRUSH-scatter. I highly
recommend putting ANTI ALIASING on 4X when
this feature is set to ON.
IMPORT / EXPORT
IMPORT SCALE (all modes)
Determines the factor that scales an OBJ when it is
imported in Phantom Scatter. Being a factor, it
means a value of 1 means the OBJ would be
imported at 100 % of its size. A factor of 0.001
means the OBJ is imported at 0.1 % of its size.
Important:
Phantom Scatter is designed to
work with meters. That means 1 unit
equals 1 meter.
IMPORT OBJ (all modes)
This allows you to browse to your OBJ file of
choice and import it. Please note that an OBJ's
content is analaysed on import so it might take a
while, depending on the size of the OBJ.
13 of 37
ARCHICAD FIX (all modes)
This is a fix for ArchiCAD users who want to use
PER-TRIANGLE scatter. Prevents downward facing
instances from exporting.
EXPORT CURRENT (all modes)
Initiates the exporting sequence. A CSV file will be
generated for all scatter objects of the current
mode, that are enabled for the currently selected
material. The CSV file(s) will be placed in the same
folder as the imported OBJ.
Please be careful with AREA and PER-TRI scatters:
All respective CSV files will be overwritten. This
can cause problems when a scatter object is
enabled for multiple materials. In that case use
EXPORT ALL for the final scene.
EXPORT ALL (AREA, PER-TRI, CURVE)
Exports CSV data for all materials in the imported
OBJ. All respective CSV files will be overwritten.
PROJECTS
PROJECT (CURVE, BRUSH)
Determines the current active project. Scatter
objects are shared among all projects, but actual
placed curves in the scene are project-specific.
CREATE BY NAME (CURVE, BRUSH)
Allows you to create a new project by entering its
name. Must be unique.
RENAME (CURVE, BRUSH)
Allows you to rename the currently selected
project. Must be unique. Be careful that this also
goes for hidden scatter objects.
DELETE (CURVE, BRUSH)
Deletes the currently selected project. This is
permanent. Deleting a project will also delete the
project's contents (the placed curves in the scene).
MATERIALS
MATERIAL (AREA, PER-TRI)
Determines the currently selected material.
Materials that exist within the OBJ are marked with
*.
CREATE BY NAME (AREA, PER-TRI)
Allows you to create a new material by entering its
name. Must be unique.
CREATE FROM OBJ (AREA, PER-TRI)
Allows you to create a new material by selecting
one from the list. The list contains all detected
materials inside the imported OBJ except the
materials that are already inside Phantom Scatter.
Must be unique.
RENAME (AREA, PER-TRI)
Renames the currently selected material. Must be
unique.
RENAME FROM OBJ (AREA, PER-TRI)
It has come to my attention that not everyone
always carefully names their materials (for AREA
and PER-TRI scatter objects). For that purpose I'm
now introducing the tool 'rename from OBJ', which
allows you to simply pinpoint a face in the scene,
and the selected material will be renamed to the
material of the face you just selected.
DELETE (AREA, PER-TRI)
Deletes the currently selected material. This is
permanent.
SCATTER OBJECTS
SCATTER (all modes)
Determines the currently selected scatter object.
Scatter objects that are enabled for the currently
selected material are marked with *. Only scatter
objects of a particular mode are shown here. For
example if your MODE is set to AREA SCATTER, only
scatter objects of that type are shown.
SCATTER ENABLE (AREA, PER-TRI)
Determines whether the currently selected scatter
object is enabled for the currently selected
material.
SCATTER DISABLE (RAY)
With this function you can prevent RAY scatter
objects from scattering on certain materials. Useful
when you don't want RAY impacts on your grass
for example. This is only applicable when 'place on
face' is set to 'on'.
PREVIEW VISIBILITY (AREA)
This function allows you to hide very demanding
scatters from the preview (but still export them).
PREVIEW RADIUS (BRUSH)
PREVIEW HEIGHT (BRUSH)
Brush instances can be previewed using cone
indicators. To use this, set PREVIEW RADIUS as well
as PREVIEW HEIGHT greater than 0 m.
CREATE BY NAME (all modes)
Allows you to create a new scatter object by
entering its name. Must be unique. Be careful that
this also goes for hidden scatter objects.
DUPLICATE (all modes)
Duplicates the currently selected scatter object.
You must enter an unique name. Be careful that
this also goes for hidden scatter objects.
RENAME (all modes)
Allows you to rename the currently selected
scatter object. Must be unique. Be careful that this
also goes for hidden scatter objects.
DELETE (all modes)
Deletes the currently selected scatter object. This
is permanent.
PROPERTIES
OCTAVE START (AREA, BRUSH)
The starting octave of the Perlin noise algorithm.
You should play around with different octave
start/end and seed values to get an understanding
of the kinds of patterns you can achieve. Values
accepted 1-7. Must always be lower than the
OCTAVE END.
OCTAVE END (AREA, BRUSH)
The ending octave of the Perlin noise algorithm.
You should play around with different octave
start/end and seed values to get an understanding
of the patterns you can achieve. Values accepted
1-7. Must always be higher than the OCTAVE
START.
14 of 37
RANDOM OCTAVES (AREA, BRUSH)
Sets a random octave start and octave end.
•
At 50%, the source/range pattern defines a
space of 5 x 5 = 25 m².
SEED (AREA, RAY, BRUSH)
Sets a specific seed number. The randomness of
the scatter is entirely based on this value.
•
At 100%, the source/range pattern defines
a space of 10 x 10 = 100 m².
•
At 200%, the source/range pattern defines
a space of 20 x 20 = 400 m².
RANDOM SEED (AREA, RAY)
Sets the seed to a random value.
3D (AREA)
Enables the use of true 3D Perlin noise scatter.
Very useful in cases where the regular (2D, planebased) scatter won't be suitable. This is more
demanding so only use it when necessary.
RANGE MIN (AREA)
Set the minimum amount of the range. Values
between 0-100%. You should play with
different settings to get an understanding of how
this works. A minimum range of 0% and a
maximum range of 100% means full range. A
good range is essential to a good scatter. Try a
minimum range of 40% and a maximum range of
60% for example.
RANGE MAX (AREA)
Set the maximum amount of the range. Values
between 0-100%. You should play with
different settings to get an understanding of how
this works. A minimum range of 0% and a
maximum range of 100 % means full range. A
good range is essential to a good scatter. Try a
minimum range of 40% and a maximum range of
60% for example.
RANDOM RANGE (AREA)
Sets a random range min and range max.
POPULATION (AREA, RAY)
Defines the amount of instances are placed over
100 m² of space when there is full range. When
making grass this amount should be very high.
When making trees this amount should be low. It
totally depends on what you want. When working
with a very high amount I suggest you keep the
size of the preview area down to prevent possible
performance issues.
AREA SCALE (AREA, BRUSH)
Determines the scale the octave/range pattern is
mapped to inside the scene. This is useful to scale
the noise pattern to be smaller (such as small
gardens) or larger (large tree forests).
15 of 37
DRAW DISTANCE (AREA, RAY, BRUSH)
This feature is incredibly useful to decrease
rendertime and system load. It determines the
maximum distance from the Phantom Scatter
camera in which scatter objects are exported.
Position your Phantom Scatter camera to match
your Octane Render camera and then export your
scatter. To create a smooth transition, instances
will be gradually scaled down towards 0% over
the defined draw distance. That way you won't
have a clearly visible edge. Enter a value of '0' to
disable draw distance for that scatter object
entirely.
COLLISION RADIUS (AREA, CURVE, BRUSH)
Upon export, instances are put in the 'collision
pool', where instances check their radius against
each other to check if they will be removed or not.
Useful to prevent instance overlap. When 'collision
radius' is set to '0', collision checking is ignored
and objects will not be entered in the 'collision
pool'. So basically you would want to enter trees
and bushes in the collision pool so they don't
intersect each other, but for grass you would
disable it as it doesn't really matter (doing this for
grass would be extremely, extremely demanding
anyway).
SCALE MIN (all modes)
The minimum scale for an instance in %. When
instances are scattered they are given a random
scale between the minimum and maximum scale.
SCALE MAX (all modes)
The maximum scale for an instance in %. When
instances are scattered they are given a random
scale between the minimum and maximum scale.
NORMAL ON FACE (AREA, BRUSH)
This determines whether to set the normal of the
instance perpendicular to the triangle it’s on. This
feature is useful to for example let grass curve
along with the terrain.
XY-MARGIN (RAY)
The margin around the imported OBJ model in the
XY-plane that defines the plane the rays are casted
from. The smaller the steepness of the rays you're
casting, the higher this margin should be.
RANDOM Z-ROTATION (AREA, PER-TRI, CURVE,
BRUSH)
Determines whether to have random rotation
(360°) around the Z-axis. Useful to for example let
trees be randomly rotated when scattered.
Z-MARGIN (RAY)
The margin above the imported OBJ model in the
Z-axis that defines the plane the rays are casted
from. A high value means the rays are casted from
a greater height.
RANDOM Z-VARIATION (AREA, PER-TRI, CURVE,
BRUSH)
The angle to randomly yaw the instance
compared to it’s normal. Great for creating even
more diversity.
X-AXIS ROT MIN (RAY)
The minimum angle around the X-axis that the rays
have. Rays that go straight down have an angle
around the X-axis of 90 degrees. When rays are
casted they are given a random angle around the
X-axis between the minimum and maximum.
RANDOM XY-FLIP (AREA, PER-TRI, CURVE, BRUSH)
Determines whether to randomly flip (mirror) the
instances over their X-axis and/or Y-axis. Useful to
create even more diversity.
RANDOM XY-VARIATION (AREA, PER-TRI, CURVE,
BRUSH)
The angle to randomly pitch or roll the instance
compared to it’s normal. Great for creating even
more diversity.
This function was previously called 'random xyrotation' but has been renamed for consistency
with function 'random z-variation'.
VARIANTS (all modes)
When set to 2 or higher, CSV instances will be
divided among the variants on export. '_variantX'
will be added to CSV filenames, where X is the
variant index. So basically this creates multiple
CSV files for the same scatter object, allowing you
to link different models to them, to create richer
diversity.
WEIGHTED SCATTER (AREA, BRUSH)
Turning this on will enable a modifier will make the
random minimum/maximum scale take the power
of the source (perlin noise) into account.
ROTATION CORRECTION (PER-TRI, CURVE)
Allows you to correct the angle around the Z-axis
the instance is oriented.
X-AXIS ROT MAX (RAY)
The maximum angle around the X-axis that the
rays have. Rays that go straight down have an
angle around the X-axis of 90 degrees. When rays
are casted they are given a random angle around
the X-axis between the minimum and maximum.
Y-AXIS ROT MIN (RAY)
The minimum angle around the Y-axis that the rays
have. Rays that go straight down have an angle
around the Y-axis of 90 degrees. When rays are
casted they are given a random angle around the
Y-axis between the minimum and maximum.
Y-AXIS ROT MAX (RAY)
The maximum angle around the Y-axis that the rays
have. Rays that go straight down have an angle
around the Y-axis of 90 degrees. When rays are
casted they are given a random angle around the
Y-axis between the minimum and maximum.
PLACE ON FACE (RAY)
Determines whether the instances are placed on
the impact faces or in mid-air along the paths of
the rays.
NODE OFFSET (CURVE)
When placing a node on the geometry of the
scene, this value creates an offset along the
normal of the chosen position. For example if this
value is set to 1 m, selecting a position on a flat
plane will actually place the node 1 m above it.
16 of 37
POPULATION (2) (CURVE)
Warning: this property is different from the
'population' property that deals with AREA and RAY
scatter objects. This value determines the amount
of instance placing attempts along the curve over a
distance of 10 m.
INTERVAL (CURVE)
As opposed to randomly scattering along the curve
with population, you can also place instances
along a fixed interval, starting at the origin of the
curve. This is particularly handy when you would
want to place streetlights for example. You can
freely combine population and interval if you wish
to do so.
NORMAL ON LINE (CURVE)
This property has 3 different options and
determines how instances are oriented on the
curve:
Upward
Instances will be oriented straight
upwards no matter what.
Slope
Instances will be oriented upwards
but will follow the curve.
Random
Complete random along the curve.
POPULATION (3) (BRUSH)
Determines the amount of instance placing
attempt within 1 m² of the mouse 3d-cursor when
using the function BRUSH MULTIPLE.
CURVES
CREATE BY NODES (CURVE)
Allows you to place 2 nodes to form a curve. When
placing a node, you can hover the mouse over an
existing node to snap to that node, or you can click
on a position on the geometry in the scene.
COPY (CURVE)
Copy the current select of bezier curves into
computer memory.
PASTE (CURVE)
Paste the copied bezier curves in the scene.
Copy/paste is ideal for quickly duplicating curves
or transferring them into another scatter object
and/or project.
17 of 37
DELETE (CURVE)
Delete the curves that belong to the current
selection of nodes.
STRAIGHTEN (CURVE)
Turn the current selection into straight lines. This
does not affect the begin and end nodes of a
curve, but it does change the 2 control nodes.
FLIP ORIGIN (CURVE)
Allows you to flip the origin of the curve. Useful
when using the 'interval' property, because the
very first instance starts at the origin of the curve.
ALIGN TO CONTROL NODE (CURVE)
Align the current selection of control nodes in the
same orientation as the control node you choose.
OPPOSE TO CONTROL NODE (CURVE)
Allows you to align the current selection of control
nodes to the opposite orientation as the control
node you choose. Ideal for connecting curves
seamlessly.
ALIGN X (RED AXIS) (CURVE)
Align the X component of nodes to an X point on
the geometry in the scene or an existing node.
ALIGN Y (GREEN AXIS) (CURVE)
Align the Y component of nodes to an Y point on
the geometry in the scene or an existing node.
ALIGN Z (BLUE AXIS) (CURVE)
Align the Z component of nodes to an Z point on
the geometry in the scene or an existing node.
POSITION TRANSFORM TOOL (CURVE)
Position the transform tool on a position on the
geometry of the scene or snap to an existing node.
SELECT ALL (CURVE)
Select all nodes in the scene (of the currently
active scatter object)
SELECT NONE (CURVE)
Deselect all nodes in the scene (of the currently
active scatter object).
INVERT SELECTION (CURVE)
Select all nodes that are not selected. Deselect all
nodes that are selected (both of the currently
active scatter object).
BRUSH TOOLS
CONTROLS
BRUSH MULTIPLE (BRUSH)
Allows you to spray-paint multiple instances
directly on the geometry of your scene. The
amount of instances painted is determined by the
property POPULATION. Use the mousewheel (or
the up/down arrow keys) to change the size of the
brush. Hit the escape button while painting to
cancel the painted instances from being place in
the scene.
ACCESSING FUNCTIONS
Buttons in the interface are always pressed with
the left mouse button. Press the ESC button to
close a menu.
BRUSH SINGLE (BRUSH)
Allows you to place a single instance on the
geometry of your scene.
BRUSH SINGLE (CUSTOM Z) (BRUSH)
Allows you to place a single instance on the
geometry of your scene, while also being able to
determine a custom Z-rotation of the instance. The
Z-rotation can be modified by using the
mousewheel or arrow keys while placing or
moving the instance (using MOVE SINGLE). Note
that the property NORMAL ON FACE will be
ignored when placing instances using this
function.
CAMERA
Use WASD to move around on the XY-plane. Use
QE to make the camera go up or down. Hold SHIFT
to speed up movement. Hold CTRL to slow down.
Hold the right mouse button to look around.
FULLSCREEN MODE
Press SPACEBAR to toggle fullscreen on/off.
MENU SCROLLING
When you notice a little white triangle in the
menus, it indicates you can scroll in the list to
display other available features. To do this, hover
your mouse inside a module and then use the
mouse scroll wheel or arrow keys to go up or
down.
ERASE MULTIPLE (BRUSH)
Allows you to erase instances from the scene that
use the currently enabled scatter object as their
host. Use the mousewheel (or the up/down arrow
keys) to change the size of the eraser.
MOVE SINGLE (BRUSH)
Allows you to re-locate an existing BRUSH scatter
instance. When pinpointing using your mouse
custor, the nearest instance (in 3d-space) will be
selected and colored red. When this instance has
been placed using BRUSH SINGLE (Z-CUSTOM), you
can use the mousewheel (or the up/down arrow
keys) to change the z-rotation aswell. Hit the
escape button while moving to cancel moving
entirely. The selected instance will not change.
MATCH PROPERTIES (BRUSH)
Allows you to change the host of exising BRUSH
scatter instances to the currently selected scatter
object. Use the mousewheel (or the up/down
arrow keys) to change the size of the brush.
18 of 37
06 | AREA-scatter
Scene understanding
It is important that you setup your scenes correctly
if you want to do proper scattering. It is of vital
importance that you keep organised and
understandable material names cross-project. That
will save you a lot of time!
The figure below, figure 06.2, shows a screenshot
of our scene, 'tutorial_scene.obj'. The scene
contains geometry with 4 different materials:
•
•
•
•
A material called 'grid_lightgray'
A material called 'grid_yellow'
A material called 'grid_green'
A material called 'grid_purple'
The figure to the right, figure 06.1, shows a
screenshot of the model we're going to scatter
around, called 'tutorial_tallgrass.obj'.
Objective
The objective of this tutorial is to scatter
'tutorial_tallgrass.obj' across the surface of
material 'grid_yellow'.
IMPORTANT | Notice how the grass model is placed
right at the origin in the scene. This will make sure
the model is correctly placed when scattering it
around!
figure 06.1
figure 06.2
19 of 37
Setup
Open up Phantom Scatter.
Make sure MODE is set to AREA SCATTER.
Model
First we're going to load in the OBJ mesh. Go to
IMPORT / EXPORT › IMPORT OBJ. Browse to the file
'tutorial_scene.obj'.
I made a little mistake in exporting this model.
Phantom Scatter has backside culling to improve
performance. I accidentally oriented the base
plane downward. This can affect the normals of
objects placed on that base plane. (Move the
camera below the model and look up to see it). It
does not influence this tutorial.
Try to move around the scene. Use WASDQE to
move the camera. Hold the right mouse button to
look around. I'm going to assume you're on a beast
PC right now. Let's go to MAIN › MOTION BLUR and
turn it ON. Try looking around again! Hold the
SHIFT key to speed up movement. Hold the CTRL
key to slow down movement. Just like a first
person shooter. Maybe I'll add some enemies and
guns. That'd be awesome.
Please ignore the tree and grass models in the
scene, I forgot to take them out. The models we're
going to scatter are in seperate OBJ files.
What needs to be done next is create a material
inside Phantom Scatter. This material must be
named similarly to the material name inside your
OBJ you want to scatter on. That way Phantom
Scatter can detect exactly where you would want
to scatter, and where you would not. If you're
smart, you'll work with a material database you use
cross-project, in both Phantom Scatter and in your
modeling tool. That will save you a lot of work in
time, because you will be able to re-use your
scatter settings in multiple projects. So if you have
a new project, you could use the same grass
scatter you used in another. I know it saved me a
lot of time during my 3D work, I hope it will for you
aswell.
Material
Go to MATERIALS › CREATE FROM OBJ. A list will
pop up with the available materials in the OBJ.
Select 'grid_yellow'. Notice how the color on some
of the geometry in the scene has changed. This
means that these triangles belong to the currently
selected material. Which is the material you just
created.
Scatter object
Time to create an actual scatter object. Go to
SCATTER OBJECTS › CREATE BY NAME and enter a
nice and clean name. I chose 'tutorial_tallgrass'.
You will notice how there are not popping up any
preview instances on the geometry in the scene.
This is because the newly created scatter object
has not been enabled to be used on the currently
selected material yet. Let's do this right away so
you can see what you're doing. Go to SCATTER
OBJECTS › SCATTER ENABLE and put it to ON.
Your glorious creation should now look like the
one displayed in figure 06.3.
figure 06.3 (taken from Phantom Scatter 1.5)
20 of 37
Scatter settings
The total setup should look like figure 06.5.
Let's define some settings so the scatter looks
somewhat interesting.
Now click on the Geometry Group and it should
start rendering the scene with the scatter objects
on it. It should look like figure 06.7. Notice that the
render kernel is set to pathtracing in my
screenshot.
Remember that the Z-axis is up!
•
Go to PROPERTIES › SEED and enter a
value of 97474.
•
Go to PROPERTIES › RANGE MIN and enter a
value of 55.
•
Go to PROPERTIES › RANGE MAX and enter
a value of 70.
•
Go to PROPERTIES › POPULATION and enter
a value of 4000.
•
Go to PROPERTIES › SCALE MIN and enter a
value of 60.
•
Go to PROPERTIES › RANDOM XY-ROTATION
and enter a value of 20.
When a Scatter needs to be refreshed, use the
little button next to the 'load' button, with the
green curved arrow on it. That will re-load the CSV
file.
So what you can do while designing is finetune the
scatter in Phantom Scatter, hit either EXPORT
CURRENT or EXPORT ALL and then hit the refresh
button in Octane on a Scatter node to see the
result.
Protip: when you have a lot of nodes to refresh,
simply save the scene in Octane, then go to File ›
Recent Files and then select your scene. Octane
will reload the scene and will also load all the
Scatter nodes.
CSV export
Let's export some actual scattering data. Go to
IMPORT / EXPORT › EXPORT CURRENT. This will
generate CSV data only for the currently selected
material.
Take a look at the tutorial folder in Windows. It
should now contain a file called
'tutorial_tallgrass.csv'. It is named like this because
the scatter object created was called
'tutorial_tallgrass'. CSV files are always exported to
the same folder as your OBJ.
Rigging scatter data in Octane
figure 06.5
Almost got a first real result. Open up Octane
Render.
Create a Geometry Group. Load up
'tutorial_scene.obj' and rig it up to the Geometry
Group.
Now load up 'tutorial_tallgrass.obj'. Create a
Scatter node and load up tutorial_tallgrass.csv.
Notice the little button in figure 06.6. Rig the
Scatter node up to the Geometry Group.
figure 06.6
21 of 37
figure 06.7
07 | Advanced AREA-scatter
Objective
The objective of this tutorial is to scatter
'tutorial_tallgrass.obj' across the surface of
'grid_purple' and 'tutorial_tree.obj' over
'grid_green' as well as 'grid_purple'.
'tutorial_tree' has turned to OFF. But we want it
enabled for this material aswell, so set it to ON.
Now go to SCATTER OBJECTS › SCATTER and select
'tutorial_tallgrass'. Turn SCATTER ENABLE to ON so
this scatter object is also used on 'grid_purple'.
Scatter settings
If you closed Phantom Scatter between the
previous tutorial and this one, import the OBJ
'tutorial_scene.obj' again.
Make sure the scatter object 'tutorial_tree' is
selected.
Setup
•
Go to PROPERTIES › RANGE MIN and enter a
value of 0. The range is now 0-100 %,
which means the Perlin noise is ignored
effectively and the scatter object will be
placed randomly over the entire surface.
•
Go to PROPERTIES › POPULATION and enter
a value of 50.
•
Go to PROPERTIES › NORMAL ON FACE
and make sure it is set to ON. What this
means is that the scattering instances will
be placed perpendicular to the surface.
•
Go to PROPERTIES › RANDOM XY-ROTATION
and enter a value of 10.
Materials
We need two new materials. Go to MATERIALS ›
CREATE FROM OBJ and select 'grid_purple'. Do the
same for 'grid_green'.
Scatter objects
Create a scatter object called 'tutorial_tree'. Select
the material 'grid_green'. Go to SCATTER OBJECTS ›
SCATTER ENABLE and set it to ON. Next we're going
to enable both scatter objects for material
'grid_purple'. Go to MATERIALS › MATERIAL and
select 'grid_purple'. You will notice that the
SCATTER ENABLE property for scatter object
22 of 37
CSV export / rig in Octane
Quote from the previous tutorial:
This time we're going to export scatter data for two
materials at the same time: materials 'grid_green'
and 'grid_purple'
When a Scatter needs to be refreshed, use the little
button next to the 'load' button, with the green
curved arrow on it. That will re-load the CSV file.
This time scatter objects are shared among
multiple materials so to get correct CSV files we
will need to export them all at once. Go to IMPORT
/ EXPORT › EXPORT ALL. After processing, it should
have renewed the file 'tutorial_tallgrass.csv' and
created a new file called 'tutorial_tree.csv'.
Protip: when you have a lot of nodes to refresh,
simply save the scene in Octane, then go to File ›
Recent Files and then select your scene. Octane will
reload the scene and will also load all the Scatter
nodes.
Alright, now go back to Octane Render again.
Go to the Geometry Group node and tell it to add
another input pin. Load up 'tutorial_tree.obj' and
rig it to a Scatter node. Load up 'tutorial_tree.csv'
for this Scatter node. Rig the Scatter node up to the
Geometry Group node. Your rigging setup should
now look like figure 07.1.
Since 'tutorial_tallgrass' is also scattered over
'grid_purple' now, the Scatter node that's linked up
to 'tutorial_tallgrass.csv' needs to be renewed.
Select this Scatter node and press on the 'Renew'
button in Octane Render.
All done! Your result should look like figure 07.2.
Notice how the trees follow the curve of the
material 'grid_purple'. Extra assignment: see if you
can make the trees point upward and make the
grass follow the curve of 'grid_purple' instead!
figure 07.1
IMPORTANT | Similarly to
'tutorial_tallgrass.obj', the model
'tutorial_tree.obj' also has its
geometry right at the origin (0,0,0)
of the scene. This will make sure
the model is correctly placed when
scattering it around!
figure 07.2
figure 07.3
23 of 37
08 | PER-TRI (per-triangle) scatter
Objective
The objective of this tutorial is to scatter
'tutorial_car.obj' on the triangles of
'tutorial_scene2.obj' using per-triangle scatter. A
screenshot of this scene can be seen in figure
08.1. This is the same scene as 'tutorial_scene.obj',
with the addition of the orange triangles, whose
material is called 'tutorial_orange'. Those are the
triangles we want to scatter our car model on.
Understanding per-triangle
scatter
figure 08.1
vertex
With per-triangle scatter, each triangle gets a
single instance placed on it. The instance is placed
at the center of the triangle, as seen in figure 08.2.
This center is determined by the intersection of
the dotted lines, which go from vertex to edge
midpoint.
The orientation of the instance is determined by
the length of the triangle's edges. Phantom Scatter
will orient these instances depending on how the
triangle is pointing. In the example of figure 08.3,
the triangle is pointing towards the right. The
edges with length a are greater than length b, so
the edge at length b is seen as the 'back' of the
triangle.
triangle center
edge midpoint
figure 08.2
length
Material
Create a new material called 'tutorial_orange'.
leng
Scene
Import the OBJ 'tutorial_scene2.obj' into Phantom
Scatter. Move around the scene a bit. You will
notice the backfaces of OBJ geometry is now
drawn. This is a performance decision.
th b
Setup
length
figure 08.3
Scatter object
The car scatter object has to be of the type PERTRI, not of the type AREA. What we need to do is
set Phantom Scatter into the PER-TRI mode. Go to
MAIN › MODE and select PER-TRI SCATTER. The
tools menu will have adjusted itself to the current
mode and will only show the relevant functions to
you.
Create a scatter object called 'tutorial_car'. Turn
SCATTER ENABLE to ON so the scatter object is
activated for the material 'tutorial_orange'.
24 of 37
figure 08.4
a
a
Scatter settings
Rig in Octane
Make sure the scatter object tutorial_car is
selected.
We only need to export instances for
'tutorial_orange' now. Go to IMPORT / EXPORT ›
EXPORT CURRENT.
•
Go to PROPERTIES › RANDOM Z-ROTATION
and make sure it is set to OFF.
Random Z-rotation is useful for randomized
instances like trees but for a precisely
placed object like a car it should not be
enabled. That way the cars will be oriented
towards the pointing direction of the
triangles.
•
Go to PROPERTIES › RANDOM XY-FLIP and
make sure it is set to OFF.
Random XY-flip is useful for randomized
instances like trees but for a precisely
placed object like a car it should not be
enabled. We don't want it to be randomly
mirrored all over the place in this case.
•
Rig up the scene just like the previous tutorials.
You will notice that 'tutorial_scene2.obj' will have
those orange triangles floating around in the
scene. Since they were used solely to generate the
scatter data, they have to be disabled. We do this
by selecting the material tutorial_orange inside
Octane and then setting it's opacity to 0. Octane
Render can have problems with this so what I
suggest is to create a seperate OBJ from your
modeling tool to do the scattering on. Then inside
Octane use your real OBJ scene combined with the
scattering data.
figure 08.4: Scene rigged in Octane.
figure 08.5: The final result. Notice that the render
kernel is set to pathtracing.
Go to PROPERTIES › ROTATION
CORRECTION and set it to a value of 180.
This function is useful to correct the
rotation of the model you're scattering over
the Z-axis. In this case it's necessary,
otherwise a value of 0 would suffice.
figure 08.5
25 of 37
09 | 3D AREA-scatter
Objective
The objective of this tutorial is to scatter
'tutorial_tallgrass.obj' on the triangles of
'tutorial_frame.obj' using a 3D AREA-scatter.
Understanding 2D versus
3D AREA-scatter
Regular AREA-scatter works only on a 2D-plane
basis. While this is great for terrains and other
(semi-) flat surfaces, it doesn't work in all cases.
That's why a true 3D AREA-scatter is needed. It is
ideal to scatter naturally on any kind of 3D shape.
It is also useful when scattering on multiple
different floors, where you want every floor to be
different.
Setup
Scene
Import the OBJ 'tutorial_frame.obj'
at this point you are probably wondering why
there aren't any scatter instances appearing on the
sides of the framework. They are actually there,
but they are all standing up so they are
overwritten by the surfaces of the triangles. (This
has to do with the Z-buffer in DirectX)
•
Go to PROPERTIES › NORMAL ON FACE
and make sure it is set to ON.
•
Go to PROPERTIES › RANDOM XYROTATION and enter a value of 20.
•
Go to IMPORT / EXPORT › EXPORT CURRENT
to let it generate the CSV file.
Finalize
Load up 'tutorial_frame.obj' in Octane. Use the CSV
file to scatter 'tutorial_tallgrass.obj' around. Be
careful, the scatter file is called
'tutorial_tallgrass_3d.csv' this time!
Material
Create a new material called 'framework'.
Scatter object
Set the MODE back to AREA SCATTER. Create a
scatter object called 'tutorial_tallgrass_3d'. Enable
it for the material 'framework'.
•
Go to PROPERTIES › POPULATION and set it
to 25000.
Move the camera around a bit and let it generate
the scatter preview. You will notice how the scatter
pattern seems the same along the Z-axis (up-axis).
•
Go to PROPERTIES › 3D and make sure it
is set to ON. It will behave the same as a
regular AREA-scatter object, except it's in
true 3D now (and a bit more demanding).
•
Go to PROPERTIES › RANGE MIN and enter a
value of 50.
•
Go to PROPERTIES › POPULATION and enter
a value of 500.
•
Go to PROPERTIES > SCALE MIN and enter a
value of 50.
figure 09.1
26 of 37
10 | Rain effect using RAY-scatter
Objective
•
The objective of this tutorial is to create a rain
effect in a scene. We will be using the RAY-scatter
type. This scatter type is NOT related to materials,
because it is a 'global' effect. For that reason, there
is just one export function for this type of scatter
object: EXPORT CURRENT.
Scatter object 2/2
Create a scatter object called 'rain_impact'. This
scatter object will be used for the rain particles
that impact the scene.
The rain effect will consist of two RAY-scatter
objects. For rain particles in the air we will use
'rain_drop.obj'. For rain particles that hit the
ground we will use 'rain_impact.obj'.
Understanding RAY-scatter
A RAY-scatter object can be interpreted as particle
system. Rays are casted from the sky, downward
onto the model. Phantom Scatter will test these
rays against the triangle data, and will
automatically detect collisions. You can choose to
either scatter along the paths of these rays or the
impact points on the triangles of the model.
Setup
Scene
Import the OBJ 'rainscene.obj'. This time we need
to do is set Phantom Scatter into the RAY SCATTER
mode. Go to MAIN › MODE and select RAY
SCATTER. The tools menu will have adjusted itself
to the current mode and will only show the
relevant functions to you.
Scatter object 1/2
Create a scatter object called 'rain_drop'. This
scatter object will be used for the rain particles in
mid-air.
•
Go to PROPERTIES › POPULATION and enter
a value of 15000.
Go to PROPERTIES › SCALE MIN and enter
a value of 50.
•
Go to PROPERTIES › POPULATION and enter
a value of 2500.
•
Go to PROPERTIES › SCALE MIN min and
enter a value of 50.
•
Go to PROPERTIES › PLACE ON FACE
make sure it is set to ON.
Finalize
First select the scatter object 'rain_drop'. Go to
IMPORT / EXPORT › EXPORT CURRENT. A file called
'rain_drop.csv' will be created. It may take a little
while because when exporting a RAY-scatter
object, raycasting calculations will be done.
Select scatter object 'rain_impact'. Export this one
too.
Open up Octane Render. I've created a scene for
you already, called 'tutorial_rainscene.csv'. Load it
up. Ignore the message about a missing texture.
Import the CSV files into the scatter nodes and
that's it!
I've noticed myself that the focus point of the
camera is very important when rendering rain
particles. Use the AF tool to select a focus point
and then try playing with the aperture setting
inside your camera. That way you can make really
close rain particles be a bit blurry. It actually kind
of gives them a sense of speed too!
figure 09.2 (taken from Phantom Scatter 1.5)
27 of 37
11 | CURVE-scatter
Introduction
The nature of CURVE scatter objects is different
from AREA, PER-TRI and RAY scatter objects. A
CURVE scatter object contains properties, but is
not actually placed in the scene. Instead, you place
'child objects' of it in the scene. These are not
procedural like the other scatter types, but placed
by you, the end user. This means you will have
different curves placed in each project (or none at
all, ofcourse). That's why you must manage your
different projects using the 'projects' module.
Project management
My recommendation is that you leave the standard
project (called 'default_project') as it is. It gives
you a nice testing arena where you can try things
out without messing with your actual projects.
Curves you place in the scene will be saved
automatically to the corresponding project. If you
delete a project, all the placed curves in that
project will be lost.
Phantom Scatter will remove lines with length of 0
m automatically. Your curve is now placed!
This particular tool will operate indefinately unless
you specifically exit from it (notice the arrows in
the tooltip information forming a continuous loop).
To exit at any time from any tool, press the ESCAPE
button. Do this now.
Understanding the curve
Take a look at your curve. You should see some
instances placed on it already. But it's not really a
curve is it? It's a straight line! This is because of
the curve's control nodes. Move the camera closer
to the curve. Three different types of nodes can be
recognised:
Filled circle
These nodes determine the
begin and end of the curve.
Dot inside circle
These nodes are the control
nodes of the curve and will
determine the trajectory of
the curve.
Let's first load up an OBJ scene. For the sake of the
tutorial, load up 'tutorial_frame.obj'. This model is
very suitable.
Empty circle
These nodes can be selected
to instantly select all 4
nodes that make up a curve.
Go to MAIN › MODE and make sure it is set to
CURVE SCATTER if you haven't done so already.
Node selection
We're going to place a curve. Go to CURVES ›
CREATE BY NODES. This function is a tool. That
means that on the bottom-left corner on the
screen, tooltip information will be displayed to
guide you in your process. You will also notice that
the mouse cursor will have changed to a targeting
crosshair. When this happens, you can either:
Node selection is very important when dealing
with curves. It works similarly to Real-time Strategy
games. Simply click and hold the left mouse button
to create a selection box. Drag the mouse to the
position you want to go, then let go of the left
mouse button. Nodes inside the selection box will
be selected. Be careful with selecting empty circle
nodes.
Curve creation
•
Click on a position on the geometry in the
scene.
•
Snap to an existing node in the scene by
hovering the mouse over one.
Click on a position in the scene. You will have
placed the first node. Notice how the accent in the
tooltip information has changed. Now you must
place the second node. Select another location
with the mouse. You can freely move the camera if
you wish. Do not snap to the first node. This will
create a curve with a length of 0 m.
28 of 37
When just dragging a new selection box, the
previous selection will be gone. However, you can
press & hold the SHIFT button while doing so to
add the nodes in the selection box to the current
selection. You can also press & hold the CTRL
button to subtract nodes from the current
selection.
When selecting nodes, you will notice a 3D gizmo
popping up at the center position of the selection.
This is called the Transform tool. Whenever the
current selection changes, the Transform tool will
be placed at the center of that selection.
Transform tool
The transform tool allows you to move or rotate
the current selection of nodes around.
X, Y, Z
Click and drag one of these to
translate the selection over the X-,
Y- or Z-axis.
RX, RY, RZ
Click and drag one of these to
rotate the selection over the X-, Yor Z-axis.
Origin
Select one of them (2). Now go to CURVES ›
OPPOSE TO CONTROL NODE. Select the control
node of the other curve that you want to oppose
to (3). What this means is that Phantom Scatter will
take the distance of the node-control node (4),
then orient that vector similarly to the control
node you chose. When you first increase this
distance, and then use OPPOSE TO CONTROL
NODE, you can create more fluent curves. It's
entirely up to you. Take a look at figure 11.1.
3
1
2
Click and drag this to move the
selection to a new position in the
scene. When dragging this the
mouse will raytrace the scene so
you can chose a 3D position of your
liking.
4
Creating a connected line
Let's create a second line, connected to the first
line. Go to CURVES › CREATE BY NODES again. Now
instead of clicking a position on the geometry in
the scene, hover the mouse to an existing node
and then place the node at that same position.
Select one of the nodes of the newly created line
and go to CURVES › DELETE.
Now let's do it another way. Go to CURVES ›
CREATE BY NODES and use it to place a curve in
the scene, but don't snap to the existing nodes.
Now use the selection box to select either the
begin or the end node of the curve. You will see
the Transform tool pop up. Click & hold the origin
of the transform tool. Now drag it towards the
begin or end node of the first curve you created.
Let the transform tool snap and release the left
mouse button. The nodes have connected, but the
line now has an actual curve to it. That's because
the control nodes didn't move. Select one of the
nodes of the newly created curve and go to
CURVES › STRAIGHTEN. The control nodes will be
placed so that the line is straight again.
figure 11.1 (taken from Phantom Scatter 1.5)
12 | Custom object
placement using
CURVE-scatter
THIS FUNCTION HAS BECOME OBSOLETE WITH THE
INTRODUCTION OF BRUSH-SCATTER. It's possible to
abuse the CURVE-scatter system to place projectspecific individual instances like chairs or street
lights for example. Simply place some curves and
make sure POPULATION is set to 0 and INTERVAL is
set to a value that far exceeds the lengths of the
curves you will place. I used 100 m. That way only
a single instance per curve will placed. When
doing this, I recommend to put NORMAL ON LINE
to UPWARD, RANDOM Z-ROTATION to OFF and
RANDOM XY-FLIP TO OFF too.
Making the curves continuous
You have two curves placed, but it'd be nice if they
formed a continuous line. This is done by
opposing the control nodes. Determine the
position of the 2 connecting nodes (1) . Each curve
will have a control node near it.
figure 12.1 (taken from Phantom Scatter 1.5)
29 of 37
13 | BRUSH-scatter
Introduction
Visual indentification
BRUSH-scatter allows you to paint instances on
OBJ geometry in your scene. Unlike other scatter
objects, they are not tied to materials in your
scene. You are free to place them where you like.
This makes them ideal for placing plants, but I
would recommend to still use AREA-scatter for
things like lawn grass, which require an even
distribution to look good.
When placing BRUSH-scatter objects, they will
show up as regular instances (a little line). Only
when you use the function BRUSH SINGLE
(CUSTOM Z), will instances display a little green
line to display their orientation.
Project management
Similarly like CURVE-scatter objects, BRUSHscatter objects tie in with the PROJECT system.
This allows you to create different projects, and
have differently placed BRUSH-scatter instances in
each of them. Note that the scatter object
PROPERTIES are cross-project, which means that if
you put some effort in creating a proper setup, you
will save yourself a ton of time. For example, you
can create a scatter object for a nice green shrub,
and be able to place that in all of your projects
with ease.
Placing instances
All you have to do to place instances is select the
scatter object type you want to place, and then
select a tool from the BRUSH TOOLS (see page 1718). Don't forget that the POPULATION property of
a BRUSH scatter object determines how many
instances will be placed when using the function
BRUSH MULTIPLE.
Interface performance
When you paint or erase BRUSH scatter instances,
they will be saved automatically in the Phantom
Scatter folder in your C:/ drive, inside the
respective project folder. When you want to
scatter an insane amount of instances using
BRUSH-scatter, I highly recommend to equip your
PC with an SSD drive so loading/saving happens
extremely fast. Furthermore, the greater the
complexity of your OBJ scene, the more
demanding it will be to place instances -- the
brush tools do raycasting on your geometry to
determine where instances will be placed. So if
you can remove certain unnecessary elements
from the OBJ that you import in Phantom Scatter,
that will really help.
30 of 37
To help you distinguish geometry in your scene,
I've introduced the feature WIREFRAME as a
graphical option. This will outline the geometry so
can clearly see what you're looking at. I highly
recommend to put the ANTI ALIASING function to
4X when using this, so the 3D view of your scene
is very nice to look at. Enabling ANTI ALIASING
means your GPU will have to work a little harder,
but this is only the case when the Phantom Scatter
interface refreshes. As an Octane Render user you
probably have a very powerful GPU anyway so it
won't really matter performance-wise.
14 | Software changelog
Phantom Scatter 1.0 (BETA 5.1)
Phantom Scatter 1.1
•
The entire interface has been redesigned to
be more intuitive and faster to work with.
Productivity is greatly increased.
•
Fixed a memory leak where file reading
wasn't closed after import.
•
•
When creating a new material, you will now
be prompted to enter the name. The new
material will be automatically selected in
the material list.
•
Added a function to be able to duplicate
the currently selected material.
AREA-scatter objects now have the ability
to calculate in true 3d. That means it's now
possible to create scatters on all kinds of
surfaces, even vertical combined with
horizontal ones. This is also useful when
scattering on multiple floors where you'd
want every floor to have a different looking
scatter.
•
Added a function to be able to duplicate
the currently selected scatter object.
•
•
Added a function to be able to import
material names from an OBJ so you don't
have to manually type them.
The AREA-scatter calculations are now
interpolated from the source instead of
using solely the range image -- scatter
quality at very high density/scale is now
drastically improved.
•
Internal improvements in memory
management.
•
•
Added visual-only scrollbars to help
navigate easier in the Materials and Scatter
objects lists.
You can now zoom out more in the 3D
preview window.
•
The function 'Export scatter CSV' has been
renamed to 'Export all AREA / TRI CSV'.
Rewrote the GUI engine to be a lot less
demanding.
•
Added the ability to see multiple AREA
scatter objects in the same preview
window.
New scatter object type: RAY. Cast rays
down onto the scene geometry and detect
impact points. Useful to create rain.
•
New export function: Export single RAY
CSV.
•
RAY-related functions: XY-margin, Z-margin,
X-axis min, X-axis max, Y-axis min, Y-axis
max, Place on face.
•
To prevent performance issues, the amount
of instances in the preview window has
been limited to 10000. The window will
display a message when the limit is hit.
•
A new all-in-one matrix formula, combined
with improved exporting speed, makes up
for a speed boost for AREA-scatter
instances for up to +600% speed
•
•
•
Fixed a problem with XY-rotation.
•
Small improvement in the 0-1 curve on the
scatter source.
•
Improvements to perlin noise-generation
speed.
•
New file system: loading/saving is much
faster but older library files are now
obsolete.
•
When renaming a material, it won't break
the link between material and scatter
objects anymore.
•
Wrote a new software manual, which
includes new tutorials.
Phantom Scatter 1.2
31 of 37
Phantom Scatter 1.3
•
Fixed a slight rendering bug that occured
when selecting scatter objects.
•
New preview mode that allows you to fly
through your OBJ scene and preview your
scatter(s). Works for AREA-type scatter
objects. Select and hold the left mouse
button in the OBJ preview view. Move the
mouse to look around. Use the WASD keys
to move the camera over the XY-plane. Use
the Q and E keys to move over he Z axis.
Hold the SHIFT-button to move faster. Hold
the F key to enable the wireframe.
•
Rotating the camera in the preview window
now locks the mouse in place when
rotating (and hides the mouse cursor) »
New buttons to define the scatter preview
drawing distance in OBJ preview: 10 m, 25
m, 100 m.
preview that gives more insight in how the
scatter is constructed.
•
Interface addition: new 3D map allows you
to move through your OBJ model with more
oversight.
•
Interface addition: compass allows you to
locate the 3D origin more easily.
•
Phantom Scatter is now fully oriented
around the imported OBJ; the square
preview window is now obsolete and
removed.
•
Use WASD + mouse + SHIFT + CONTROL to
fluently move around your OBJ. Left mouse
button is used to select things in the
interface. Right mouse button is used to
look around with the camera.
•
The maximum distance for the preview
inside the OBJ scene can now be altered
(now called preview size): this will also
influence the size of the 3D map, for your
convenience.
•
PER-TRI and RAY scatters can now also be
previewed inside the OBJ scene. Note that
with RAY-scatters, the actual raycasting on
the OBJ will only be done when exporting.
•
The preview window now displays either
the currently selected size or scatter
drawing distance.
•
Fixed a very rare issue where incredibly
small triangles caused a memory problem,
resulting in a crash.
•
Fixed a problem that occured when
importing quads inside OBJs.
•
New OBJ loader: 50-100X faster
performance.
•
The software window can now be
resized/maximized.
•
Ability to enable per-pixel motion blur.
•
Ability to enable anti-aliasing (OFF, 2X, 4X)
•
Ability to enable vertical synchronization.
•
Ability to choose a visual theme (different
colors).
•
Fixed a problem when selecting a scatter
object in the scatter object list.
•
'Import names from OBJ' is replaced by
'create from obj' allowing you to create a
material by selecting a desired material
from the imported OBJ's materials.
Phantom Scatter 1.4
•
Brand new Next Generation interface. Major
overhaul to improve user experience and
prepare for future functionality.
•
Interface elements are now contextual and
change depending on the selected scatter
mode. This means that when 'area scatter'
mode is selected, 'per-tri' and 'ray' scatter
objects will be hidden. This should keep
everything more tidy and organized.
•
Interface windows 'source' and 'range' are
replaced by a 3D (heightmap-like) scatter
32 of 37
•
For broad compatability, material names
may only contain the characters:
0-9 A-Z a-z _
•
New function 'random octaves'.
•
New function 'random range'.
•
Function 'random xy-rotation' is now fixed
and can add even more variety to your
scatters.
•
Exporting is changed and now handled by
the functions 'export current' and 'export
all' for AREA as well as PER-TRI scatter
objects. RAY-scatter objects are covered by
'export current'. Note that these functions
are contextual to which scatter mode is
active and what scatter object is selected.
This is a lot cleaner than the method in
used in 1.3.
•
•
•
•
•
•
For the RAY scatter preview, when 'place on
face' is disabled, instances will come up as
small particles. Otherwise they will come
up as straight lines. Note that with RAYscatters, the actual raycasting on the OBJ
will only be done when exporting.
To ensure good performance, drawing of
Backfaces is disabled on the imported OBJ.
The preview instances will be calculated
when the camera stops moving. Move
around as you wish and when you stop, a
new preview will be calculated
automatically.
If you're using Phantom Scatter and Octane
Render simultaneously, it's a good idea to
let Windows, Octane Render and Phantom
Scatter run on one GPU, and let Octane
Render use the other GPUs available to do
the CUDA calculations.
Hit the spacebar to make the program go
fullscreen. Personally this is my preferred
way to use the program.
Phantom Scatter 1.5
•
Added feature 'preview visibility', allowing
you to hide very demanding scatters from
the preview (but still export them).
•
Added feature 'draw distance' for AREA
scatter objects. Instances will gradually
scale down to 0% at the maximum defined
range. Instances beyond that will not be
exported. A setting of 0 will cause no draw
distance to be calculated at all.
•
Unactive menus will now fade black.
•
Right click to exit menu has been removed;
instead Escape is now used to exit from
menus as well as tools.
•
HUD element added to provide tooltip
information.
•
Fixed the colors and orientation of the 3
origin axis.
•
Decreased camera field of view a little.
•
The HUD now shows when the preview is
done computing.
•
Fixed memory leak issues in PER-TRI and
AREA scatter objects.
•
New scatter object: CURVE scatter, a scatter
type that allows you to place custom
curves in the scene on a per-project basis.
•
New PROJECTS module allows you to
manage your different projects. Every
project will store curve positioning
seperately.
• Added function 'create by nodes',
allowing you to place 2 nodes to form a
curve. Can be placed on geometry or snap
to existing nodes.
•
Added function 'select all', allowing you to
select all nodes in the scene.
•
Added function 'select none', allowing to to
deselect all nodes in the scene.
Fixed something in the EULA, just incase.
33 of 37
•
Added function 'invert selection', allowing
you to select unselected nodes, and
unselect selected nodes.
•
Added function 'straighten', allows you to
turn the current selection of curves into
straight lines.
•
You can now rectangle-select nodes by
clicking and dragging the left mouse
button. Similar to a realtime strategy game.
•
Added function 'align to control node',
allows you align the current selection of
control nodes in the same orientation as
the control node you choose.
•
Hold the SHIFT-key while making a
rectangle-selection to add nodes to the
existing selection.
•
Added function 'oppose to control node',
allows you to align the current selection of
control nodes to the opposite orientation
as the control node you choose. Ideal for
connecting curves seamlessly.
•
Added a popup that displays a
message if a problem occurs.
•
Added scatter object property 'variants' for
AREA, PER-TRI, RAY and CURVE scatter
objects. When set to 2 or higher, CSV
instances will be divided among the
variants on export. '_variantX' will be
added to CSV filenames, where X is the
variant index.
•
It has come to my attention that not
everyone always carefully names their
materials (for AREA and PER-TRI scatter
objects). For that purpose I'm now
introducing the tool 'rename from OBJ',
which allows you to simply pinpoint a face
in the scene, and the selected material will
be renamed to the material of the face you
just selected.
•
Added 'draw distance' property for RAYscatter objects.
•
Added 'seed' property for RAY scatter
objects, with the function 'seed' to set a
custom seed.
•
Added function 'random seed' for RAY
scatter objects.
•
Fixed a problem with material renaming.
•
Added module 'materials' to RAY scatter
objects.
•
•
Hold the CTRL-key while making a
rectangle-seleciton to remove nodes to the
existing selection.
When one or more nodes are selected, the
Transform tool will appear. Use the
clickable axis/rotation/origin elements.
•
Transform tool: click and hold one of the
axis elements to drag along a respective
axis (X, Y, Z).
•
Transform tool: click and hold one of the
rotation elements to rotate along a
respective axis (RX, RY, RZ).
•
Transform tool: click and hold the origin
element to drag the Transform tool to a
new position on the geometry, wherever
you want it. Takes into account the 'node
offset' property of the currently selected
scatter object. Also has the ability to snap
to existing nodes.
•
Added function 'position transform tool',
allows you to position the transform tool
on a position on the geometry or an
existing node.
•
•
•
Added function 'copy', allows you to copy
the current select of bezier curves into
computer memory.
Added function 'paste', allows you to paste
the copied bézier curves in the scene.
Copy/paste is ideal for quickly duplicating
curves or transferring them into another
scatter object and/or project.
Added function 'delete', allows you to
delete the current selection of curves.
34 of 37
•
Added function 'scatter disable' to exclude
scatter objects on certain materials. This is
only applicable when 'place on face' is set
to 'on'.
•
•
Fixed division by 0 error for RAY-scatter
objects. The orientation angle of RAYscatter objects is now limited between 45135. This prevents problems and still
provides enough orientation freedom.
Phantom Scatter 1.6 (most recent)
•
•
Added function 'directory', allowing you to
export the CSV files either alongside the
OBJ, or to a directory of your choosing. The
directory chosen will be saved to the
options file. Note: due to WinAPI being the
worst, I can't make it snap to the current
export directory for your convenience.
Added function 'random z-variation' for
AREA, PER-TRI and CURVE scatter objects.
•
Added function 'weighted scatter' for AREA
scatter objects. Turning this on will enable
a modifier will make the random
minimum/maximum scale take the power
of the source (perlin noise) into account.
•
Added functions 'align x', 'align y' and 'align
z' to align the nodes of CURVE scatter
objects to a point on the geometry in the
scene or an existing node.
•
•
•
Fixed information text for function 'scatter'.
•
You will now be able to set max 20 variants
instead of max 10 for function 'variants'.
•
Added the foundation for a new scatter
type: BRUSH-scatter. The BRUSH scatter is
used to custom-paint instances in your
scene, wherever you want. You are able to
spray instances randomly as well as place
individual ones. The BRUSH scatter objects
have support for weighting based on
perlin noise (octaves).
•
Added the following properties for BRUSH
scatter: 'population', 'area scale', 'draw
distance', 'collision radius', 'scale min',
'scale max', 'normal on face', 'random
z-rotation', 'random z-variation', 'random
xy-flip', 'random xy-variation', 'variants',
'weighted scatter', 'octve start', 'octave end',
'random octaves', 'seed, 'random seed'.
•
Added the following tools for BRUSH
scatter: 'brush multiple', 'brush single',
'brush single (custom z)', 'erase multiple',
'move single', 'match properties'.
•
You will now be given a confirmation
popup message whenever you export CSV.
It will also display how many instances
have been exported.
•
Upgraded popup message graphics.
•
Upgraded 3D graphics quality of the
interface.
•
You will now be given a popup message
that warns you when trying to add a scatter
object with a name that already exist in
another scatter type. This also applies to
material and project names.
Function 'random xy-rotation' has been
renamed to 'random xy-variation'.
•
Added function 'flip origin' for CURVE
scatter objects, allowing you to flip the
origin of the curve. Useful when using the
'interval' property, because the very first
instance starts at the origin.
Added function 'collision radius' for AREA
and CURVE scatter objects. Upon export,
instances are put in the 'collision pool',
where instances check their radius against
each other to check if they will be removed
or not. Useful to prevent instance overlap.
When 'collision radius' is set to '0', collision
checking is ignored.
The problem where the software crashed
when clicking in screen 2 when the
software was fullscreen in screen 1 has
been fixed.
35 of 37
•
Add function 'archicad fix'. Apparently
ArchiCAD cannot export single sides faces
(placed for PER-TRI scatter). This function
prevents downward pointing instances
from exporting, effectively removing the
unnecessary doubles.
•
Fixed the host property of curve objects
when renaming their host scatter object.
•
Deleting a scatter object instance will
delete all brush instances that use this
scatter object as host in all of your projects.
•
Removed function 'visual theme', to be
replace by a single cohesive and
representative style.
•
Added feature 'wireframe', this displays the
wireframe of close-up geometry in your
OBJ model. Helpful for precise BRUSHscattering. The drawing distance of the
wireframe ties in with the preview draw
distance setting.
36 of 37
Final word
I hope that Phantom Scatter technology provides a
quick & easy instancing solution in your rendering
workflow. My aim is to provide a high quality
product. The software is designed to exceed in areas
where Octane Render and modeling tools fall short.
To fill in a gap in the workflow.
The development team consists of three people:
Guus Thissen (lead developer), Jack McCallum (DLL
support) and Zachary Reedy (DRM support).
If you have any suggestions or feature requests,
please contact me at [email protected].
Guus Thissen
Phantom Scatter lead developer
37 of 37