#1
|
|||
|
|||
Complex Hierarchical Structures
Hi,
I'm creating a series of canned animations in Vizard using your vizacts class to control mechanical equipment. I'm getting a bit confused when it comes to what is shown me in the vizard inspector vs. what I am actually altering in my vizard code. For instance, take the image attached ( yes I am using Vizard 5 but I assume nothign changes with how scene graphs hierarchies function I felt it more pertinent to throw this in Vizard 4's forum). I have watched your video tutorial, however it does not cover hierarchies with more than 1 parented object, which is what I am dealing with. I have a blue box with a door, latch and handle, each parented (linked) in Max with their pivots placed where I want their rotations to be performed. And I have reset the xForm many times. When I view this in the inspector, I can see the transform node labeled 'BlueMLabOven_LabHandle' and when I select the transform I am able to pivot about the expected location and the child comes along for the ride as I'd expect. Same thing with the door labeled 'BlueMLabOven_Door', when I rotate about the transform in the inspector all the child components come along and the pivot is about the correct location. When I move into Vizard... things don't act as friendly as in the inspector. I load my model and extract the child objects I want to modify: Code:
self.oven = vizfx.addChild('BlueMLabOven.OSGB') self.door = self.oven.getChild('BlueMLabOven_Door') self.latch = self.oven.getChild('BlueMLabOven_DoorHandle') I don't want to rotate the geode, since the hierarchy doesn't work if I do that. I want to rotate using the transform so that all the child objects come along for the ride. How do I do this in Vizard? So far all of my transforms seem to only rotate around the parent system when I set up the following: Code:
open_door = vizact.spinTo( euler = [ door_angle, 0, 0], time = rotate_door_time, interpolate = vizact.easeInOutCubic ,mode = viz.ABS_LOCAL ) close_door = vizact.spinTo( euler = [ -door_angle, 0, 0], time = rotate_door_time, interpolate = vizact.easeInOutCubic ,mode = viz.ABS_LOCAL ) open_latch = vizact.spinTo( euler = [latch_angle, 0, 0], time = unlatch_time, interpolate = vizact.easeInOut, mode = viz.ABS_LOCAL ) close_latch = vizact.spinTo( euler = [-latch_angle, 0, 0], time = unlatch_time, interpolate = vizact.easeInOut, mode = viz.ABS_LOCAL ) George |
#2
|
|||
|
|||
Calling node.getChild() will insert a transform above the specified sub-node. From the documentation:
Quote:
In Vizard 5 you can use the node.getTransform() command to get a handle to the specified sub-transform node. Transforming this object should provide similar behavior to transforming the node in Inspector. |
#3
|
|||
|
|||
Great, thank you.
Just for kicks, I'm guessing there is no easy way to do this in Vizard 4? I seem to remember at one point many years ago putting the parent's pivot where I wanted the child to pivot from to get this to work... but it only works when you have one child per object. |
Tags |
3dsmax, hierarchy |
Thread Tools | |
Display Modes | Rate This Thread |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
hierarchical models / physic shapes problem in Viz4 | Andy | Vizard | 2 | 11-22-2011 12:56 AM |
Performance issue in complex scenes | Feuereissen | Vizard | 1 | 08-12-2011 12:47 PM |
Getting Complex Character Rigs in Vizard | shivanangel | Vizard | 2 | 01-04-2007 06:57 PM |
hierarchical structure | Zafer | Vizard | 5 | 05-10-2004 01:05 PM |