OCEANSPLASHฎ is a registered trademark ฉ 2011. All rights reserved.
Warning: This plug-in is protected by copyright law and international treaties. Unauthorized reproduction or distribution of this program, or any portion of it, may result in severe civil and criminal penalties, and will be prosecuted to the maximum extent possible under the law.
Content
1..A NOTE FROM THE AUTHOR
2 ..OCEANSPLASH
..2.1) INSTALLATION
..2.2) ABOUT OCEANSPLASH
..2.3) OCEANSPLASH CREATES INDEPENDENT ENGINES
..2.4) INTERACTIVE INTERFACE
2.4.1) Interactive Interface Build an oSp-Engine
2.4.2) Interactive Interface Edit an oSp-Engine
..2.5) OSP ENGINE FOR AN OCEAN
..2.6) OSP ENGINE FOR A POND
..2.7) TRANSFORMATION
2.7.1) Translation
2.7.2) Rotation
2.7.3) Scale
3..PREPARING TO BUILD AN OSP-ENGINE
..3.1) Making a shell for your object
..3.2) RULES
4..How to create an oSp-object
..4.1) How to create curve emitters
..4.2) How to create splash for an object
..4.3) Why check surface direction?
5.."BUILD AN OSP ENGINE" OPTIONS
..5.1) MENU
5.1.1) Reset All
5.1.2) Help Menu
..5.2) Resolution <non Editable>
..5.3) Emitter Properties
5.3.1) Emitter Properties for Curve
..5.3.1-1. Create Controller
..5.3.1-2. Make Original curve as Controller
..5.3.1-3. Make Duplicate curve as Controller
..5.3.1-4. Hide floating curve
5.3.2) Emitter Properties for Curve & Surface
5.3.3) Kill Sticky(foam) particles
5.3.4) Foam Multiplier
5.3.5) Splash Intensity Multi
5.3.6) Splash Noise
5.3.7) Splash Chaos
5.3.8) Splash Bias
5.3.9) Force nParticle
<non Editable>5.3.10) Gravity
5.3.11) StartFrame-EndFrame
5.3.12) Default Emit Rate
5.3.13) Emit Offset
5.3.14) Speed
..5.4) Dynamic Properties
5.4.1) Dynamics on/off <non Editable>
5.4.2) Max Particle Count
5.4.3) Max Foam Count
5.4.4) Floating Trail Lifespan
5.4.5) Floating Foam Lifespan
5.4.6) Buoyancy
5.4.7) Particle Density
5.4.8) Viscosity
5.4.9) Air Damp
5.4.10) Water Damp
..5.5) Collision Properties
5.5.1) Collision on/off <non Editable>
5.5.2) Tessellation
5.5.3) Resilience
5.5.4) Friction
5.5.5) Offset
6..EDIT OSP ENGINE (INTERFACE)
..6.1) MENU
6.1.1) Edit
..6.1.1.1) Reset All to Default
..6.1.1.2) Save Preset
..6.1.1.3) Load Preset
6.1.2) Help
..6.1.2.1) Help
..6.1.2.2) About
..6.2) Emitter Properties
6.2.1) Enable Engine
6.2.2) Kill Sticky(foam) particles
6.2.3) Foam Multiplier
6.2.4) Splash Intensity Multi
6.2.5) StartFrame-EndFrame
6.2.6) Default Emit Rate
6.2.7) Emit Offset
6.2.8) Speed
6.2.9) Gravity
..6.3) Particle Properties
6.3.1) Max Particle Count
6.3.2) Max Foam Count
6.3.3) Particle Size
6.3.4) Foam Size
6.3.5) Floating Trail Lifespan
6.3.6) Floating Foam Lifespan
6.3.7) Buoyancy
6.3.8) Particle Density
6.3.9) Viscosity
6.3.10) Splash Noise
6.3.11) Splash Chaos
6.3.12) Splash Bias
6.3.13) Air Damp
6.3.14) Water Damp
..6.4) Collision Properties
6.4.1) Tessellation
6.4.2) Resilience
6.4.3) Friction
6.4.4) Offset
7..SAVE/OPEN
..7.1) SAVING
..7.2) OPENING A SAVED FILE
..7.3) OPENING AN OSP FILE
8..EXPORT AN OSP OBJECT
..8.1) Selection made easy
..8.2) EXPORT SELECTION (SINGLE/MULTIPLE OBJECTs)
8.2.1) Exporting general oSp-Engines
8.2.2) Exporting nParticle oSp-Engines
..8.3) EXPORT ALL
9..REMOVE FROM OCEANSPLASH
10..IMPORTING OSP OBJECT
11..PROBLEMS AND THE WORK AROUND
1..A NOTE FROM THE AUTHOR
Hello every one! My name is Jahangir Hussain. I am from Bangalore, India. I am the sole author of this plug-in. I have a teaching experience in animation of about 15 years. In these years I have framed course curriculums for Maya / 3DS Max, and complete 3D related portions of BFA in animation for University of Mysore.
OceanSplash is a plug-in for Maya. This plug-in assigns an oSp-Engine to the chosen nurbs surface. The job of this engine would be to detect surface contact(ocean/Pond) and generate a splash depending on the intensity of its impact. The good thing about this engine is that, once it is assigned to an object, it no more depends on its plug-in to function. This means, a saved file that has oSp-objects can open and function properly in any computer that has Maya(of course) but need not have an oceanSplash plug-in installed to it.
You may be wondering, why did I make this plug-in so called oceanSplash in the first place. And what can oceanSplash do that you can not?
The idea is to save your time. Trust me, creating a splash demands a lot of R & D, Physics, expressions and patience at the cost of time. And if any of these four ingredients is missing, your splash effect is going no where.
At times you may need to work on projects that has some objects that need to interact with an ocean in the scene. Like for instance, the pillars of a bridge across a river, a moving boat, a fish that jumps off from the ocean, a plane crashing into the ocean etc. Splashes are vital as special effects in such cases. Without these splashes the animation would really look awkward and confusing. But making these splashes could be painstaking and also will cost you a lot of time. Since these splashes are just special effect and not the key animation you may not be interested in working on it too much or you may even try avoiding the scenario of an interaction with the ocean as far as possible or may by altogether.
I have also come across a lot of students who use ocean and Ponds in there projects and spend a lot of time and struggle to create splashes on them. If the splashes are not good, they keep editing, and editing until they have to compromise with a final version and rush through rest of the project because THE DEADLINE HAS ARRIVED!!.
OCEANSPLASH creates splashes for you with in few seconds.
THATS .. ALL !!.
If you need an object to create splashes on a water source, you just have to finish with your animations for that object and finally assign an oceanSplash engine(also called oSp-Engine) to it, and there you have some good-looking splashes.
You can even switch off these engines when you are working on something else in the scene and do not want these engines to simulate splashes every time it detects a contact with the ocean surface. Do not forget to switch them back to ON before you start the batch render process
Hope you find OCEANSPLASH useful in your work and please feel free to report bug/s you may find while using this plugin or your experience, suggestions about this plug-in in general via email.
The following is my email Id.
jhscomputerarts@yahoo.com
2..OCEANSPLASH
2.1) INSTALLATION
OCEANSPLASH has two files that work in coordination with one another. These files are oceansplash.mel and oSpMaya.mll.
Copying files to their respective folders:
1) Copy oceansplash.mel and oceansplash folder to Mayas user script folder.
For example:
C:\Users\JHS\Documents\maya\2010\scripts\
2) Copy oSpMaya.mll to the bin\plug-ins folder.
For example:
C:\Program Files\Autodesk\Maya2010\bin\plug-ins\
3) Open Maya
4) Open Window->Settings/Preferences->Plug-in Manager
5) Tick the check box Loaded and Auto Load for oSpMaya and close the Plug-in Manager.
You should see oceanSplash menu appear in the Menu bar right before the help menu.
2.2) ABOUT OCEANSPLASH
OceanSplash is a plug-in for Maya. The plug-in uses Maya resources to build an engine that generates splashy, floating particles for an object at every ocean or pond surface contact. OceanSplash generates two types of particles, one at every contact called oSp_p and the other at a hard contact called oSp_f. oSp_p particles stay for a longer time and creates a trail for moving object on the surface. Osp_f is the foam that stays for a very short time on a water surface. The amount of foam particles generated depends on the intensity of impact between the object and the ocean. The plug-in can also build an engine using nParticles in place of general oSp_p and oSp_f particles, and names them as oSp_nP and oSp_nF.
This plug-in accepts only NURBS surfaces and NURBS curves to build an engine.
One can use this plug-in to create splashes for objects interacting with ocean like
1) A fish jumping off and falling back into an ocean
2) Ships or submarine at ocean surface
3) Sea shore effect where particles are generated at ocean and shore contact
4) Plane crashing into sea
5) And the list goes on..
You can assign as many objects as you like in a scene to oceanSplash.
2.3) OCEANSPLASH CREATES INDEPENDENT ENGINES
OceanSplash creates an independent engine for each of the assigned objects in following sense.
1) You can assign n number of objects in a scene to oceanSplash and an engine of one object would not interact with an engine of another in a scene unless they are using nParticles. nParticles by default interacts with all nDynamics nodes.
2) The oceanSplash plug-in does not use any node alien to Mayak, i.e. no dependency nodes are introduced by this plug-in. The idea is to make your file work in Maya application any where in the world, without you needing to carry around the plug-in that created it. Since this plug-in uses Maya resources alone to build an oSp-Engine for an object, the oSp-Engine there after can work independently and does not contain any new type of a node to look for. This means, the Maya scene files (.mb, .ma) that contains oSp-objects are portable and can run properly in any other computer without needing to install its plug-in.
2.4) INTERACTIVE INTERFACE
OceanSplash has two interfaces, one is Build an oSp-Engine and the other is Edit an oSp-Engine Interface. Both the interfaces detect the selections on view port.
2.4.1) Interactive Interface of Build an oSp-Engine
A) Seeks for valid objects in active selection list. As soon as a valid object along with an ocean or a Pond is detected in the selection list, the Generate and Apply buttons are enabled.
B) Interface activates only those options that are related to the object type in a valid selection. That is, if a nurbs curve is the object, the options that are related to making an engine for a curve is enabled and if a nurbs surface is selected, then the options that are related to making an engine for a surface is enabled.
2.4.2) Interactive Interface Edit an oSp-Engine
A) When Edit interface is active, the first oSp-object found in a selection will replace all other objects in an active Selection and the settings in its oSp-Engine will be displayed on the interface.
B) The Interface directly connects to the oSp-Engine of the selected oSp-object. Any changes made to the settings on the interface will immediately alter the internal settings of the oSp-Engine.
C) Selecting a different oSp-object in the view port, will instantly reflect on the interface. That is, the name of the currently selected oSp-object will display on the title area and all the property settings of the previously selected oSp-object will be replaced by the properties of the newly selected oSp-object. If the newly selected object is not an oSp-object, the interface will close.
2.5) OSP ENGINE FOR AN OCEAN
Engines created for an ocean is non-editable and will stay as an oSp engine for an ocean.
You can not import an oSp-objects has this type of engine to a Pond of the currents scene. These engines assume that the ocean level is at Zero of the Y-axis. Thus all the interaction will occur at this elevation alone, but the advantage is that, there are no boundaries along the X-axis and the Z-axis for the ocean within which the oSp-object is limited. That means the oSp-object for ocean, will continue to generate the splashes no matter how far the object is but only at the ocean level.
2.6) OSP ENGINE FOR A POND
Engines created for a Pond will stay as an oSp engine for a Pond. Just like in the case of oSp-Engines for an Ocean, you can not import an oSp-object that has this type of engine, to an Ocean of the currents scene.
The limitation of this engine is that, it can create splashes within the boundaries of a Pond where a wave could be detected. The advantage is that, unlike oSp engine for an Ocean, these engines adopt the position of its Pond in the scene. That is.. if the position of the Pond in the current scene is different from the position of the Pond in the import file, and you have imported the oSp-object to the Pond of the current scene, then the engine of the imported oSp-object will interact with the current position of the Pond. Even if you have a Pond that is animated, the related oSp-Engine will detect its exactly position. This does not mean that the imported oSp-object will inherit the position of the related Pond, but it would knows where its fluid source is. The oSp-object will also retain its own animation or position in the global space which was at the time of its export. However you can manipulate its position to where ever you like in the scene later.
2.7) TRANSFORMATION
All the transformation of an oSp-object is free to be manipulated or keyed.
2.7.1) Translation
All the translation values can be manipulated or keyed.
2.7.2) Rotation
All the rotation values can be manipulated or keyed.
2.7.3) Scale
All the scale values can be manipulated or keyed.
IMP: One important thing you should keep in mind when manipulating this value is the resolution factor, that was set at the time of assigning the object to oceanSplash.
OceanSplash calculates the size of the object regardless of its scale values at the time of building an engine for it, but there after the resolution factor is held by the scale values of the object. Changing this value will simply stretch or compress the resolution, giving a reverse result. That is.. Increasing scale values will decrease resolution, and reducing scale values will increase resolution.
3..PREPARING TO BUILD AN OSP-ENGINE
3.1) Making a shell for your object
Create a shell object on top of the actual model unless your object has a single NURBS surface.
Eg: nurbsSphere, nurbsPlane etc. or the ones created using Revolve, Square, Bi-rail, loft etc. Even in such cases, you must make sure that the history is deleted.
Create a shell for polygon models or non-single Nurbs surfaces (groups that contain many Nurbs surfaces made to look like a single object eg: nurbsCube, nurbsCone, Nurbs model with stitched surfaces).
Steps involved in making a shell object for a model.
You can use the contours of your model to create curves around your model and later loft them to form a single surface. You could also use primitive objects with single surface that match the basic shape of your model and modify the shape of it to closely fit the shape of your model.
(for your convenience, rename it as objectname + _Shell).
Shell object for nParticles.
Nurbs are meant to form smooth curvature between CVs and nParticle can not pick the Nurbs curvatures. If you are planning to use nParticles in an oSp-Engine, then make sure that your shell object has enough isoparms to mark these surface curvatures.
Delete history after creating the shell.
You do not want your shell object to recall its ancestors at the time of work !, do ya?
Position the shell object
There are two cases of model behavior that needs to be treated differently.
1) Object Animation
In object animation, the shape of an object does not deform. The entire animation is based on the transformation of an object. That is.. the translate, rotate and scale values of the transform node of the object. Eg: Animation of models like Vehicles, Planes, Ball, etc.
In this case you need to parent the shell to the main model and align the shell such that the shells position and shape overlap with the model.
2) Character animation
The animation of a character involves both the transformation of the object (translate, rotate and scale values) and the deformation of its shape, where the shape of the object may change between frames. Eg: Animation of character models like Human, Animal, Fish, Ghost etc. (Do Ghosts create splashes on a water surface? Well, that depends on your creativity!! but their shape certainly deforms.)
In character models, the model could be rigged using either joints or just deformers.
If your model is rigged using joints, align the shell object to the model(you need not parent the shell to it) and apply the same rig to the shell. (select root joint + shell object and bind)
On the other hand, if the shape of your model is controlled by a deformer, align and parent the shell to the model and also connect the deformer to the shell as well(Relationship/Deformer Set Editor). In this case the transform node of the model will keep the shell object aligned during animation and the deformer will control the shape of the shell object similar to that of the main model.
Hide the Shell object
The purpose of a shell object is just to create splash on the water surface. If the main object is directly assigned to oceanSplash then there is no meaning in hiding it from view. If the main object is not assigned for some reason and a shell is used instead to assign the oSp-Engine, then it is better to turn the primary visibility, cast shadow, receive shadow, visible in reflection, visible in refraction etc to off. It would be a good idea to put your shell object in a separate layer which can be turned on and off as needed.
3.2) RULES
There are very few rules since oceanSplash gives a very little room for mistakes.
i) oceanSplash accepts only a single Nurbs surface as an object.
Accepted primitive objects: nurbsSphere, nurbsPlane, nurbsTorus. (single surface objects)
Unaccepted primitive objects: nurbsCube, nurbsCylinder, nurbsCone. ( multiple surfaces grouped to form objects)
ii) Make sure the history of the NURBS object is deleted before assigning an oSp-Engine.
iii) You cannot import an oSp-object that belongs to an ocean to a pond in the scene or vise-versa.
4..How to create an oSp-object
There are two oSp-object types that work in two different ways,
1) Curve emitter : This curve emits particles that floats on the ocean/Pond surface and form the shape of the curve emitter .
.
2) Splash for an object: Splash is generated when the object interacts with ocean/Pond surface. Two types of floating particles work in coordination with each other to illustrate a splash effect.
4.1) How to create curve emitters:
To make a curve generate floating particles:-
1. Select a nurbsCurve
2. Select an oceanPreviewPlane or a Pond
3. Open oceanSplash menu and select Build oSp-Engine
4. Change default settings if needed.
5. Hit Generate button to build oceanSplash engine for the selected curve.
-or-
Hit Apply if you do not want the dialog box to close after building an engine
Note: Use Force nParticle option, if you want the engine to emit nParticles.
4.2) How to create splash for an object
To make an object create splashes at ocean surface, do as follows:-
1. Select the single NURBS Surface that you want to assign to oceanSplash
(Do not select a group that makes a NURBS object. For eg: Cube primitive)
2. Select the oceanPreviewPlane or its transform node.
3. Select oceanSplash menu
4. Select Build an oSp engine menu option
5. Make changes to the default settings if needed
6. Hit Generate or Apply button.
7. Check the surface direction in the Confirm Surface Direction window that appears. This window docs a viewport that shows the selected object with the current surface direction in shaded mode and allows you to navigate the viewport to check. You can use all the navigations like Zoom, Pan, Tumble to view the object from any direction. The window also has two buttons called Reverse Normals, and Proceed. Use Reverse Normals button if the surface direction is wrong. Hit Proceed button to continue with the displayed surface direction.
Note: Use Force nParticle option, if you want the engine to emit nParticles.
Warning: The viewport in Confirm Surface Direction window is only for verification purpose and does not allow modification of the model. An attempt to do so may cause unpredictable results.
4.3) Why check surface direction?
Surface direction or face normals must be checked before assigning the object to oceanSplash. The entire simulation depends on the surface direction of the object. Changing the surface direction after assigning to oceanSplash will not change particle behavior. To correct this mistake, you will have to remove the object from oceanSplash and regenerate a new oSpEngine for the object while correcting its surface direction during the process.
5.."BUILD AN OSP-ENGINE" OPTIONS
(All the options marked as
<|non Editable>, cannot be edited after oSp-Engine is generated)5.1) MENU
5.1.1) Reset All
This menu option resets all values to default.
5.1.2) Help Menu
Help Opens this window.
About Opens a window containing brief information about this plug-in.
5.2) Resolution
<non Editable>This option sets the level of details the oSp-Engine reads from the ocean surface. Higher values will give better accuracy but at the cost of performance, lower values will reduce details but increases system performance. Increase this value only if you need some close up shots. If you are assigning many objects to oceanSplash in a scene, then it is advisable to keep this value to default 0.2 for all objects except for those which really needs some close ups.
5.3) Emitter Properties
Two type of emitters can be created using oceanSplash with varying properties
One is for emitting curves, and the other is for Surfaces.
5.3.1) Emitter Properties for Curve
Curves can be made to emit floating particles. The emitted particles collectively forms the shape of the emitter curve.
5.3.2) Emitter Properties for Surface
5.3.3) Kill Sticky(foam) particles
If you select this option, oceanSplash will kill any foam particle that sticks on to the object.
5.3.4) Foam Multiplier
This option will multiply the amount of foam creation. Default is 1 and maximum is 4.
(Note: Since a lot of memory will be used if the multiplier value is high, it is advisable to create the splash with default values and later edit using Edit menu if desired.)
5.3.5) Splash Intensity Multi
This option increases or decreases the intensity of a splash when an oSp-object contacts a water surface. Increase this value if you want the splash to go more high and decreases it otherwise.
5.3.6) Splash Noise
Noise attribute will give an uneven shape to the splash. The splash will have particles moving with random velocity.
5.3.7) Splash Chaos
Chaos attribute makes the splashing particles move in different directions rather than moving just vertically up.
5.3.8) Splash Bias
Splash bias makes a splash look denser at its base and thinner at its peek. This attribute takes a value between 0 to 1.
5.3.9) Force nParticle
<non Editable>This option is available for both NURBS surfaces and NURBS curves. Using this option will automatically deactivate the collision options as nParticles has its own set of collision properties.
5.3.10) Gravity
Gravity option can be used to control the splash timing. This is useful to depict the size of an object. Like for example, a splash created by a huge object that falls into an ocean would appear to be slow, were as a splash created by a small object falling into a cup of tea would look rather quick.
5.3.11) StartFrame-EndFrame
This field take the start frame and stop frame values for the emitter. You can make the emitter to start and stop as many times as you like. The following are few examples of valid input:
1
(The emitter will start emitting at frame 1)
1-10
(The emitter will start at frame 1 and stop emitting at frame 10)
4-15 40
(The emitter starts emitting from frame 4 till frame 15 and starts emitting again from frame 40 on wards)
4-15 40-80
(The emitter does exactly like in the previous example except that the emitter stops at frame 80)
5.3.12) Default Emit Rate
This option allows you to select the amount of emission rate. Default is 50 for surfaces and 5 for curves
Give a value between 2 - 5 when working with nParticles initially
Note: Keep this value low if your object is supposed to be in contact with the ocean/Pond surface for longer than 40 to 50 frames because if the Emit Rate is high, a lot of particles will gush into the scene resulting in low system performance.
5.3.13) Emit Offset
This option defines the emission offset from the objects' surface.
5.3.14) Speed
This option sets the speed of particle emission.
5.4) Dynamic Properties
5.4.1) Dynamics on/off
<non Editable>If this option is checked, oceanSplash will create an engine that generates floating particles using advanced dynamics. These floating particles are capable of splashing and floating on the ocean surface. These particles respond to external fields as well.
If this option is unchecked, oceanSplash will create an engine which will generates particles that simply stick onto the ocean surface but still keeps the options open for its particles to be influenced by external fields. Tick off this option if the interactive object does not require splashes or if the object is far off for the particles dynamic movements or a splash to be visible.
Using a lot of objects with dynamics ticked, will reduce the system performance considerably. Thus it is recommended that in a scene where you have a lot of objects that need oceanSplash, unchecked this option for those objects that needs minimal splashes.
Note: This option is only available at creation time and can not be edited using Edit menu.
5.4.2) Max Particle Count
This option simply set the maximum allowed oSp_p or trail particle count at a time.
5.4.3) Max Foam Count
This option simply set the maximum allowed foam particle count at a time.
5.4.4) Floating Trail Lifespan
This option sets the lifespan of the trail particle on water surface.
5.4.5) Floating Foam Lifespan
This option sets the lifespan of the foam particle on water surface.
5.4.6) Buoyancy
This option sets the buoyancy value for calculating the particle dynamics
- Buoyancy option is available if the Dynamics option is checked.
- option can be edited using Edit menu, only if Dynamics option was selected when generating the engine .
5.4.7) Particle Density
This option define the density of the particle
- option is available if the Dynamics option is checked.
- option can be edited using Edit menu, only if Dynamics option was selected when generating the engine .
5.4.8) Viscosity
This option define the viscosity of ocean.
- option is available if the Dynamics option is checked.
- option can be edited using Edit menu, only if Dynamics option was selected when creating the engine .
5.4.9) Air Damp
This option slows down the movement of a particle above water.
5.4.10) Water Damp
This option slows down the movement of a particle under water.
5.5) Collision Properties
5.5.1) Collision on/off
<non Editable>This option toggles collision on/off
Collision is not available for curve emitters and when nParticle option is checked.
5.5.2) Tessellation
Sets the tessellation value of the object for collision.
- option can be edited using Edit menu, only if Collision option was selected when creating the engine .
5.5.3) Resilience
Sets the Resilience value of the object for collision.
- option can be edited using Edit menu, only if Collision option was selected when creating the engine .
5.5.4) Friction
Sets the Friction value of the object for collision.
- option can be edited using Edit menu, only if Collision option was selected when creating the engine .
5.5.5) Offset
Sets the Offset value of the object for collision.
- option can be edited using Edit menu, only if Collision option was selected when creating the engine .
6..EDIT OSP ENGINE (INTERFACE)
Edit Menu is fully interactive with the engine of the selected oSp-object. It wires directly to the objects oSp-Engine. Any changes made here will change the values in the engine. If you select another oSp-object from the viewport, the settings of the currently selected oSp-objects engine will reflect on the interface instantly.
To edit the settings of an object, select the object(assigned to oceanSplash) and select the Edit an oSp-Engine option from oceanSplash menu.
6.1) MENU
6.1.1) Edit
6.1.1.1) Reset All to Default
Resets all the values to default.
6.1.1.2) Save Preset
Use this menu option to save your settings as a preset.
To save a preset:
1) Select an oSp-object
2) Open oceanSplash Edit Interface
3) Open Edit menu and select Save Preset menu option
4) Enter a suitable name to describe your preset
5) Hit Save Preset button
6.1.1.3) Load Preset
Choose a saved preset for an oSp-object
To use a preset for an oSp-Engine
1) Select the oSp-object
2) Open oceanSplash Edit Interface
3) Open Edit menu and select Load Preset menu option
4) Select a preset from a list of saved presets
6.1.2) Help Menu
6.1.2.1) Help Opens this help file in an internet browser.
6.1.2.2) About
Opens a window containing brief information about this plug-in.
6.2) Emitter Properties
6.2.1) Enable Engine
If this option is disabled, the oSp-Engine for the selected object, switches off. This option is useful when you are finished with an objects simulation settings and are working on some thing else in the scene.
6.2.2) Kill Sticky(foam) particles
If you select this option, oceanSplash will kill any foam particle that sticks on to the object.
6.2.3) Foam Multiplier
This option will multiply the amount of foam creation. Default is 1 and maximum is 4.
(Note: Increase this value only if necessary.)
6.2.4) Splash Intensity Multi
This option increases or decreases the splashing effect at the time of oSp-object to ocean/Pond surface interception.
6.2.5) StartFrame-EndFrame
This field take the start frame and stop frame values for the emitter. You can make the emitter to start and stop as many times as you need. The following are few examples of valid input:
1
(The emitter will start emitting at frame 1)
1-10
(The emitter will start at frame 1 and stop emitting at frame 10)
4-15 40
(The emitter starts emitting from frame 4 till frame 15 and starts emitting again from frame 40 on wards)
4-15 40-80
(The emitter does exactly like in the previous example except that the emitter stops at frame 80)
6.2.6) Default Emit Rate
This option allows you to select the amount of emission rate.
Note: Keep this value low if your object is supposed to be in contact with the ocean/Pond surface for longer than 40 to 50 frames because if the Emit Rate is high, a lot of particles will continue to gush into the scene resulting in low system performance.
6.2.7) Emit Offset
This option defines the emission offset from the objects' surface.
6.2.8) Speed
This option sets the speed of particle emission.
6.2.9) Gravity
Gravity option can be used to control the splash timing. This is useful to depict the size
of an object. Like for example, a splash created by a huge object that falls into an ocean would appear to be slow, were as a splash created by a small object falling into a cup of tea would look rather quick.
6.3) Dynamic Properties
6.3.1) Max Particle Count
This option simply set the maximum allowed trail particle count at a time.
6.3.2) Max Foam Count
This option simply set the maximum allowed foam particle count at a time.
6.3.3) Particle Size
By default, this value is set to 0.2 in an oSp-Engine. You can change this value to increase/decrease the size of the particles. This option is handy in situations like:
1) The splash created by an oSp-object needs to look more dense but not at the cost of slow system performance caused due to higher Emit Rate.
2) Splash is supposed to be a distant event where increasing the Emit Rate is a bad idea.
In such cases, you can try setting Particle Size value a bit higher to make a splash more visible.
6.3.4) Foam Size
By default, this value is set to 0.18 in an oSp-Engine. You can change this value to increase/decrease the size of the particles. This option is not available for curve emitters only.
This option will be disabled for oSp-object(curve).
6.3.5) Floating Trail Lifespan
This option sets the lifespan of the trail particle on water surface.
6.3.6) Floating Foam Lifespan
This option sets the lifespan of the foam particle on water surface. The foam lifespan should be always less than that of trail.
6.3.7) Buoyancy
This option sets the buoyancy value for calculating the particle dynamics
- Buoyancy option is available if the Dynamics option is checked.
- option can be edited using Edit menu, only if Dynamics option was selected when generating the engine .
6.3.8) Particle Density
This option define the density of the particle
- option is available if the Dynamics option is checked.
- option can be edited using Edit menu, only if Dynamics option was selected when generating the engine .
6.3.9) Viscosity
This option define the viscosity of ocean for this engine alone. i.e. oceanSplash will use this value to calculate dynamics for the selected object only.
- option is available if the Dynamics option is checked.
- option can be edited using Edit menu, only if Dynamics option was selected when creating the engine .
6.3.10) Splash Noise
Noise attribute will give an uneven shape to the splash. The splash will have particles moving with random velocity.
6.3.11) Splash Chaos
Chaos attribute makes the splashing particles move in different directions rather than moving just vertically up.
6.3.12) Splash Bias
Splash bias makes a splash look denser at its base and thinner at its peek. This attribute takes a value between 0 to 1.
6.3.13) Air Damp
This option slows down the movement of a particle above water.
6.3.14) Water Damp
This option slows down the movement of a particle under water.
6.4) Collision Properties
6.4.1) Tessellation
Sets the tessellation value of the object for collision.
- option can be edited using Edit menu, only if Collision option was selected when creating the engine .
6.4.2) Resilience
Sets the Resilience value of the object for collision.
- option can be edited using Edit menu, only if Collision option was selected when creating the engine .
6.4.3) Friction
Sets the Friction value of the object for collision.
- option can be edited using Edit menu, only if Collision option was selected when creating the engine .
6.4.4) Offset
Sets the Offset value of the object for collision.
- option can be edited using Edit menu, only if Collision option was selected when creating the engine .
7..SAVE/OPEN
7.1) SAVING
A scene file that has oSp-objects can be saved in ASCII or Binary file types like any other file. Saving files with oSp-objects has the following advantage:
1) . The file does not need OCEANSPLASH plugin to open. The oSp-Engines are portable and can work in Maya in any other computer.
2) . Files containing oSp-objects can be opened in Maya of any version by using -ignore version option in file>open dialog box like any other Maya file.
7.2) OPENING A SAVED FILE
You can open the following directly in Maya.
1) Files with oSp-objects that were saved using ASCII or Binary formats.
2) Files exported by OCEANSPLASH plugin as .osp .
3) Files that were saved in a higher version (by using ignore version option in the file>open dialog box.)
7.3) OPENING AN OSP FILE WITH FILE>OPEN
An .osp files can be opened by Maya directly.
OceanSplash uses the same binary format that Maya uses to export oSp-objects. These files can be directly opened or imported into Maya by using the Mayas own file>open or file>import menu options, but the problem is, the imported oSp-objects will have their own water surfaces (which are treated as reserves by oceanSplash) and will not interact with the ocean or pond of the current scene. Every time you import an oSp-object, you will have a new ocean or a pond in the scene.
8..EXPORT AN OSP OBJECT
To export all objects, simply choose Export All menu option in the oceanSplash menu. To export selected objects, select oceanSplash objects from the viewport and choose `Export Selection` menu option from the oceanSplash menu. Type a suitable name for the export file in the window that appears and click `Save`. OceanSplash will then export the oceanSplash object along with its fluid source (ocean or pond) and also include assigned emitters like wake etc. File extension for an oceanSplash file is osp.
8.1) Selection made easy
(oceanSplash export is capable of detecting oSp-object/s from selection)
In case you are finding it difficult to select the oceanSplash object alone from the viewport or if it is time consuming to open the outliner every time and locate the oSp-object by name or may be you do not remember the exact name and are finding it difficult to locate the object that you want to edit or export, YOU CAN SIMPLY CLICK AND DRAG A WINDOW IN THE VIEWPORT AROUND THE OBJECT/S THAT YOU WANT TO EXPORT AND CHOOSE `EXPORT SELECTION` FROM THE OCEANSPLASH MENU. OceanSplash will ignore all other objects which are not assigned to it.
8.2) EXPORT SELECTION (SINGLE/MULTIPLE OBJECTs)
8.2.1) Exporting general oSp-Engines
You may select one or more than one oSp-object to export using Export Selection option in oceanSplash menu.
To export an object:
1) Select the oSp-object/s
(You can also draw a window on objects. OceanSplash picks only oSp-object/s from selection)
2) Select oceanSplash>Export Selection menu option
3) Navigate to the location where you want to put your file in the file browser that appears.
4) Enter a name for your file and press Save.
8.2.2) Exporting nParticle oSp-Engines
When exporting oSp-objects that use nParticle, oceanSplash exports all the oSp-objects and non oSp-objects that use nParticles together.
Note: In the next version, this issue will be resolved.
8.3) EXPORT ALL
Export all menu option will export all the oSp-objects of the scene together.
9.. REMOVE FROM OCEANSPLASH
i - Select an oSp-object (or even you can create a window around all the objects that you want to remove from oceanSplash)
ii - Choose Remove from oceanSplash option from the oceanSplash menu.
iii - Hit Yes in the confirmation box that appears for each of the selected oSp-object.
10..IMPORTING OSP OBJECT
You can either import an oSp-object along with the reserve fluid source (ocean/Pond) included in the import file or you may select a fluid source from the scene. If you select a fluid source from the scene, oceanSplash will import the oSp-object and connect it to the selected fluid source.
1) To import an oSp-object to the selected ocean/Pond in the scene
i - Select the oceanPreviewPlan or Pond from the scene and choose Import from oceanSplash menu.
ii - Locate the concerned .osp file and hit Open button.
2) To import an oSp-object along with its own ocean or Pond.
i - Deselect all fluid objects if any in the current scene is still selected.
. ii - Choose the Import menu option from the oceanSplash menu.
iii - Locate the file in the file browser that appears an press open.
iv - Hit Proceed button in the confirmation window.
11..PROBLEMS AND THE WORK ARROUNDS
1) Some of the emitted particles get inside an oceanSplash object during its animation even when the collision option was set to ON in the Build an oSp-Engine dialog at creation.
This happens if the emission offset is too tight. You should give some space for the particles to interact with the object.
Try increasing the offset to a bigger value.
Do as follows to change the offset value:
i) select the oSp-object
ii) Select Edit an oSp engine menu option from oceanSplash menu.
iii) Set Emit offset to a higher value.
2) Particles are created inside the oceanSplash object when it interacts with the ocean surface.
This happens when the normals are facing towards the inside of the object.
Doing any one of the following should solve the problem.
i) Reverse the surface direction using Edit NURBS menu
ii) Remove the oSp-objects Engine (use Remove .. menu option in oceanSplash menu). Build a new oSp-Engine for the object and correct the surface direction in the Confirm surface direction window that appears after the Generate/Apply button is clicked.
3) Generate and Apply buttons are not enabled.
That means, oceanSplash is not accepting the selection as valid to assign an oSp-Engine.
This could happen due to following reasons:
I) More than two objects are selected
II) The selection has an already assigned oceanSplash object
III) One of the selection is not a single NURBS surface or a NURBS curve
IV) One of the selection is not an oceanPreviewPlane or a Pond
4) I have a high detailed non NURBS surface in my scene, that I have modeled, textured, animated etc.. If oceanSplash does not accept non NURBS objects, Ill have to make the model in NURBS from the beginning, and texture and animate it again. I dont have that much of time and nor am I good in NURBS modeling. By any chance, is there a way that, I need not change my model from Poly to NURBS and also get oceanSplash working?
Firstly, detailed NURBS models should not be used to assign an oSp-Engine. That eliminates the need of remodeling using NURBS.
This is because a detailed NURBS object will always have multiple surfaces grouped as an object or surfaces are stitched to make a single object, which is not compatible with oceanSplash for two reasons.
1) oceanSplash does not accept grouped or stitched surfaces as a single object.
2) If you assign separate oSp-Engines to every surface in the group that makes the object, each engine will work independently and you wouldnt see a combined effect anyway.
You must create a shell model made out of a single NURBS surface. Best way is to start with a NURBS primitive that looks closest in shape and line flow to that of the actual model that could be a polygon, subdiv or a NURBS model.
Say for instance, you have a model of a fish which is highly detailed. It has a body, eyes, eye lids, gills, nose holes, mouth, teeth, tongue, lips, tail and fins,
i) Create NURBS cylinders without lids for body, tail, fins and name them as bodyShell, finShellL, finShellR, finShellTop, tailShell.
ii) Align the shells to the binding pose of the fishs` body, tail and fins respectively.
iii) Edit the shape of the shells to closely match the shape of the fishs` respective parts. Keep
the shell objects as basic as possible.
iv) Delete shell objects history
v) Bind the shells to respective joints or the root of the main models rig. (This will make the shell models mimic the deformations of the main model during animation.)
vi) Create oSp-Engine for all the shells one by one.
vii) Set the visibility of all the shells to off and set a key for each of it. ( setting a key for visibility in an off state will make sure that the shells will not unhide even if the show all command is used to unhide all objects.)
5) I want to import an oSp-object into the ocean of my current scene. But when I use the import option of OCEANSPLASH plugin, It shows an error saying that the file is of a higher version. How can I import an osp file that was exported using OCEANSPLASH plugin of a different Maya version.
OCEANSPLASH does not except files that where exported using a higher version. However, since OSP files use Maya binary formats, you can open the osp file directly using the ignore version option in the open file dialog box. When you do this, you will see a warning message saying that Some of your data may be lost. Just click OK and let the file open.
Once the file opens, simply save it again. Do not use Save as, because your file will not save as .osp then. Just use the Save option from the file menu or the Save icon or Ctrl + S to save the file again. The file will be saved using the same name, but in the current version this time.
Now you can use OCEANSPLASH plugin to import your osp file.
____________________________________________________________
Wish you all the best and hope that you find this plug-in useful in your work
You can drop an email any time to my following Id
Email: jhscomputerarts@yahoo.com