The 3D Cheapskate's Yellow Sticky Notes

This is mainly reminders for myself about the way I do things, a sort of catch-all for things I don't want to forget. Some of it might get expanded in the future and put into PDF format. But that's only likely if I get a sudden burst of enthusiasm on a particular topic (unlikely), or a specific request (even less likely).

All the following topics are on this page

Very Basic Outline, Blender To PP2

  1. Create a mesh in Blender, using normal Blender sizes
  2. Import the M3 OBJ to get the scale right (for the sword I had to scale down to 7% of the modelled size).
  3. Create UV map.
  4. Export OBJ using default settings (i.e. include UVs and materials)
  5. Create any morph targets in Blender from duplicates of the mesh.
  6. Export MTs as OBJs (UVs and materials not required)
  7. Import the basic OBJ into Poser 6
  8. Load the MTs
  9. Save as PP2
  10. Edit PP2 - offsets, origin, external geometry, pathnames
  11. Clear the scene, load from PP@ and check

Converting an Object File To a Textured Poser Prop

Brief workflow for converting the OBJ file I've exported from Blender into a Poser 6 PP2 prop file. It's the sequence I used for the 'dha' sword prop in my 'S.E.Asian Duel'. I usually set a couple of basic materials and UV map the prop in Blender before export.

  1. Open Poser 6 and clear the sene.
  2. Main menu 'File' > 'Import' > 'Wavefront OBJ...'
  3. Select the OBJ file and UNCHECK all 'Prop Import Options' - I want exactly the same as I exported.
  4. Check that the prop looks okay from all angles.
  5. Save into the Prop library (with prop selected open Props library, navigate to required folder, click '(+)' 'Add to library'
  6. Not necessary to 'Select Subset' - just enter name and click OK. PP2 is saved, and 91x91 version of current preview is saved as icon.
  7. Open the PP2 in Notepad++. It will have 4 sections: version{}, prop ###{}, prop ###{}, doc{}.
  8. Delete the 'geomCustom{}' section from the first prop ###{} and replace with this so it uses an external OBJ (don't forget to copy the OBJ to the correct place too):
    objFileGeom 0 0 :Runtime:Geometries:3DCheapskate:~~~:~~~.obj
  9. Back in Poser clear the scene and load the prop using the newly created PP2.
  10. Save into the Prop library again. An extra line is added before before the one we just changed:
    storageOffset 0 0.3487 0
  11. On the parameters pane spin the x/y/zRotate dials. I want most of my props rotating around the origin, but usually I find they're usually rotating about a centrepoint that Poser 6 seems to have calculating as the average of the vertices. Since I've usually designed the prop in Blender with the rotation centre at the origin I need to fix this in the PP2 (this is especially important for hand-help props that I want to use the 'PropGoto+' script with
  12. In the second prop ###{} section find the 'channels{}'. In the x/y/zOffsetA/B sections set 'initValue' and 'staticValue' to zero.
  13. In the second prop ###{} section find the 'origin' statment (just after zOffsetB, between the 'channels{}' and material ###{}) and replace it with:
    origin 0 0 0
  14. Back in Poser clear the scene and load the prop using the newly created PP2.
  15. Check that the rotations are now about the origin.
  16. I usually only set up very basic materials in Blender - e.g. the sword had a grey 'Blade' and brown 'Hilt' material. But I always (so far) UV map.
  17. Import the OBJ into UV Mapper (free version) and simply save the template. (I still have problems with this in Blender!)
  18. Open the UV template in GIMP and save as an XCF, then create a basic texture and bump for the prop and export these as JPGs. Copy these to the appropriate sTextures subfolder in my development runtime.
  19. Back to Poser - in the Materials room apply the texture and bump map. Do a few test renders with various lights, cameras and render settings.
  20. Save the prop again.
  21. Edit the PP2 in Notepad++ and correct all the absolute pathnames (textureMap', 'bumpMap', and within 'nodeInput{} sections 'file') for the textures. Poser saves them like this:
    textureMap "H:\Poser\!3DCheapskate\Runtime\textures\3DCheapskate\Mapped\Weapons\Dha\Basic.jpg"
    ...and I want them like this...
    textureMap ":Runtime:Textures:3DCheapskate:Mapped:Weapons:Dha:Basic.jpg"
  22. Make sure the texture images are in sensible subfolders of 'Textures'. Adjust pathnames accordingly if any changes are made.
  23. Clear scene, load prop, check.

Creating Poser And DAZ Studio Material Presets

This is a very brief workflow for creating the Poser MT5 and MC6 files and the DS shader/material presets. It's the sequence I used to create the materials for my Tileable Mail (Scale) Textures.

  1. Load any necessary figures and/or props into Poser 6, set up lights and cameras.
  2. Save as a PZ3.
  3. Manually set up the material for one item.
  4. Save as an MT5.
  5. New scene, load a simple plane and apply the MT5 to it.
  6. Render the material as applied to the plane - save the render (512x512 PNG).
  7. Scale the render down to 91x91, add text overlays in GIMP as required, and save as the MT5 icon.
  8. Reload PZ3 and apply the MT5 to all the first actor.
  9. Adjust the material as required for each material zone of the actor (e.g. set tiling size so the overall pattern looks consistent).
  10. Save all required materials as an MC6.
  11. Make everything except the actor I'm using invisible, and render (512x512 PNG).
  12. Overlay this on the 512x512 MT5 render in GIMP, add text overlays as required, and save as an XCF.
  13. Take a copy, scale down to 91x91 PNG, and save as the MC6 icon.
  14. Convert the MC6 to a PZ2 MAT Pose (i.e. change the single 'mtlcollection' to 'actor $CURRENT')
  15. Repeat the application of the MT5 and creation of the MC6 for each required actor.
  16. Once all items are satisfactorily textured, save a new PZ3.
  17. Run DAZ Studio, clear the scene, and inport the textured PZ3.
  18. Adjust the surfaces for each material zone in each actor as required.
  19. Save a generic Shader Preset for the material.
  20. Save a Material Preset for each actor.
  21. Create icons for the shader/material presets.

A Note On Preparing Hand-Held Props

To make it simpler to position props in the hand of a figure (i.e. for creating smartprops) I find that it's easiest to follow three rules of thumb:

  1. Think of the object 'centre' as the point that would be roughly in the middle of the 'O' made by the forefinger and thumb when the object is grasped.
  2. Model the object with this 'centre' at the world origin, and aligned/oriented as below (N.B. Screenshot is from Blender, which uses a different axis system from Poser/DAZ Studio - I've added white overlay text to indicate Poser/DAZ Studio orientations):
  3. After importing the object into Poser 6 and saving as a PP2, restore the centre of rotation to the origin. To do this, edit the PP2 and set the initValue and 'staticValue' parameters of the six 'Offset's (i.e x/y/zOffsetA/B) to zero, and set the 'origin' to zero (i.e. 'origin 0 0 0').

(N.B. Any prop creating with this alignment, with its rotatation centre at the origin, and with the handgrip part of it roughly the same diameter, should work with the 'DhaGrip' hand poses and the 'PropGoto+' script. With a minor edit to the 'Dha Smart+' script to pick up the appropriate PP2 file I can easily create a 'prop Smart+' too)

Creating SmartProps And Hand Poses

This is a very brief workflow for creating HD2 hand poses and PZ2 smartprops. It's the sequence I used in my 'S.E.Asian Duel' - after creating the 'dha' sword prop, I simultaneously created a right hand pose for M3 and a dha smartprop for M3's right hand.

(Please bear in mind that this workflow is from my very first attempt at posing hands, and I may be missing something vital here)

  1. Load the required figure into a new empty scene in Poser 6.
  2. Turn off Inverse Kinematics (IK) on both legs (and arms, and anything else for that matter).
  3. Zero the figure (Main menu 'Window' > 'Joint Editor', select the 'Body' actor for the figure and click [Zero Figure].
  4. Load the prop PP2 (which should have been set up correctly for a hand-held prop as described above.
  5. Use the x/y/zTranslate dials to place the prop in the figure's right hand. Concentrate on getting the 'centre of the prop in the correct position relative to the thumb and forefinger
  6. Rotate the prop so that it lines up realistically across the palm of the hand. What's realistic? Here's a few snaps of me grabbing the hilt of a handy sword. Try it yourself - it's so easy to see what looks right when you do it like this!
    The important thing I found was to try and get the hilt of the sword and the palm of the hand to just make contact.
    (N.B. rotating the prop sounds easy, but if you have have to rotate around all three axes it can be a nightmare! See notes below)
  7. Now parent the prop to the figure's right hand.
  8. Time to do the hand pose - I start with the fingers and thumbs and ignore the hand itself. For reasons that should be obvious from the above snapshots I didn't use the ERC dials in the 'Hand' actor since they produced an unrealistic grasp. I started with the forefinger and thumb, trying to make the 'O' of an 'OK' hand sign around the. Then I curled the other fingers around the hilt, starting at the joints nearest the hands and ending with the fingertips. Minor adjustments to the prop orientation will probably be required as well.
  9. Once you're happy with the fingers and thumb hand pose (view it from all angle, zoom out and look at the whole arm, hand and prop. You'll probably find it looks wrong. Time to adjust the wrist rotations (i.e. X/Y/Z rotations of the 'Hand' actor). I wanted to have a 'strong' hand pose for the sword grip. For me this means lining up the knuckles of the first two fingers with the forearm. A little 'Side-Side' is all that's needed on most figures. If all's correct then the angle between the sword blade and the forearm should be around 120 degrees.
  10. Now save the prop as a smartprop. It's already parented, so select the prop, navigate to the required folder in the Props library, and click the '(+)' 'Add to library' button. Do NOT use [Select Subset], simply enter a name and click [OK]. You'll be informed that the prop's parented, and asked if you want it saved as a smartprop. Yes, you do.
  11. Now UNPARENT the prop (if you save the hand pose while the prop's parented, parameters for the prop will also be saved, and this causes odd things to happen if you apply the hand pose to a hand already holding the prop. Avoid that headache!)
  12. Save the hand pose to the Hand library, making sure to select the right hand.
  13. Now for the left-hand smartprop. It's easy to move the prop to the left hand of all the figures I used - simply change the signs of the Y and Z Rotations and the X Translation (this is why I zeroed the figure - the zeroed figures are symmetrical, whereas some of the default poses aren't)
  14. Parent the prop to the left hand
  15. Save the prop as a LH Smartprop.
  16. Now to test. Clear the scene, load the same figure, apply a pose, and move/rotate the 'Body' of the figure slightly away from the origin.
  17. Load the RH Smartprop from the Props library, and check it loads to the right hand.
  18. Apply the hand pose to the right hand and check that the sword grip looks okay.
  19. Load the LH Smartprop from the Props library, and check it loads to the left hand.
  20. Apply the hand pose to the left hand and check that the sword grip looks okay (N.B. I had problems with the Project Human and P6James/Jessi hand poses not working on the left hands. This was nothing to do with my hand poses, as the same problem occurs with the proper hand poses - see my 'Poser 6: Hand poses not working on P6 Jessi/James left hand (right hand okay)' Renderosity thread (login required) for more info.

A Note On Working Out What X/Y/Z Rotations You Need For A SmartProp

As mentioned above, it can be a nightmare trying to get a prop oriented correctly. Look at the two screenshots below. I loaded Antonia and zeroed her pose. I then loaded my basic dha prop (it loads at the origin with its X/Y/Z rotations set to zero) and set the X/Y/Z translations so that the rotation centre (i.e. the point at the cente of the 'O' of the guard) is positioned roughly in the centre of the 'O' of an 'OK hand sign (if Antonia had decided to make that sign). The left image shows this initial position. The right image shows what it looks like after a 45 degree rotation is applied around each axis - it's hard to see how that end position could come from three 45 degree rotations, isn't it?


Here's one way to understand it without loads of maths (it works for me, and might just click for somebody else too). I've taken four screenshots (see image below), the sequence is as follows:


The red boxes show how the 45 degree rotation that has just been performed can be easily spotted:

  1. Rotation about the Y axis (vertical axis running up/down) - observed from Top/Bottom view
  2. Rotation about the X axis (horizontal axis running from left to right) - observed from Side (Left/Right) view
  3. Rotation about the Z axis (horizontal axis running from front to back) - observed from Front/Back view.

The two red dots are the points where the top (spine) and bottom (sharp edge) of the blade meet the hilt. Notice that the two dots remain vertically above/below each other after the first (Y) rotation, but more importantly that they also remain vertically above/below each other from the front viewpoint only after the second (X) rotation. By drawing a line through these two dots in the front view of the final position, we can see quite clearly the Z rotation.

You can use any two points on your prop that are directly above/below each other in the default prop load position.

(Should it be +45 or -45 or 315? I don't bother worrying about that - just the basic number

So How does this help us with smartprops?

Makes it easy to estimate the Z rotation that you should. Simply load the figure, zero it. Using the Front view (no perspective) imagine where those two red dots should be and draw a line through them. (I've actually loaded my 'Dha Smart+' so it's correctly oriented for Antonia's right hand). Since this line would have been vertical in this front view before the Z rotation was applied, we can now estimate the Z rotation - I'd guess from the picture that it's about 100 degrees.


Now we need to visualize what it looked like before the Z rotation - simply take that Front view and rotate it (I've used a screenshot and image editor to make it clear, but it's easy to do in your head)


From this we can estimate the X and Y rotations just be looking at picture. I'd say about 10 degrees in X and 30 degrees in Y . How good was my estimate? The actual figures applied by the 'Dha Smart+' script were Y=-47.8, X=-8.7, and Z=-97, so I was a bit out on the Y and all the signs are wrong. But that's no problem.

Next step is to load your prop and try applying the rotations. First just Y, and the sign error is obvious so we use -30. Then X, and again the sign error will be obvious so we use -10. We'll now probably realise that it doesn't look quite right for the position we imagined before the final Z rotation, and we'll adjust Y and X till we're happy. Then we apply Z. It should now be roughly right, and we can fine-tune easily from here

My 3DC Freebies Zip Structure

This is an outline of the folder structure with the freebie zips I've released. It's a guideline for my future releases. Folders that I had in early releases but no longer use are shown struck-through. The '~~~/~~~.ext' indicates that I have various 'product/item.ext' subfolders and files.

Poser 6 Highlight_Size / DAZ Studio 3 Glossiness

This thing has caused me so many headaches that I decided to take my first serious look at it - a very simple empirical comparison.

In Poser 6 I loaded a sphere prop (plus a few other bits and pieces, but with the default material and default 3 light setup), saved this as a PZ3, and imported it into DS3 as well (a few tweaks were necessary here, e.g. correcting camera focal length, etc). In Poser 6 I set the Highlight_Size value and rendered (Firefly), and then tried to get similar renders in DS3 with the 'metallic' and 'glossy metallic' lighting models by adjusting just Glossiness. Thumbnails of the renders are superimposed.


A few notes:


Unreal Imperfect, the 3D art/modelling website of Pete Williams (a.k.a. 3D Cheapskate), Copyright © 2013-2014 Pete Williams