Prop axis help please


  • Poser Ambassadors

    Yes just open up the Joint Editor and you can relocate the origin from there and then resave the prop.



  • Thanks for your suggestions

    Ghostman, Relocating the origin is not the problem. Re-orienting its axis is.

    Ghostship, Poser does not appear to honour centres of rotation created by 3DS Max.



  • @matb

    "Ghostship, Poser does not appear to honour centres of rotation created by 3DS Max."
    My understanding is that this is common with .obj format. The centres I set in Blender aren't moved to Poser either, nor are the centres maintained from Poser to Blender.

    Bottom row of the joint editor parameters is for rotation. Position the origin to your desired point, enter the axis rotations in the joint editor to match the object (if that's what you want).



  • Thank you so much for your thoughts piersyf. However, unless I have totally misunderstood Poser, the joint editor is not the tool I require. I have been working with the grouping tool.
    I am not interested in creating a part that is attached to other geometry, merely a separate prop that has it own centre and axis of rotation - think of a hinged door set on a weird angled opening for example. The joint edit would not be the tool for that I assume?

    I did go take a look at the joint editor just in case I was labouring under an illusion, but the rotation tools all deformend the actual geometry, which was not my desire.



  • Open cylinder from Poser primitives...

    0_1482446838096_cylinder 1.jpg

    Using joint editor, moved the origin to the base of the object by setting the y centre to zero...

    0_1482446890813_cylinder 2.jpg

    rotated the cylinder 45 degrees around the X axis... origin follows...

    0_1482446979607_cylinder 3.JPG

    correct alignment of origin by adjusting the orientation parameters to cancel the rotation (-45 degrees on X)...
    no distortion of the model.
    0_1482447085906_cylinder 4.jpg

    I think this what you wanted, isn't it?



  • @piersyf Thank you so much for the trouble piersyf. Yes, this certainly aligns the origin to the rotated object, however subsequent translations continue to occur in world space rather than object space.
    Consider the attached example. The inner cylinder is a piston component of the outer one, which are themselves components of a far larger more complex engine exported from Max in obj format then spawned. I have aligned the axes in the joint editor as you suggested, but now when I use the x or y translation dials on the inner piston, rather than sliding in the local planes which APPEAR to have been reoriented in the joint editor, they continue to move in the global plane. I could parent the inner to the outer, but at some point I'l reach an element which has no higher object to parent to, but which is not aligned at nice neat right angles. Am I explaining myself clearly?

    0_1482467279232_joints 2.jpg



  • OK... have you tried using a null object? For example, I loaded a null object into the scene, rotated it 45 degrees, parented the cylinder to it. I then translated the cylinder along the Y axis. It followed 'local' space rather than global as you can see in the cylinder's parameters.

    0_1482468352452_cylinder 5.jpg

    Nulls occupy no space and don't render. It's a way for Poser to differentiate local space from global space. There may be other ways, but I don't know them...



  • Thank you Piers, yes as I typed my last response I was starting to come to the conclusion that something like this was going to have to be my solution. It's messy but at least it will allow me to hopefully accomplish what I'm after.
    Thank you so much for all your effort guiding me to this realisation.



  • No problem. I've started using nulls a bit more frequently lately. It helps to rename the null object to the name of your prop (seeing as it becomes the new 'origin' of your prop)... makes it easier to track in the hierarchy tree.



  • Ah yes valuable advice thanks Piers!



  • Where did you load the nul object from Piers?



  • I just did a library search and picked one from the selection. There doesn't appear to be one in default Poser libraries. Any nulls I've made have been done in Blender, but I guess a native Poser substitute would be any low poly primitive reduced in scale (to not interfere with viewing in wireframe) and made invisible. Lowest poly option is the 2D triangle, but if you prefer a 3D option maybe the tetraeder in the morphing primitives folder...



  • @piersyf said in Prop axis help please:

    I just did a library search and picked one from the selection. There doesn't appear to be one in default Poser libraries. Any nulls I've made have been done in Blender, but I guess a native Poser substitute would be any low poly primitive reduced in scale (to not interfere with viewing in wireframe) and made invisible. Lowest poly option is the 2D triangle, but if you prefer a 3D option maybe the tetraeder in the morphing primitives folder...

    Nerd3D created a free null object CR2 that was/is used to prevent "crosstalk." IIRC, it's simply a blank CR2 with the geometry removed. But, I also think it has channels in it to "intercept" spurious loading of values, so it's heavier than a blank object I think. (Here: http://www.nerd3d.com/catalog/product_info.php?cPath=1_11&products_id=62 )

    You can create a prop null by editing out the geometry information from a prop file, IIRC. You could also create an effective null object by creating a single vertice object or line-object (Poser won't actually try to render/load those at all) in a 3D app, saving it as a wavefront object, then loading it into Poser. You'll get some error messages, just make sure that it has a material group to keep Poser from totally freaking out every time. (May need editing to add for some apps?) Then, save that as a prop. Later, you can manually edit the prop file so that it is set to never display in the Preview pane or Camera, heading off any future error messages you might get when you load it. (Settings are towards the end of the prop file, IIRC, for single-group props. )



  • @morkonan Wonderful, thank you morkonan!



  • @morkonan Actually, now I think about it, I'm somewhat confused about exactly WHAT a null object is. What purpose does it serve and why would you want/need to edit out all geometry info?



  • From what I understand, a null object is a reference point in 3D space. If you had an object that consisted of a single vertex and saved it as an .obj, the location of the vertex in XYZ space is recorded. A null object has the XYZ coordinates and a name, but no vertices. It is often used as an invisible parent. I've used it for translation purposes (as you are doing) and also as a universal scale point (all objects attached to it scale together).

    The reason for stripping out the geometry as described by morkonan is simply to save space. The suggestion I made of using the simple cube primitive and reducing it's scale to like 1% and making it invisible would perform the same function as a null object, but because it would still be recorded in .obj format as having 6 vertices, it's still technically an 'object', not a 'null object'.



  • @matb said in Prop axis help please:

    @morkonan Actually, now I think about it, I'm somewhat confused about exactly WHAT a null object is. What purpose does it serve and why would you want/need to edit out all geometry info?

    piersyf said it concisely. I rarely say/write anything... concisely. ;)

    You don't "need" a true "null." All you appear to want is a set of moveable coordinates that you can slave/parent another object to. That could be accomplished with any object you could load, as long as you rendered it invisible so it didn't appear in the render. Removing the geometry just leaves .CR2 or prop file with its object-center coordinates and rotations, which are generated/copied-to-file upon creation. When the "object" (file) is loaded from these filetypes, the object center information is read from the file, not the geometry, and, since there is no geometry, it then becomes only a purely "logical" object, not true geometry, that you can use for a variety of things without having to worry that you're adding more geometry that Poser has to load/deal with.

    A common use of nulls or simple objects rendered "invisible" is as a target object for another operation, like the "Point At" function. I routinely use a simple, hidden, primitive as a target object for lights, setting certain spotlights to "Point At" this target so I can very easily focus them on parts of a scene. People have also used nulls and the Point-At or Parent option for eyes and hands, respectively. There are bunches of uses, once you start getting creative. :)

    Note: In recent Poser releases, it's often more advantageous to use a primitive as your "null" object and simply hide the geometry from the renderer. This way, you can make it visible to check its location and such. In earlier versions of Poser, the only way you could truly hide an object from the Camera was to edit the CR2 or Prop file and to toggle that attribute, which wasn't available for Poser to alter directly at the time. Poser eventually provided this Hide option in the Figure/Object dialogue for both Preview, Camera, Raytracing, etc directly. But, people still talk about "nulls", anyway, and their uses. :)



  • Thank you gentlemen ( you ARE both gentlemen?)
    morkonan, yes I generally use a sphere as a target for lights, so in a way, I have been using a null for years.
    piers It seems to me that in scenes with hundreds of thousands of polys, saving a few bytes is a trivial concern! :-)