3ds max – Use the Particle-Flow Lock/Bond test to have particles move on a surface in

Software:
3ds max 2019

The Lock/Bond Particle Flow test can be used to have particle movement restricted to a surface.

lock_bond.gif

This example shows a simple setup in which the particle teapots have a Speed operator set to Random 3D mode that causes them to move in random directions,
While at the same time the Lock/Bond test forces them to ‘stick’ to the surface:

Untitled-1

 

Advertisements

Python for 3ds max – Animated Mesh

Software:
3ds max 2019

This is an example of procedurally animating a mesh’s vertices via Python script.

Vert_Anim.gif

Notes:
1. The model has to be converted to Editable Mesh before the script is run.
* unless the scrip will be extended to do it.
2. The model must be selected for the script to work.

import MaxPlus
import math
from MaxPlus import INode
from MaxPlus import TriObject
from MaxPlus import SelectionManager
from MaxPlus import Factory
from MaxPlus import Animation
from MaxPlus import Point3
from MaxPlus import Control

ticks_frame = 160

#Selection
sel = []
for n in SelectionManager.Nodes:
    sel.append(n)
node = sel[0]

#Setup Controllers
obj = node.GetObject()
Tri = TriObject._CastFrom(obj)
mesh = Tri.GetMesh()
num_verts = mesh.GetNumVertices()
mesh_anim = obj.GetSubAnim(0)
pnt_ctrl = Factory.CreateDefaultMasterPointController()
node.AssignController(pnt_ctrl,1)
for i in range(num_verts):
    bezp3 = Factory.CreateDefaultPoint3Controller()
    bezp3.SetPoint3Value(mesh.GetVertex(i))
    mesh_anim.AssignController(bezp3,i)

#Animation
Animation.SetAnimateButtonState(True)
for t in range(100):
    time = t * ticks_frame
    Animation.SetTime(time)
    mesh_anim.AddNewKey(time,0)
    for i in range(num_verts):
        vert_anim = mesh_anim.GetSubAnim(i)
        vert_ctrl = Control._CastFrom(vert_anim)
        vert_val = mesh.GetVertex(i)
        vert_val.SetZ(vert_val.GetZ() + math.sin(((Animation.GetTime()*0.5)/(ticks_frame))+i))
        vert_ctrl.SetPoint3Value(vert_val)
Animation.SetAnimateButtonState(False)

* note that when copying and pasting a script from this example, the indentation may not be pasted correctly.

Related:
Python for 3ds max – Mesh manipulation

DJV Player

Software:
DJV View 1.2.3

A highly effective and useful open source frame sequence player, indispensable in an animation studio.

DJV allows smooth cached playback of float EXR file sequences (and many other formats) at a variaty of frame-rates, image / pixel diagnostic tools, view EXR layers, quick mp4 export, and more.

Download DJV here:
http://djv.sourceforge.net/

Untitled-1

Blender – Bake NLA animation

Software:
Blender 2.79

When you wish to bake your NLA animation mix into one Action,
The Bake option in the Animation tab will not work.
The way to do this is to:

  1. Select the object in Object Mode.
  2. Press Space and type ‘bake
  3. Choose Nla: Bake Action
  4. In the Bake dialog, select Pose, deselect Only Selected, and press OK.
  5. After the process, the Armature will have a new action that is the baked animation.

Untitled-2

Untitled-3

Blender – Bake rigid body physics to Keyframes

Software:
Blender 2.79

  • I always forget this, try to do it through the regular animation baking option and get frustrated that it doesn’t work…

When you want to bake an object’s rigid body physics simulation to regular Keyframes:

  1. Select the wanted objects.
  2. In the 3D View Tools pane, In The Physics Tab, Press the Bake To Keyframes button.

Untitled-1

Maya Python scripting – Iterate through the timeline frames

Software:
Maya 2018

The following Python script iterates though Maya’s timeline frames, and for each frame creates a new cube, and aligns it’s position to the selected animated locator.

* There is probably a nicer way to set one object’s position according to anothers but haven’t found it yet (not finding enough examples of the cmds.xform command…) so sorry for that..

import maya.cmds as cmds

selection = cmds.ls(sl=1,sn=True)
for frame in range(1,80):
    cmds.currentTime(frame)
    newCube = cmds.ls (cmds.polyCube( sx=1, sy=1, sz=1), long=True)
    posX = cmds.getAttr(selection[0]+'.translateX')
    posY = cmds.getAttr(selection[0]+'.translateY')
    posZ = cmds.getAttr(selection[0]+'.translateZ')
    cmds.setAttr(newCube[0]+'.translateX',posX)
    cmds.setAttr(newCube[0]+'.translateY',posY)
    cmds.setAttr(newCube[0]+'.translateZ',posZ)

maya_python_frames

Denoising animations in V-Ray for Maya

Software:
Maya 2018 | V-Ray 3.6

Animated sequences require ‘Temporal Denoising’ in order to achieve a flicker-less result.
‘Temporal Denoising’ means that in addition to taking into account neighboring pixel data, the denoising process also takes into account pixel data from adjacent frames in the animation.
For that reason, the V-Ray Denoiser render Element can’t simply be used during the render process like we can use it when rendering still images,
And the animation sequence is denoised after it has been rendered, and stored with extra data needed for the V-Ray Denoiser to work.

Update:
In V-Ray Next the vdenoise.exe tool has a GUI that allows loading sequences easily.
NXT_vdenoise.png

In versions of V-Ray prior to V-Ray Next the vdenoise tool has to be operated through command line with the following easy steps:

This is a very useful article on the subject from Dabarti studio:
http://dabarti.com/vfx/using-v-ray-denoiser-tool-vdenoise-exe-with-send-to-scripts/

General sequence denoising setup that has to be done just once:

1) Create a command line denoising script batch file, and store it in the Windows ‘Send to’ folder:
Write the following script to a new text file.
* this script is from an article by Tomasz Wyszołmirski – Dabarti Studio.

@echo off
set input=%1
set denoiser_input=%input:~0,-8%????.exr
"C:\Program Files\Chaos Group\V-Ray\Maya 2018 for x64\bin\vdenoise.exe" -inputFile="%denoiser_input%" -useGPU=2 -display=0
pause

Save the file named ‘Denoise Sequence.bat’ in the Windows Send to folder.
* to find the Windows Send to folder quickly open the Windows ‘run’ utility and type: shell:sendto.

Render setup for denoising:

2) In your Maya scene, In the Render Settings window, In Render Elements tab, add a Denoiser Render Element.

3) Select the vrayRE_Denoiser Render Element,
And in the Attribute Editor, under Exta V-Ray Attributes set ‘Mode’ to ‘Only Generate Render Elements’.
Capture

4) In Render Settings > Common > Image File Output:
Choose exr (multichannel)
Capture

5) Render the Animation.

Denoising the animation:

Right click the first frame of the rendered sequence,
And choose Send to > Denoise Sequence.bat

Related post:
Rendering an animation with Maya and V-Ray