• Welcome to the Community Forums at HiveWire 3D! Please note that the user name you choose for our forum will be displayed to the public. Our store was closed as January 4, 2021. You can find HiveWire 3D and Lisa's Botanicals products, as well as many of our Contributing Artists, at Renderosity. This thread lists where many are now selling their products. Renderosity is generously putting products which were purchased at HiveWire 3D and are now sold at their store into customer accounts by gifting them. This is not an overnight process so please be patient, if you have already emailed them about this. If you have NOT emailed them, please see the 2nd post in this thread for instructions on what you need to do

Where should Poser geometry files go? Best practices.

Ken1171

Esteemed
Contributing Artist
Unfortunately, if the creator puts the .pmd file in [Product Name] folder, the moment any customer decides to change the slightest aspect of that long and unweildy path, all the morphs break without any feedback from Poser.

That is super easy to fix. Just remove the PMD relative path from the CR2, and BOOM, now it can be moved without breaking anything. I do that in all my products that use PMDs. Like I said, it just comes down to personal preference. :D
 

kobaltkween

Brilliant
Contributing Artist
Yeah, you can do that. That's generally how I go in and fix files by other people in my personal runtimes. But then you risk namespace collisions if anyone has a PMD of the same name _and_ make it so no one else can point to your PMD's.

For instance, I'll assume you did that with your Anime Head (which is very cool by the way). Now if I wanted to make a character for it, I couldn't use any of your morphs at all. Because I'd distribute them as .pz2 files, and would need a full path. Relative paths only work in Poser if they're in the same folder. And I can't count on anyone but you to leave that head and its morphs in its default folder. So I'm stuck not being able to distribute dialed characters using your morphs, unless I want to be in that same position of having my content just break without any message or clue to the user as to why.

For that exact reason, I haven't distributed any of the several Dawn characters I've made. They all use her HiveWire3D morphs in addition to my custom ones. I can't reference Dawn's HiveWire morphs without risking my injection pose breaking. When you put your morphs in a central, fixed location, you encourage others to build on your work. When you put them in a location that could change the moment anyone does something typical and ordinary, you discourage it.

So yeah, there's actual usability reasons strongly against putting resource files in folders users not only typically move around and customize, but have explicitly and consistently asked to be able to customize more and more.

It's kind of like making a material that has Reflection_Lite_Multi and Reflection_Kd_Mult checked. You can do it without most people complaining. Lots of people do. But there are solid and functional reasons for not doing it. And you (as in one, you actually have your own solid rep already) probably won't hear about it when people have problems. They'll just assume the problem is you and move on to another artist.
 
Last edited:

Ken1171

Esteemed
Contributing Artist
Good point. This is exactly what I was saying earlier in this thread. I gave the same example about using Dawn morphs from another product - I can't do that from my CatEyes character for Sora because I can't guarantee the PMD location from the Dawn SE installation. It's not a showstopper for me, though, since CatsEyes doesn't use any morphs from either Dawn or Sora, but I can see that being a problem for other people. At best I could invoke the morph from Dawn, but I don't know if it has been loaded yet, so that can also fail.

Since we can't locate the PMDs from Dawn, moving my own to a fixed location would only be a half solution. Before PMDs existed, CAs used to place morphs at a separate location for this very purpose, but it used to create a mess in the runtime because there was no standard. Poser's flexibility is both a blessing and a curse.
 

FreyrStrongart

Brilliant
Contributing Artist
I have managed to remove the obj information from the pp2 file, but this only works for a prop that has no morph information. I see people talking about how to handle the PMD info, but I cannot really understand it. In this snippet :

version
{
number 10
build 34759
}
prop dogbed

{
storageOffset 0 0.3487 0
objFileGeom 0 0 :Runtime:Geometries:FreyrStrongart:HiveWireBigDog:Dogbed:dogbed.obj

}


prop dogbed
{
name Dog Bed
on
bend 1
animatableOrigin 0
animatableOrientation 0
dynamicsLock 1
hidden 0
addToMenu 1
castsShadow 1
includeInDepthCue 1

where would the PMD info have to go?
{
morphPmdFile :Runtime::Geometries:FreyrStrongart:HiveWireBigDog:Dogbed:Dog Bed.pmd
geomCustom

}
Path would be different but if I leave this out entirely the morph is apparent but not working.
 

English Bob

Adventurous
In a PP2 file, the PMD reference goes on the line before the geometry, whether that's an external objFileGeom or an embedded geomCustom line. So in your case it would be something like:

{
morphPmdFile :Runtime::Geometries:FreyrStrongart:HiveWireBigDog: Dogbed: Dog Bed.pmd
objFileGeom 0 0 :Runtime:Geometries:FreyrStrongart:HiveWireBigDog: Dogbed:dogbed.obj
}

But with the appropriate path of course. By the way, I put spaces in the paths above to stop the grinning face :D that you get on this forum when you follow a colon with a capital D. Those should be missed out in the real file.

I don't think the storageOffset line does anything, I've omitted it here because the example file I looked at to check my facts didn't have it.
 

Ken1171

Esteemed
Contributing Artist
I used to remove embedded geometry from Poser files by hand like this, but there is a number of little things that can go wrong. There are quite a number of Python scripts that do this, so I prefer to use them instead. They typically do everything with a button click. I believe the best one is from Joseph (Netherworks), because "Poser File Save" works with all Poser files (not only props). It asks where you want the geometry to be copied to, and writes the proper relative path. Most other scripts just extract the OBJ to the local folder, and you will have to fix this later on. And what's most, it remembers the last locations, so if you are fixing several files from the same project, you only have to indicate the paths once. I strongly recommend it.

Additional benefits are, for example, where you are working with CR2s, Poser File Save creates much cleaner files than Poser 11 itself. There are several bugs on the way Poser creates its files, like double roots, extra unnecessary nodes, and incorrect closing brackets.
 

FreyrStrongart

Brilliant
Contributing Artist
Thanks a lot for both infos. I will use the Toybox in the future. Maybe I even might get to like poser sometime in the distant future :p?
 
Top