Smart+/PropGoto+ HANDPROXYDATA list [Rel3 Ver1 Helpers]

3dcheapskate3dcheapskate Posts: 2,689
edited March 2016 in Freebies

N.B. Release 3 has a COMPLETELY DIFFERENT FORMAT for the HANDPROXYDATA datalines from the Release 3 Beta. Anything regarding the HANDPROXYDATA dataline format posted before 29th January is INVALID. The new Release 3 (Version 1.03) format is given in this 30th January 2016 post.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The purpose of this thread is to maintain a list of all the standard hand-held props that are explicitly supported by the Smart+/PropGoto+ stuff I'm working on. Don't know what the Smart+/PropGoto+ is? It's a freebie script-based method to put props correctly into the hands of a large selection of figure's. Both DAZ Studio and Poser versions available. The main thread for the project is also in this Freepozitory forum - "Wouldn’t It Be Nice If SmartProps Worked With More Than Just One Figure…"

If anybody uses the helper scripts from release 3 beta to get data for additional props then please post the new dataline here - if the prop is a freebie then please include a link to it. If it's NOT a freebie then (unless it's a prop from the DAZ store) a link is probably not permitted - just tell us where the prop comes from so other people can work out if they have it (e.g. "bundled with Poser 9", or "by XYZ from the ABC store". I'll then add the data to the list in the OP.

This is a NEW feature of the release 3 beta version, which is currently available for anybody who wants to test it. A couple of problems have already been identified that may require some minor changes to the HANDPROXYDATA dataline format. (N.B. The latest stable version is release 2, which does NOT have this 'HANDPROXYDATA' feature)

I'll tidy this up into a more user-friendly format as we proceed, and as the dataline format becomes fixed (it's still liable to change)

Notes:
- The props in red will NOT currently be auto-matched in DAZ Studio 4. The cause of this problem is known (post 71 of the main thread) and I'm working on a fix, which may involve the addition of an extra item to each dataline. Please let me know if any of the other props listed have the same problem, as I haven't tested every prop in DS4.
- <internalName> (or part of it) in purple indicates potential auto-match mismatch problems with another purple <internalName> if the order is altered. The ORDER of props with similar values in the HANDPROXYDATA section is important. E.g. if 'JScoutKatana' appeared BEFORE 'JSCoutKatanaInHand' in this list, then the 'In Hand' JSKatana would be incorrectly matched as an 'In Scabbard' one.

The order of paramaeters is currently <propName>,,,,,,,,
- <propName>: A user-defined name to uniquely identify the non-Smart+ prop, for display on the confirmation dialogue.
- : Poser's external name for the prop (act.Name()).
- : Poser's internal name for the prop (act.InternalName())
- ,,: YXZ rotations to align the NON-Smart+ Prop correctly in the zeroed DummyHand proxy. (N.B. YXZ order, not the usual x, y, z). All three values in degrees.
- ,,: XYZ translations to position the NON-Smart+ prop correctly in the zeroed DummyHand proxy. All three values in Poser units.

So here's the current list (I've removed links to the stuff in the DAZ store - this is the Freepozitory after all, and only links to freebies are allowed! Just search the store to find the non-freebies)


# Props that came with DS4.6 Pro
Genesis Magus Staff,Staff,Staff for Genesis,0.000,90.000,0.000,0.000,-0.513,-0.035
Genesis Katana In Hand,Katana In-Hand,KatanaInHand for Genesis,17.881,21.611,76.492,0.292,-0.590,-0.072

# The six swords that come with Poser 9
Demoniac Sword (Poser 9),Demoniac_Sword,Demoniac_Sword,0.0,-90.0,90.0,0.4588,-0.76,-0.0011
Bone Sword (Poser 9),Bone_Sword,Bone_Sword,0.0,-90.0,90.0,-0.2834,-0.5799,0.0
Katana (Poser 9),Katana,Katana,0.0,-90.0,-90.0,0.1443,-0.5973,0.0
Medieval Sword (Poser 9),Medieval_Sword,Medieval_Sword,0.0,-90.0,90.0,0.301,-0.6144,0.0
Roman Sword (Poser 9),Roman_Sword,Roman_Sword,0.0,-90.0,90.0,-0.1454,-0.5926,-0.0002
Persian Sword (Poser 9),Persian_Sword,Persian_Sword,90.0,-87.0,180.0,0.0,-0.6025,-0.0005

# Sword from “Kaileena For PBIV” (Pretty3D/Mytilus at Renderosity)
Kaileena Sword RH,SwordRH,SwordRH,-90.0,278.0,-255.0,0.291,-0.586,-0.065
Kaileena Sword LH,SwordLH,SwordLH,90.0,278.0,255.0,-0.291,-0.586,-0.065
Kaileena Sword,Sword,Sword,-90.0,-98.0,0.0,0.02,-0.242,0.0

# Weapons from "Henseki's Rune" (Orion1167 in the DAZ store)
Hensekis Rune Knife LH,KnifeLt,knifelt,0.0,0.0,-90.0,0.0,-0.586,-0.07
Hensekis Rune Knife RH,KnifeRt,knifert,0.0,0.0,-90.0,0.0,-0.586,-0.07
Hensekis Rune Sword LH,Henseki SwordLt,swordlt,0.0,0.0,-90.0,0.0,-0.586,-0.07
Hensekis Rune Sword RH,Henseki SwordRt,swordrt,0.0,0.0,-90.0,0.0,-0.586,-0.07

# Freebies from ShareCG (links included)
M4 Fable Sword (dyald),Sword,Sword,0.0,-90.0,90.0,0.0,-0.334,-0.09
Lightsaber (fantascopefilms),saberhandle,saberhandle,0.000,90.000,180.000,-0.001,-0.198,0.000
Shilleliegh (mjc26250),shil2,shil2,-16.804,16.143,0.000,0.345,-0.522,0.150

# Freebies from RDNA (links included)
Akira Katana,AK_katana,AK_katana,90.0,-184.0,2.0,0.0787,-0.4853,-0.234

# From"Journeyer Scout For M4"in the DAZ Store
Journeyer Scout Katana (In Hand),JScoutKatanaInHand,JScoutKatanaInHand,16.0,22.0,76.0,0.323,-0.6073,-0.063
Journeyer Scout Katana (In Scabbard),JScoutKatana,JScoutKatana,174.0,-46.0,0.0,-0.0709,-0.4889,-0.044

# Five props from "Bashers And Bludgeons" in the DAZ Store
Blockbuster (Bashers + Bludgeons),Blockbuster,B9BB_Blockbuster,0.0,0.0,0.0,0.0,-0.6078,-0.1771
Shillelagh (Bashers + Bludgeons),Shillelagh,B9BB_Shillelagh,0.0,0.0,0.0,0.0014,-0.6107,-0.13
Spikeclub (Bashers + Bludgeons),Spikeclub,B9BB_Spikeclub,0.0,0.0,0.0,-0.0008,-0.5937,-0.1388
Stoneclub (Bashers + Bludgeons),Stoneclub,B9BB_Stoneclub,0.0,0.0,0.0,0.0005,-0.6129,-0.1697
Treebranch (Bashers + Bludgeons),Treebranch,B9BB_Treebranch,0.0,0.0,0.0,0.0013,-0.6118,-0.1358

# From "Cleave" in the DAZ Store (thanks erostew)
GreatCleaver (Cleave Daz 15046),valCleaveGreatcleave,valCleaveGreatcleave,0.000,0.000,90.000,0.318,-0.595,0.000
Scythe (Cleave Daz 15046),valCleaveScythe,valCleaveScythe,0.000,0.000,90.000,0.317,-0.595,0.146

Post edited by 3dcheapskate on

Comments

  • erostewerostew Posts: 214
    edited December 1969

    I managed to figure out how to use the helper script well enough to get data for Cleave. The Z-axis data is probably a bit arbitrary. The props are so large that I just kind of picked a fairly reasonable spot for a one-handed grasp. Tested with G2F and the Girl 4 and things looked good.

    GreatCleaver (Cleave Daz 15046),valCleaveGreatcleave,valCleaveGreatcleave,0.000,0.000,90.000,0.318,-0.595,0.000
    Scythe01 (Cleave Daz 15046),valCleaveScythe01,valCleaveScythe01,0.000,0.000,90.000,0.317,-0.595,0.146
    Scythe02 (Cleave Daz 15046),valCleaveScythe02,valCleaveScythe02,0.000,0.000,90.000,0.317,-0.595,0.145
  • 3dcheapskate3dcheapskate Posts: 2,689
    edited April 2015

    erostew said:
    I managed to figure out how to use the helper script well enough to get data for Cleave. The Z-axis data is probably a bit arbitrary. The props are so large that I just kind of picked a fairly reasonable spot for a one-handed grasp. Tested with G2F and the Girl 4 and things looked good.
    GreatCleaver (Cleave Daz 15046),valCleaveGreatcleave,valCleaveGreatcleave,0.000,0.000,90.000,0.318,-0.595,0.000
    Scythe01 (Cleave Daz 15046),valCleaveScythe01,valCleaveScythe01,0.000,0.000,90.000,0.317,-0.595,0.146
    Scythe02 (Cleave Daz 15046),valCleaveScythe02,valCleaveScythe02,0.000,0.000,90.000,0.317,-0.595,0.145

    Looking at those three datalines I'd say that you can combine the second and third
    - the numeric parameters are almost identical
    - the external names (second parameter) match except for the number on the end
    - the internal names (third parameter) match except for the number on the end

    The dataline for the GreatCleaver seems fine as it is.


    This example is really useful - it's reminded me that I need to explain properly how to take the datalines that the final helper script ('5 - GetProxyData') presents, decide whether any of them can be combined, and and edit them to ensure the best chance of correct matches.

    The following is a basic overview only...

    The lines for the Scthe01 and Scythe02 should probably be replaced with this:

    Scythe (Cleave Daz 15046),valCleaveScythe,valCleaveScythe,0.000,0.000,90.000,0.317,-0.595,0.146

    The automatch currently only checks the third field, the internal name. It checks the length of that field in the dataline (in this case 'valCleaveScythe' is 15 characters) and then compares that many characters from the start of the internal name of the selected prop. If it's an exact match then it flags a succesful auto-match and doesn't check any more lines. If it's not an exact match it tries the next line. Etc.

    So a prop with internal name 'valCleaveScythe01' or 'valCleaveScythe02' would be automatched against this line, as would 'valCleaveScythe03' or 'valCleaveScythe01_1' or 'valCleaveScythe02:5'. Those last three wouldn't be matched against either the second or third lines you originally had

    Post edited by 3dcheapskate on
  • erostewerostew Posts: 214
    edited December 1969

    Thanks for the explanation and the tip. As I mentioned, the X-axis translation was kind of arbitrary on those props anyway so it makes sense to combine the entries with such a small difference :)

  • 3dcheapskate3dcheapskate Posts: 2,689
    edited April 2015

    Updated datafile uploaded to ShareCG;

    Smart+/PropGoto+ Updated Datafile

    There are two versions - one without HANDPROXYDATA (compatible with release 2), the other with HANDPROXYDATA (for those using release 3 beta) - the later includes additional prop support as well.

    - mjc shilleliegh
    - ESB lightsaber (doesn't work in DS4)
    - Scythe/GreatCleaver from DAZ Store's 'Cleave'

    Also includes the additional figure support data for Dusk, Genesis 2 Male, and Andy2/MilkManAndy.

    Post edited by 3dcheapskate on
  • 3dcheapskate3dcheapskate Posts: 2,689
    edited April 2015

    Some Notes About Why Some Props Require Several Datalines... part 1

    I'm in the process of adding some more props, whichever ones I happen to want for renders I'm doing. So it's the sword from the "Kaileena For PBIV" (Pretty3D/Mytilus at Renderosity, so no links).

    This has three PP2s - one V4 left-hand smartprop, one V4 right-hand smartprop, and one plain prop. I loaded all three together into Poser 9, and checked 'Display origin for each. The origins were at the same point half-way down the handles on each (see first attached image)

    Then I ran the HandProxyData helper script '1 - UnparentZeroAndProxy' on each in turn. See second attached image.The fact that the swordsare in different positions at this point means that each will require different rotation/translation parameters, and thus each will require a separate line in the datafile (in contrast when I did this with the M4 Fable sword all five variants were at exactly the same position and orientation at this stage, which is why I could combine them into a single dataline - they all required exactly the same translation/rotationparameters.

    The right/left hand swords were difficult to rotate correctly (I think I should have looked at "A Note On Working Out What X/Y/Z Rotations You Need For A SmartProp" on my own site first... :D )

    This is the data I got from my script (I've just changed the <propName> bit to something meaningful for each)

    :HANDPROXYDATA
    Kaileena Sword,Sword_1,Sword,-90.0,-98.0,0.0,0.02,-0.242,0.0
    :HANDPROXYDATA
    Kaileena Sword RH,SwordRH,SwordRH:1,64.0,75.0,77.0,0.292,-0.587,-0.064
    :HANDPROXYDATA
    Kaileena Sword LH,SwordLH,SwordLH:1,-59.0,68.0,-73.0,-0.291,-0.586,-0.065

    I've mentioned that you need to remove digits, underscores and colons from the end of the <extternalName> (second) and <internalName> (third) fields. I've marked them in red above. Just to demonstrate I loaded a couple more copies of each sword and ran the '5 - GetProxyData' script on each (I'm not interested in the rotations/translations, just the names this time, so I haven't shown them here). Once again I marked the trailing digits/underscores/colons in red.

    :HANDPROXYDATA
    Kaileena Sword,Sword_3,Sword 2,...
    :HANDPROXYDATA
    Kaileena Sword,Sword_2,Sword 1,...
    :HANDPROXYDATA
    Kaileena Sword LH,SwordLH 1,SwordLH 1:1,...
    :HANDPROXYDATA
    V LH,SwordLH 2,SwordLH 2:1,...
    :HANDPROXYDATA
    V RH,SwordRH 1,SwordRH 1:1,...
    :HANDPROXYDATA
    Kaileena Sword RH,SwordRH 2,SwordRH 2:1,...

    So here are the three datalines I'll actually put in my datafile:

    # Sword from "Kaileena For PBIV" (Pretty3D/Mytilus at Renderosity)
    Kaileena Sword,Sword,Sword,-90.0,-98.0,0.0,0.02,-0.242,0.0
    Kaileena Sword RH,SwordRH,SwordRH,64.0,75.0,77.0,0.292,-0.587,-0.064
    Kaileena Sword LH,SwordLH,SwordLH,-59.0,68.0,-73.0,-0.291,-0.586,-0.065

    Anybody who's been paying attention will notice that the internal name for the "Kaileena Sword" in the first line is "Sword", which of course willclash with the M4 Fable sword as far as the auto-match is concerned.Even if I also checked the <extternalName> (second) field that wouldn't help - both the M4 Fable sword and Kaileena sword have just "Sword" here as well.

    If anybody has any bright ideas of something else the script (both Poser and DAZ Studio versions) could check to distinguish between them I'd love to hear.

    And, of course, I have to put the LH and RH versions before the plain version in my datafile, otherwise both RH and LH will be matched against the plain sword, and that will put it in the wrong place. It took awhileto work out what I'd missed there - see third attached image)

    Since I use the Kaileena sword more often than the Fable sword, I'll add this data before the Fable stuff


    Edit: Just read the bit on my site and redid the LH sword. The rules of thumb there didn't really work for this, but they reminded me that I have to be patient and careful. This timethe values are much better, and the LH/RH swords use the same numbers, but with some opposite signs.

    # Sword from “Kaileena For PBIV” (Pretty3D/Mytilus at Renderosity)
    Kaileena Sword RH,SwordRH,SwordRH,-90.0,278.0,-255.0,0.291,-0.586,-0.065
    Kaileena Sword LH,SwordLH,SwordLH,90.0,278.0,255.0,-0.291,-0.586,-0.065
    Kaileena Sword,Sword,Sword,-90.0,-98.0,0.0,0.02,-0.242,0.0

    kaileena2.jpg
    596 x 610 - 29K
    kaileena.jpg
    452 x 512 - 37K
    kaileena0.jpg
    315 x 566 - 27K
    Post edited by 3dcheapskate on
  • 3dcheapskate3dcheapskate Posts: 2,689
    edited April 2015

    Some Notes About Why Some Props Require Several Datalines... part 2

    In contrast the four weapon props from Orion1167's "Henseki's Rune" in the DAZ store (V4 lh smartprop sword, V4 rh smartprop sword,V4 lh smartprop knife, and V4 rh smartprop knife) all move to the same place after running '1 - UnparentZeroAndProxy' (see screenshot). The handgrips of the knife and sword are more or less identical, and positioned/oriented more-or-less identically. So all four props will use the same translations/rotations. Therefore I only did steps 2, 3, 4 and 5 for one prop. For the other three I ignored steps 2-4 and just did 5 to get the internal/external names. Here'swhat i got (from Poser 9 again):

    :HANDPROXYDATA
    <prpName>,KnifeLt,knifelt:1,0.0,0.0,-90.0,0.0,-0.586,-0.07
    :HANDPROXYDATA
    <prpName>,KnifeRt,knifert:1,...
    :HANDPROXYDATA
    <prpName>,Henseki SwordLt,swordlt:1,...
    :HANDPROXYDATA
    <prpName>,Henseki SwordRt,swordrt:1,...

    Despite being able to use the same translation/rotation parameters for all four, the internal names are different for each. That mean they each requires a separate line. So using the same translations/rotations, removing trailing digits/underscores/commas, and adding a suitable <prpName> I get this:

    # Weapons from "Henseki's Rune" (Orion1167 in the DAZ store)
    Henseki's Rune Knife LH,KnifeLt,knifelt,0.0,0.0,-90.0,0.0,-0.586,-0.07
    Henseki's Rune Knife RH,KnifeRt,knifert,0.0,0.0,-90.0,0.0,-0.586,-0.07
    Henseki's Rune Sword LH,Henseki SwordLt,swordlt,0.0,0.0,-90.0,0.0,-0.586,-0.07
    Henseki's Rune Sword RH,Henseki SwordRt,swordrt,0.0,0.0,-90.0,0.0,-0.586,-0.07

    # The apostrophe in "Henseki's" caused the script to crash, so DON'T USE APOSTROPHES

    No clashes with existing props (the test is case-sensitive, so the "swordrt" is NOT the same as the Kaileena "SwordRT") provided they go before the Fable sword

    Edit: hmmm... interesting. the generic script crashed in Poser with a UTF8 decode error.Quicly tracked down to the apostrophes in "Henseki's" that I used in the datafile. So I've removed those.

    hen2.jpg
    566 x 632 - 31K
    hen.jpg
    341 x 328 - 22K
    Post edited by 3dcheapskate on
  • 3dcheapskate3dcheapskate Posts: 2,689
    edited December 1969

    Thoughts About Avoiding Auto-Match Mismatches

    With only a few props added there's already some internalName clash problems, so it's time to look at improving the auto-match criteria.

    Firstly, can I use external name too? If the auto-match required a match on both external and internal names, then both Henseki's Rune swords could be handled with a single line...

    Hensekis Rune Sword,Henseki Sword,sword,0.0,0.0,-90.0,0.0,-0.586,-0.07

    ...although it wouldn't help with any of the others.

    How about the OBJ filename (assuming the prop was loaded from an OBJ via a PP2 with external geometry). PoserPython can access this via ‘actor.GeomFileName()’, and I'm sure DAZ Script can do something similar - waiting for a reply on the Dev Discussion thread.

    In the meantime I checked the PP2's for a few of the props:

    Fable sword is... you've guessed... Sword.obj
    Kaileena sword is ... kaileena_Sword.obj, kaileena_SwordRH.obj, or kaileena_SwordLH.obj
    Henseki sword is ... SARUNESword.obj

    The Poser 9 katana has geometry embedded in the PP2.

  • MilosGulanMilosGulan Posts: 1,952
    edited December 1969

    I can't say much but I am hoping that names and links will not be that much of a problem :) For me I have done S1 HER and HIM now need to do Orc and few others.

  • 3dcheapskate3dcheapskate Posts: 2,689
    edited April 2015

    gulan7 said:
    I can't say much but I am hoping that names and links will not be that much of a problem :) For me I have done S1 HER and HIM now need to do Orc and few others.

    Regarding name mismatches from the auto-match: at worst this will mean that the user has to select the prop manually from the drop-down list. (Unfortunately the chances of accessing the OBJ filename from DAZ Script doesn't look too promising at the moment... Edit: I take that back - just got the basics working! :) - for any code-monkeys here's the post - rather easy really)

    Regarding links: I've tried to use the exact name of the product in the store (DAZ or otherwise), so you should just be able to search the relevant store to find the item. But I mainly expect people to use the list to grab free hand-held props, or to see if commercial stuff they already have is supported.

    Post edited by 3dcheapskate on
  • 3dcheapskate3dcheapskate Posts: 2,689
    edited April 2015

    Possible Way Forward For Better Auto-Matching Of Props ?

    Thanks to feedback from Richard I've now found out the DAZ Script way to get the OBJ filename that a prop was loaded from (assuming it was loaded this way). If the prop was loaded another way (e.g. DUF, or PP2 with embedded geometry) then I get something different, but still meaningful and useful. Need to see what the the PoserPython version returns (edit: act.GeomFileName() returns full absolute path , name, and extension of OBJ/OBZ, or NoneType if the geometry was embedded in the PP2). But it's looking as if an extra 'geometryName' field in the dataline might be what's needed...

    <propName>,<externalName>,<internalName>,<geometryName>,...

    Plus I'm considering that a match against all three fields (externalName, internalName, and geometryName) might be the way to go - that needs a bit more thought.

    I'm also wondering about putting multiple values for each field on a single line (again triggered by the new props I've added). E.g. something like this...

    Kaileena Sword,SwordRH/SwordLH/Sword,SwordRH/SwordLH/Sword,kaileena_SwordRH/kaileena_SwordLH/kaileena_Sword,-90.0,278.0,-255.0,0.291,-0.586,-0.065

    Nothing definite yet - just juggling ideas and pros and cons...


    Edit: A bit more progress. The DAZ Script method for getting a geometry name always returns a useful string, but the PoserPython method only returns a string if the prop was loaded from an OBJ via a PP2 (Note: I don't use DSON, so I'm only considering PP2-based props for Poser)

    Here's a few datalines direct from running my new GetProxyData script in DS4.6 (I've removed the rots/trans as they're not relevant here)...


    :HANDPROXYDATA
    {propName},Katana,Katana_184,Katana,...
    {propName},SwordRH,kaileena_SwordRH_11369,kaileena_SwordRH,0...
    {propName},Henseki SwordRt,SARUNESword_5586,SARUNESword,
    {propName},SwordScbrd,Sword_2693,Sword,...
    {propName},Katana In-Hand,KatanaInHand for Genesis,A_JScoutKatanaInHand,...


    In Poser 9 the corresponding script now gives these sort of results...

    :HANDPROXYDATA
    ,Katana_1,Katana,,...
    ,SwordRH,SwordRH:1,kaileena_SwordRH,...
    ,Henseki SwordRt,swordrt:1,SARUNESword,...
    ,SwordScbrd_1,Sword 1,Sword,...

    And here's a couple from DS3...

    :HANDPROXYDATA
    {propName},Henseki SwordRt,swordrt,SARUNESword,...
    {propName},Katana,Katana,Katana,...

    A couple of things struck me:
    1) If a user is ONLY using DAZ Studio then leaving the '_11369' or whatever at the end of the internal name is fine, and improves chances for a correct match. But this is no good if the user also uses Poser, as Poser and DS use the same datafile.
    2) As I mentioned before, a prop with geometry embedded in the PP2 gives a null 'geometryName' field.

    Not sure where this is going, but I wanted to type it up before shutting down the computer.

    Post edited by 3dcheapskate on
  • 3dcheapskate3dcheapskate Posts: 2,689
    edited November 2015

    Seven months later ...

    Back To The Auto-Matching Of Props

    I'm now working on the basis of using three pieces of data to do the HANDPROXYDATA auto-matching

    {externalName}    {internalName}      {geometryName}         ...field names (based on Poser)
    act.Name()        act.InternalName()  act.GeomFileName()   ...PoserPython functions
    oProp.getLabel()  oProp.name          oGeom.name             ...DAZ Script methods

    Although this will probably mean 4 fields in each HANDPROXYDATA line:

    {externalName}    {internalName}      {geometryName}         {DSName}        ...an additional field specifically for DS is the best way to get a correct match in DS3/4 (see next post)

    Here's a couple of simple scripts and results from a quick test with a selection of the props for which we already have HANDPROXYDATA. The results aren't necessarily in the same order for each test:

    DAZ (WeaponsTest.dsa)
    =====================
    var prop = Scene.getPrimarySelection();       //DzNode     DzScene::getPrimarySelection ()
    var oProp = prop.getObject();       //DzObject     DzNode::getObject ()  ... in my main script oProp is actually a DzNode - in DS3 oProp.name/getLabel() give the Poser values
    oShape = oProp.getCurrentShape()
    oGeom = oShape.getGeometry()
    print("oProp.getLabel()=",oProp.getLabel(),", oProp.name = ",oProp.name,", oGeom.name =",oGeom.name)

    DS3
    ===
    DEBUG: oProp.getLabel()= AK_katana_39283 , oProp.name =  AK_katana_39283 , oGeom.name = AK_katana
    DEBUG: oProp.getLabel()= saberhandle_19135 , oProp.name =  saberhandle_19135 , oGeom.name = WeaponsTest          ....??? something odd here*
    DEBUG: oProp.getLabel()= Sword_2693 , oProp.name =  Sword_2693 , oGeom.name = Sword
    DEBUG: oProp.getLabel()= kaileena_Sword_11369 , oProp.name =  kaileena_Sword_11369 , oGeom.name = kaileena_Sword
    DEBUG: oProp.getLabel()= AK_katana_39283 , oProp.name =  AK_katana_39283 , oGeom.name = AK_katana
    DEBUG: oProp.getLabel()= Sword_2693 , oProp.name =  Sword_2693 , oGeom.name = Sword
    DEBUG: oProp.getLabel()= SARUNESword_5586 , oProp.name =  SARUNESword_5586 , oGeom.name = SARUNESword
    DEBUG: oProp.getLabel()= SARUNEKnife_5586 , oProp.name =  SARUNEKnife_5586 , oGeom.name = SARUNEKnife
    DEBUG: oProp.getLabel()= kaileena_SwordLH_11369 , oProp.name =  kaileena_SwordLH_11369 , oGeom.name = kaileena_SwordLH
    DEBUG: oProp.getLabel()= Sword_2693 , oProp.name =  Sword_2693 , oGeom.name = Sword
    DEBUG: oProp.getLabel()= SARUNESword_5586 , oProp.name =  SARUNESword_5586 , oGeom.name = SARUNESword
    DEBUG: oProp.getLabel()= SARUNEKnife_5586 , oProp.name =  SARUNEKnife_5586 , oGeom.name = SARUNEKnife
    DEBUG: oProp.getLabel()= kaileena_SwordRH_11369 , oProp.name =  kaileena_SwordRH_11369 , oGeom.name = kaileena_SwordRH

    DS4.8
    =====
    DEBUG: oProp.getLabel()= kaileena_Sword_11369 , oProp.name =  kaileena_Sword_11369 , oGeom.name = kaileena_Sword
    DEBUG: oProp.getLabel()= WeaponsTest_19135 , oProp.name =  WeaponsTest_19135 , oGeom.name = WeaponsTest          ....??? something very odd here*
    DEBUG: oProp.getLabel()= AK_katana_39283 , oProp.name =  AK_katana_39283 , oGeom.name = AK_katana
    DEBUG: oProp.getLabel()= kaileena_SwordRH_11369 , oProp.name =  kaileena_SwordRH_11369 , oGeom.name = kaileena_SwordRH
    DEBUG: oProp.getLabel()= SARUNEKnife_5586 , oProp.name =  SARUNEKnife_5586 , oGeom.name = SARUNEKnife
    DEBUG: oProp.getLabel()= SARUNESword_5586 , oProp.name =  SARUNESword_5586 , oGeom.name = SARUNESword
    DEBUG: oProp.getLabel()= Sword_2693 , oProp.name =  Sword_2693 , oGeom.name = Sword
    DEBUG: oProp.getLabel()= AK_katana_39283 , oProp.name =  AK_katana_39283 , oGeom.name = AK_katana
    DEBUG: oProp.getLabel()= kaileena_SwordLH_11369 , oProp.name =  kaileena_SwordLH_11369 , oGeom.name = kaileena_SwordLH
    DEBUG: oProp.getLabel()= SARUNEKnife_5586 , oProp.name =  SARUNEKnife_5586 , oGeom.name = SARUNEKnife
    DEBUG: oProp.getLabel()= SARUNESword_5586 , oProp.name =  SARUNESword_5586 , oGeom.name = SARUNESword
    DEBUG: oProp.getLabel()= Sword_2693 , oProp.name =  Sword_2693 , oGeom.name = Sword
    DEBUG: oProp.getLabel()= AK_katana_39283 , oProp.name =  AK_katana_39283 , oGeom.name = AK_katana

    Poser script
    ============
    import poser
    act = poser.Scene().CurrentActor()
    sGeom=act.GeomFileName()
    if not sGeom:
        print("act.Name()="+act.Name()+", act.InternalName()="+act.InternalName()+", act.GeomFileName()=NONE")
    else:
        aName=string.split(sGeom,'\\')
        aFileExt=string.split(aName[len(aName)-1],'.')
        print("act.Name()="+act.Name()+", act.InternalName()="+act.InternalName()+", act.GeomFileName()="+aFileExt[0])

    Poser9
    ======
    act.Name()=AK_katana_2_1, act.InternalName()=AK_katana_2:1, act.GeomFileName()=AK_katana
    act.Name()=saberhandle_1, act.InternalName()=saberhandle, act.GeomFileName()=NONE
    act.Name()=Sword_2, act.InternalName()=Sword 1, act.GeomFileName()=Sword
    act.Name()=Sword_1, act.InternalName()=Sword, act.GeomFileName()=kaileena_Sword
    act.Name()=AK_katana_1, act.InternalName()=AK_katana_1:1, act.GeomFileName()=AK_katana
    act.Name()=AK_katana, act.InternalName()=AK_katana:1, act.GeomFileName()=AK_katana
    act.Name()=SwordRH 1, act.InternalName()=Sword 3:1, act.GeomFileName()=Sword
    act.Name()=SwordLH 1, act.InternalName()=Sword 2:1, act.GeomFileName()=Sword
    act.Name()=Henseki SwordRt, act.InternalName()=swordrt:1, act.GeomFileName()=SARUNESword
    act.Name()=Henseki SwordLt, act.InternalName()=swordlt:1, act.GeomFileName()=SARUNESword
    act.Name()=KnifeRt, act.InternalName()=knifert:1, act.GeomFileName()=SARUNEKnife
    act.Name()=KnifeLt, act.InternalName()=knifelt:1, act.GeomFileName()=SARUNEKnife
    act.Name()=SwordRH, act.InternalName()=SwordRH:1, act.GeomFileName()=kaileena_SwordRH
    act.Name()=SwordLH, act.InternalName()=SwordLH:1, act.GeomFileName()=kaileena_SwordLH

    Just posting these for reference - I think I can now see how this is going to work...

    *This turned out to be because the original lightsaber had its geometry embedded in a PP2, and all the props here were imported from a Poser scene PZ3

    Post edited by 3dcheapskate on
  • 3dcheapskate3dcheapskate Posts: 2,689
    edited November 2015

    Brief Analysis Of The Results In The Previous Post

    Referring to the previous post, the lightsaber seems to be giving some odd results. It's the only one with an embedded geometry (hence the 'act.GeomFileName()=NONE' in the Poser 9 test), and it also has a child prop, the blade  (which doesn't appear here) The oddest thing is that the DAZ script results for some reason get the name of the test script itself as the geometry name! 'oGeom.name = WeaponsTest' {edit: incorrect analysis - the PZ3 file was also named 'WeaponsTest'...}

    For all the other weapon props the DAZ Script oGeom.name and PoserPython act.GeomFileName() (after stripping off the path and extension) seem to match perfectly, and with less conflict than using the {internalName}.

    It's also very clear now that the DAZStudio oProp.getLabel() or oProp.name are the best thing to use for the auto-match in DAZ Studio - the same values in DS3 and DS4. {edit: the _<propVertexCount> significantly reduces the chances of a mismatch )

    So the main issue now is back with Poser, and whether possibly a combination of act.Name() and act.InternalName() together with the stripped-down act.GeomFileName() can give a high rate of successful auto-matches.

     

    Post edited by 3dcheapskate on
  • 3dcheapskate3dcheapskate Posts: 2,689
    edited November 2015

    The LightSaber Isn't The Problem - Importing Props Into DAZ Studio From A PZ3 Is

    The oddity with the Lightsaber doesn't seem to be anything to do with the PP2 having embedded geometry. Running the same DS/PP test scripts in DS4.8/P9 on another simple PP2 prop with embeddedgeometry I get this:

    act.Name()=1mSquare_1, act.InternalName()=1mSquare, act.GeomFileName()=NONE

    DEBUG: oProp.getLabel()= 1m x 1m Plane_4 , oProp.name =  1m x 1m Plane_4 , oGeom.name = 1m x 1m Plane

    Just loaded the lightsaber PP2 into DS4.8 again and it nowseems fine!

    DEBUG: oProp.getLabel()= ESB Skywalker Lightsaber_19135 , oProp.name =  ESB Skywalker Lightsaber_19135 , oGeom.name = ESB Skywalker Lightsaber

    Ah! Just realized the it's only when I load the lightsaber by importing a PZ3 Poser scene file including the lightsaber into DS that I get the problem:

    DEBUG: oProp.getLabel()= WeaponsTest_19135 , oProp.name =  WeaponsTest_19135 , oGeom.name = WeaponsTest

     

    Edit: just did a further test - loaded my 1m x 1m Plane prop and the lightsaber prop into Poser 9, saved as a PZ3, imported that into DS4.8 and ran the test script on each prop:

    DS3
    ===
    Loaded file: Untitled.pz3
    Executing DAZ Script file: H:/Poser/!ONGOING/runtime/libraries/props/Temporary/WeaponsTest - Copy.dsa
    DEBUG: oProp.getLabel()= 1mSquare_4 , oProp.name =  1mSquare_4 , oGeom.name = Untitled
    Script executed successfully.
    Ran tdlmake on image H:/Poser/Additional/Runtime/Textures/fantascope/star wars/saber metal.jpg
    Executing DAZ Script file: H:/Poser/!ONGOING/runtime/libraries/props/Temporary/WeaponsTest - Copy.dsa
    DEBUG: oProp.getLabel()= saberhandle_19135 , oProp.name =  saberhandle_19135 , oGeom.name = Untitled
    Script executed successfully.

    DS4.8
    =====

    Loaded file: Untitled.pz3
    Loading script: H:/Poser/!ONGOING/runtime/libraries/Props/Temporary/WeaponsTest - Copy.dsa
    DEBUG: oProp.getLabel()= Untitled_4 , oProp.name =  Untitled_4 , oGeom.name = Untitled
    Script executed successfully: H:/Poser/!ONGOING/runtime/libraries/Props/Temporary/WeaponsTest - Copy.dsa
    Loading script: H:/Poser/!ONGOING/runtime/libraries/Props/Temporary/WeaponsTest - Copy.dsa
    DEBUG: oProp.getLabel()= Untitled_19135 , oProp.name =  Untitled_19135 , oGeom.name = Untitled
    Script executed successfully: H:/Poser/!ONGOING/runtime/libraries/Props/Temporary/WeaponsTest - Copy.dsa

    Puzzle resolved - the oGeom.name that DS gives to ANY prop from an imported PZ3 (edit)that originally had its geometry embedded in a PP2 is the PZ3 filename. And in DS4.8 the oProp.name/oProp.getLabel() are just this filename plus _<propVertexCount>

    So when a prop is imported into DS from a PZ3 the existing release 3 beta automatching method will work in DS3. But in DS4.8 the ONLY possible way to match is by comparing the _<propVertexCount> part of oProp.name with the corresponding part of the {DSname} field. I think that might be ggod enough for most cases, but there's always a chance of mismatch

    Post edited by 3dcheapskate on
  • 3dcheapskate3dcheapskate Posts: 2,689
    edited November 2015

    Extra data for the rest of the props we already have (except Cleave/Scythe, which I don't have)

    DS3
    ===
    DEBUG: oProp.getLabel()= B9BB_Treebranch_1082 , oProp.name =  B9BB_Treebranch_1082 , oGeom.name = B9BB_Treebranch
    DEBUG: oProp.getLabel()= B9BB_Stoneclub_1856 , oProp.name =  B9BB_Stoneclub_1856 , oGeom.name = B9BB_Stoneclub
    DEBUG: oProp.getLabel()= B9BB_Spikeclub_2830 , oProp.name =  B9BB_Spikeclub_2830 , oGeom.name = B9BB_Spikeclub
    DEBUG: oProp.getLabel()= B9BB_Shillelagh_562 , oProp.name =  B9BB_Shillelagh_562 , oGeom.name = B9BB_Shillelagh
    DEBUG: oProp.getLabel()= B9BB_Blockbuster_1316 , oProp.name =  B9BB_Blockbuster_1316 , oGeom.name = B9BB_Blockbuster
    DEBUG: oProp.getLabel()= Roman_Sword_877 , oProp.name =  Roman_Sword_877 , oGeom.name = Roman_Sword
    DEBUG: oProp.getLabel()= Persian_Sword_933 , oProp.name =  Persian_Sword_933 , oGeom.name = Persian_Sword
    DEBUG: oProp.getLabel()= Medieval_Sword_675 , oProp.name =  Medieval_Sword_675 , oGeom.name = Medieval_Sword
    DEBUG: oProp.getLabel()= Katana_184 , oProp.name =  Katana_184 , oGeom.name = Katana
    DEBUG: oProp.getLabel()= Bone_Sword_637 , oProp.name =  Bone_Sword_637 , oGeom.name = Bone_Sword

    DEBUG: oProp.getLabel()= Demoniac_Sword_888 , oProp.name =  Demoniac_Sword_888 , oGeom.name = Demoniac_Sword

    DS4.8

    ====

    DEBUG: oProp.getLabel()= Shillelagh_12034 , oProp.name =  Shillelagh_12034 , oGeom.name = Shillelagh
    DEBUG: oProp.getLabel()= KatanaInHand for Genesis , oProp.name =  KatanaInHand for Genesis , oGeom.name = A_JScoutKatanaInHand
    DEBUG: oProp.getLabel()= Staff for Genesis , oProp.name =  Staff for Genesis , oGeom.name = A_MagusStaff
    DEBUG: oProp.getLabel()= JScoutKatanaInHand_1947 , oProp.name =  JScoutKatanaInHand_1947 , oGeom.name = JScoutKatanaInHand
    DEBUG: oProp.getLabel()= JScoutKatana_1947 , oProp.name =  JScoutKatana_1947 , oGeom.name = JScoutKatana

    P9
    ==
    act.Name()=Treebranch_1, act.InternalName()=B9BB_Treebranch, act.GeomFileName()=B9BB_Treebranch
    act.Name()=Stoneclub_1, act.InternalName()=B9BB_Stoneclub, act.GeomFileName()=B9BB_Stoneclub
    act.Name()=Spikeclub_1, act.InternalName()=B9BB_Spikeclub, act.GeomFileName()=B9BB_Spikeclub
    act.Name()=Shillelagh_1, act.InternalName()=B9BB_Shillelagh, act.GeomFileName()=B9BB_Shillelagh
    act.Name()=Blockbuster_1, act.InternalName()=B9BB_Blockbuster, act.GeomFileName()=B9BB_Blockbuster
    act.Name()=Roman_Sword_1, act.InternalName()=Roman_Sword, act.GeomFileName()=NONE
    act.Name()=Persian_Sword_1, act.InternalName()=Persian_Sword, act.GeomFileName()=NONE
    act.Name()=Medieval_Sword_1, act.InternalName()=Medieval_Sword, act.GeomFileName()=NONE
    act.Name()=Katana_1, act.InternalName()=Katana, act.GeomFileName()=NONE
    act.Name()=Demoniac_Sword_1, act.InternalName()=Demoniac_Sword, act.GeomFileName()=NONE
    act.Name()=Bone_Sword_1, act.InternalName()=Bone_Sword, act.GeomFileName()=NONE

    act.Name()=JScoutKatana_1, act.InternalName()=JScoutKatana, act.GeomFileName()=JScoutKatana
    act.Name()=JScoutKatanaInHand, act.InternalName()=JScoutKatanaInHand:1, act.GeomFileName()=JScoutKatanaInHand

    The original Genesis 1 props don't appear to use the <geomName>_<vertexCount> format...

    Three props are DUF only format, so I can't get Poser data for them

    I've updated my working copy of SmartPlusData.txt - next step is to start updating the DS and Poser scripts to use this new format. Hoping to have a release 3 beta 2 of both DS and Poser by end of next week.

    Post edited by 3dcheapskate on
  • 3dcheapskate3dcheapskate Posts: 2,689
    edited December 2015

    I Think I'm Almost There Now - New Dataline Format...

    After much running round in circles and banging my head against various walls, I've now settled on six fields for the auto-matching. The full dataline format is:

    <propName>,<vertexCount>,<poserGeometryName>,<poserInternalName>,<poserExternalName>,<dsGeometryName>,<ds4Name>,<yR>,<xR>,<zR>,<xT>,<yT>,<zT>

    The 2nd to 7th fields are the ones used for matching against the selected prop. The following note

    ...,<vertexCount>,<poserGeometryName>,<poserInternalName>,<poserExternalName>,<dsGeometryName>,<ds4Name>,...

    Field values for the datafile are obtained by loading the prop from a PP2* (or DUF) and using updated versions of the Poser and/or DAZ Studio helper scripts (note -actor is the PoserPython Actor object for the prop, and nProp is the DAZ Script DzNode for the prop):

    <vertexCount>
     - Poser: actor.Geometry().NumVertices()
     - DS3/4: nProp.getObject().getCurrentShape().getGeometry().getNumVertices()
    <poserGeometryName>
     - Poser: actor.GeomFileName() ... this returns full path, filename, and extension. I extract just the filename. If it returns NoneType
     - DS3/4: N/A
    <poserInternalName>
     - Poser: actor.InternalName() ... may need to strip trailing instance identifiers
     - DS3: nProp.name ... may need to strip trailing instance identifiers
     - DS4: N/A
    <poserExternalName> ... I don't actually use this field
     - Poser: actor.Name() ... may need to strip trailing instance identifiers
     - DS3/4: nProp.getLabel() ... may need to strip trailing instance identifiers
    <dsGeometryName>
     - DS3/4: nProp.getObject().getCurrentShape().getGeometry().name is the DzNode for the prop
    <ds4Name>
     - Poser: N/A
     - DS3: N/A
     - DS4: nProp.name

    *The prop should NOT be loaded into DAZ Studio from a .PZ3 or .DAZ because this may create incorrect values:
    - If a PP2 prop was is loaded into DS3/4 in a .DAZ scene file then nProp.getObject().getCurrentShape().getGeometry().name will return "geometry"
    - If a PP2 prop with embedded geometry is imported into DS3/4 in a .DAZ scene file the  nProp.getObject().getCurrentShape().getGeometry().name will return the filename of the PZ3 file.

    (Associated post on the main "Wouldn't It Be Nice If SmartProps Worked With More Than Just One Figure..." thread here http://www.daz3d.com/forums/discussion/comment/973849/#Comment_973849 )

    Post edited by 3dcheapskate on
  • 3dcheapskate3dcheapskate Posts: 2,689
    edited January 2016

    New Release 3 HANDPROXYDATA Dataline Format (Version 1.03)

    Please note that this is completely different from the previous Release 3 beta format.

    (There are 29th January 2016 posts on the main thread for the  Poser Release 3 version and DAZ Studio Release 3 version  )

    These are the comment lines for the HANDPROXYDATA section of the Release 3 'SmartPlusData.txt' file - they specify the new format:

    :HANDPROXYDATA

    # Dataline Syntax:
    # <propName>,<vertexCount>,<poserGeometryName>,<poserInternalName>,<poserExternalName>,<dsGeometryName>,<ds4Name>,<yR>,<xR>,<zR>,<xT>,<yT>,<zT>
    # Details:
    # To create a full dataline you need both Poser and DAZ Studio.
    # The Poser 'GetProxyData' script will put "???" in fields that must be created by DAZ Studio version, and vice versa:
    # - <propName>: A user-defined name to uniquely identify the non-Smart+ prop, for display on the confirmation dialogue and drop-down list
    #               Spaces and any printable ASCII characters (EXCEPT FOR COMMAS) are allowed
    # - <vertexCount>: The number of vertices in the prop geometry, as obtained using PoserPython act.Geometry().NumVertices() or DAZ Script oGeom.getNumVertices() #                  (Both give the same number for all props I've tried)
    # - <poserGeometryName>: The geometry filename for the prop, as obtained using PoserPython act.GeomFileName() and stripping off the path and extension
    #                        For a PP2 with external geometry this is the filename of the external OBJ
    #                        If the PP2 had embedded geometry act.GeomFileName() will return NoneType, and this field will be set to "EMBEDDED" (without the quotes)
    #                        I don't use the Poser DSON stuff - if you load a DS4-native prop into Poser I guess this will be the geometry name from the DUF
    # - <poserInternalName>: Poser's internal name for the prop, as obtained using PoserPython act.InternalName(), with any trailing ":1" etc stripped off
    #                        DS3 (but NOT DS4!) can also create this field using DAZ Script oProp.name
    #                        (N.B. This field may contain multiple values separated by a / forward-slash)
    # - <poserExternalName>: Poser's external name for the prop, as obtained using PoserPython act.Name(), with any trailing "_1" etc stripped off
    #                        DS3 and DS4 can create this field using DAZ Script oProp.getLabel()
    #                        (N.B. This field may contain multiple values separated by a / forward-slash)
    # - <dsGeometryName>: The geometry filename for the prop, as obtained using DAZ Script oGeom.name in DS3 or DS4
    #                     If the prop was a PP2 with external OBJ this should be exactly the same value as <poserGeometryName>
    #                     If the PP2 had embedded geometry this will be the PP2 filename, different from <poserGeometryName>
    #                     If the prop was DS4-native and loaded from a DUF this should be the geometry name from the DUF (I think)
    # - <ds4Name>:  DAZ Studio 4's name for the prop, as obtained using DAZ Script oProp.name.
    #               If the prop was loaded from a PP2 it will (usually?) be "<dsGeometryName>_<numberOfVertices>"
    #               If the prop is DS4-native (i.e. it was loaded from a DUF) then it will be whatever the author named it.
    #               (THIS FIELD CAN ONLY BE CREATED FROM DS4)
    # - <yR>,<xR>,<zR>: YXZ rotations to align the NON-Smart+ Prop correctly in the zeroed DummyHand proxy. (N.B. YXZ order, not the usual x, y, z). All three values in degrees.
    # - <xT>,<yT>,<zT>: XYZ translations to position the NON-Smart+ prop correctly in the zeroed DummyHand proxy. All three values in Poser units.
    # Notes:
    # The ORDER of similarly named props is now only important for props that have an identical number of vertices

     

     

     

    Post edited by 3dcheapskate on
  • 3dcheapskate3dcheapskate Posts: 2,689
    edited January 2016

    The HANDPROXYDATA For The 100+ Props Supported By Release 3

    I've included support for many of the hand-held props that I have in my runtime (the data for "Cleave" which I don't have will probably be wrong). Swords, guns, everyday stuff like umbrellas. All these props are either freebies or were bought by my alter ego with the money

    These are the HANDPROXYDATA datalines included in the Release 3 'SmartPlusData.txt' file:

    # Props that came with DS4.6 Pro
    Genesis Magus Staff,40026,???,???,Staff,A_MagusStaff,Staff for Genesis,0.000,90.000,0.000,0.000,-0.513,-0.035
    Genesis Katana In Hand,1947,???,???,Katana In-Hand,A_JScoutKatanaInHand,KatanaInHand for Genesis,17.881,21.611,76.492,0.292,-0.590,-0.072

    # The six swords that come with Poser 9
    Demoniac Sword (Poser 9),888,EMBEDDED,Demoniac_Sword,Demoniac_Sword,Demoniac_Sword,Demoniac_Sword_888,0.0,-90.0,90.0,0.4588,-0.76,-0.0011
    Bone Sword (Poser 9),637,EMBEDDED,Bone_Sword,Bone_Sword,Bone_Sword,Bone_Sword_637,0.0,-90.0,90.0,-0.2834,-0.5799,0.0
    Katana (Poser 9),184,EMBEDDED,Katana,Katana,Katana,Katana_184,0.0,-90.0,-90.0,0.1443,-0.5973,0.0
    Medieval Sword (Poser 9),675,EMBEDDED,Medieval_Sword,Medieval_Sword,Medieval_Sword,Medieval_Sword_675,0.0,-90.0,90.0,0.301,-0.6144,0.0
    Roman Sword (Poser 9),877,EMBEDDED,Roman_Sword,Roman_Sword,Roman_Sword,Roman_Sword_877,0.0,-90.0,90.0,-0.1454,-0.5926,-0.0002
    Persian Sword (Poser 9),933,EMBEDDED,Persian_Sword,Persian_Sword,Persian_Sword,Persian_Sword_933,90.0,-87.0,180.0,0.0,-0.6025,-0.0005

    # Sword from “Kaileena For PBIV” (Pretty3D/Mytilus at Renderosity) - separate line required for each, as they require significantly different parameter values
    # (The lines for the LH/RH versions must be before the basic version to ensure that the LH/RH props match the correct line)
    Kaileena Sword RH,11369,kaileena_SwordRH,SwordRH,SwordRH,kaileena_SwordRH,kaileena_SwordRH_11369,-90.0,278.0,-255.0,0.291,-0.586,-0.065
    Kaileena Sword LH,11369,kaileena_SwordLH,SwordLH,SwordLH,kaileena_SwordLH,kaileena_SwordLH_11369,90.0,278.0,255.0,-0.291,-0.586,-0.065
    Kaileena Sword,11369,kaileena_Sword,Sword,Sword,kaileena_Sword,kaileena_Sword_11369,-90.0,-98.0,0.0,0.02,-0.242,0.0

    # Weapons from “Henseki’s Rune” (Orion1167 in the DAZ store) - left/right hand versions can be put onto the same line as they have the same parameters
    V4 Hensekis Rune Knife,5586,SARUNEKnife,knifelt/knifert,KnifeLt/KnifeRt,SARUNEKnife,SARUNEKnife_5586,0.0,0.0,-90.0,0.0,-0.586,-0.07
    V4 Hensekis Rune Sword,5586,SARUNESword,swordlt/swordrt,Henseki SwordLt/Henseki SwordRt,SARUNESword,SARUNESword_5586,0.0,0.0,-90.0,0.0,-0.586,-0.07

    # Freebies from ShareCG
    M4 Fable Sword (dyald),2693,Sword,Sword,Sword,Sword,Sword_2693,0.0,-90.0,90.0,0.0,-0.334,-0.09
    Lightsaber (fantascopefilms),19135,EMBEDDED,saberhandle,saberhandle,ESB Skywalker Lightsaber,ESB Skywalker Lightsaber_19135,0.000,90.000,180.000,-0.001,-0.198,0.000
    Shilleliegh (mjc26250),3010,???,???,shil2,shil2,shil2,-16.804,16.143,0.000,0.345,-0.522,0.150

    # Freebies from RDNA
    Akira Katana,39283,AK_katana,AK_katana,AK_katana,AK_katana,AK_katana_39283,0.0,-184.0,2.0,0.0787,-0.4853,-0.234

    # From “Journeyer Scout For M4" in the DAZ Store - separate line required for each, as they require significantly different parameter values
    Journeyer Scout Katana (In Hand),1947,JScoutKatanaInHand,JScoutKatanaInHand,JScoutKatanaInHand,JScoutKatanaInHand,JScoutKatanaInHand_1947,16.0,22.0,76.0,0.323,-0.6073,-0.063
    Journeyer Scout Katana (In Scabbard),1947,JScoutKatana,JScoutKatana,JScoutKatana,JScoutKatana,JScoutKatana_1947,174.0,-46.0,0.0,-0.0709,-0.4889,-0.044

    # Five props from “Bashers And Bludgeons” in the DAZ Store
    Blockbuster (Bashers + Bludgeons),1316,B9BB_Blockbuster,B9BB_Blockbuster,Blockbuster,B9BB_Blockbuster,B9BB_Blockbuster_1316,0.0,0.0,0.0,0.0,-0.6078,-0.1771
    Shillelagh (Bashers + Bludgeons),562,B9BB_Shillelagh,B9BB_Shillelagh,Shillelagh,B9BB_Shillelagh,B9BB_Shillelagh_562,0.0,0.0,0.0,0.0014,-0.6107,-0.13
    Spikeclub (Bashers + Bludgeons),2830,B9BB_Spikeclub,B9BB_Spikeclub,Spikeclub,B9BB_Spikeclub,B9BB_Spikeclub_2830,0.0,0.0,0.0,-0.0008,-0.5937,-0.1388
    Stoneclub (Bashers + Bludgeons),1856,B9BB_Stoneclub,B9BB_Stoneclub,Stoneclub,B9BB_Stoneclub,B9BB_Stoneclub_1856,0.0,0.0,0.0,0.0005,-0.6129,-0.1697
    Treebranch (Bashers + Bludgeons),1082,B9BB_Treebranch,B9BB_Treebranch,Treebranch,B9BB_Treebranch,B9BB_Treebranch_1082,0.0,0.0,0.0,0.0013,-0.6118,-0.1358
    # Nailboard is too broad for the usual hand pose
    Nailboard (Bashers + Bludgeons),1110,B9BB_Board,B9BB_Board,NailBoard,B9BB_Board,B9BB_Board_1110,0.0,0.0,0.0,0.0,-0.5989,-0.1287

    # Sword from "Angeluz Fantasy Armor" in the DAZ Store
    Angeluz Sword,2893,AngzeSword,Ang2HSword,Ang2HSword,AngzeSword,AngzeSword_2893,90.0,-90.0,0.0,0.0,-0.577,0.0

    # Old Traveler freebies from RDNA
    Hunter Dagger (Traveler),3002,EMBEDDED,HunterDagger,HunterDagger,Hunter Blade,Hunter Blade_3002,90.0,-90.0,0.0,0.002,-0.138,0.0
    Barbarian Hand Axe (Traveler),8421,Tr_BarbarianHandAxe,Tr_BarbarianHandAxe,Tr_BarbarianHandAxe,Tr_BarbarianHandAxe,Tr_BarbarianHandAxe_8421,0.0,90.0,0.0,0.0,-0.06,0.0
    Bowie Knife (Traveler),7887,TrBowieKnife01,TrBowieKnife01,TrBowieKnife01,TrBowieKnife01,TrBowieKnife01_7887,0.0,-90.0,0.0,-0.001,-0.077,0.0
    Rope Coil (Traveler),12156,AdGearRope1,AdGearRope1,AdGearRope1,AdGearRope1,AdGearRope1_12156,90.0,0.0,0.0,0.008,-0.132,0.0
    Grappling Hook (Traveler),2856,AdGearGrapple,AdGearGrapple,AdGearGrapple,AdGearGrapple,AdGearGrapple_2856,0.0,90.0,0.0,0.0,-0.033,0.0

    #Yamato's Umbrella
    Umbrella (Yamato),5199,EMBEDDED,Yamatoumbrella2,Yamatoumbrella2,kasa,kasa_5199,0.0,90.0,0.0,0.0,-0.327,0.0

    #DAZ Ryuji Dragon Spear
    Ryuji Dragon Spear,4456,RyujiSpear_RyuSpear,RyuSpear,RyuSpear,RyujiSpear_RyuSpear,RyujiSpear_RyuSpear_4456,0.0,90.0,0.0,0.0,-0.387,0.0

    Digital SLR,66365,EMBEDDED,digital single lens camera,digital single lens camera,camera,camera_66365,0.0,90.0,0.0,0.0187,-0.0706,-0.058
    # The '_1' in the Poser internal/external names for the Biwa is correct
    Biwa (Yamato),8732,EMBEDDED,YamatoBiwa6_1,YamatoBiwa6_1,Biwa,Biwa_8732,0.0,90.0,0.0,0.0,-0.435,-0.02
    Rababa (Arabian Music),9423,EMBEDDED,Rababa,Rababa,Rababa,Rababa_9423,0.0,90.0,0.0,0.0,-0.229,0.071
    Rababa Bow (Arabian Music),690,EMBEDDED,Rababa-Bow,Rababa-Bow,Rababa Bow,Rababa Bow_690,90.0,0.0,90.0,0.017,-0.188,-0.022
    Nay (Arabian Music),2399,EMBEDDED,Nay,Nay,Nay,Nay_2399,0.0,90.0,0.0,0.0,0.0,0.0
    Dragon Bow (Arcane Archery),15944,valFancyDragonBow,DragonBow,DragonBow,valFancyDragonBow,valFancyDragonBow_15944,0.0,0.0,-90.0,-0.3279,-0.5931,-0.074
    Dragon Arrow (Arcane Archery),16190,valFancyArrow002,DragonArrow,DragonArrow,valFancyArrow002,valFancyArrow002_16190,75.0,0.0,0.0,0.5528,-0.6021,-0.1144
    Egyptian Bow (Arcane Archery),14298,valFancyEgyptianBow,EgyptBow,EgyptBow,valFancyEgyptianBow,valFancyEgyptianBow_14298,0.0,0.0,-87.0,-0.3239,-0.5928,-0.0732
    Egyptian Arrow (Arcane Archery),21496,valFancyArrow003,EgyptArrow,EgyptArrow,valFancyArrow003,valFancyArrow003_21496,75.0,0.0,0.0,0.5329,-0.6008,-0.11
    Tribal Bow (Arcane Archery),21100,valFancyTribalBow,TribalBow,TribalBow,valFancyTribalBow,valFancyTribalBow_21100,0.0,0.0,-90.0,-0.3268,-0.5939,-0.0731
    Tribal Arrow (Arcane Archery),3730,valFancyArrow001,TribalArrow,TribalArrow,valFancyArrow001,valFancyArrow001_3730,75.0,0.0,0.0,0.5439,-0.6008,-0.1136
    Colt (ChuckNepo),70598,EMBEDDED,Colt,Colt,Colt M1911,Colt M1911_70598,0.0,75.0,0.0,-0.0,-0.058,0.0329
    Gatling Gun (Traveler),23062,Tr_HeavyArmsGattlingGun,Tr_HeavyArmsGattlingGun,Tr_HeavyArmsGattlingGun,Tr_HeavyArmsGattlingGun,Tr_HeavyArmsGattlingGun_23062,0.0,75.0,0.0,-0.0,-0.0706,0.1898
    Heavy Blaster (Traveler),29759,Tr_HeavyArmsBlaster,Tr_HeavyArmsBlaster,Tr_HeavyArmsBlaster,Tr_HeavyArmsBlaster,Tr_HeavyArmsBlaster_29759,0.0,75.0,0.0,-0.0,-0.059,0.1107

    # Traveler old stuff
    Warhammer (Traveler),14935,TrWarHammer01,TrWarHammer01,TrWarHammer01,TrWarHammer01,TrWarHammer01_14935,90.0,90.0,0.0,0.0,-0.2382,-0.0018
    Big Axe (Traveler),16181,TrBigAxe01,TrBigAxe01,TrBigAxe01,TrBigAxe01,TrBigAxe01_16181,90.0,90.0,0.0,0.0,-0.13,0.0
    Crossbow (Traveler),7404,TrCrossbow1,TrCrossbow1,TrCrossbow1,TrCrossbow1,TrCrossbow1_7404,0.0,0.0,0.0,0.0,-0.073,-0.069
    Crossbow Bolt (Traveler),919,TrCrossbowBolt1,TrCrossbowBolt1,TrCrossbowBolt1,TrCrossbowBolt1,TrCrossbowBolt1_919,0.0,0.0,0.0,0.0,-0.081,-0.123
    Maul (RDNA),4398,EMBEDDED,Warhammer,Maul,Maul,Maul_4398,0.0,0.0,90.0,0.328,-0.586,-0.093

    # CannonStuff
    Bucket (Cannon Accessory),3245,bucket,bucket,bucket,bucket,bucket_3245,90.0,0.0,0.0,0.019,-0.196,0.0
    Gun Ladle (Cannon Accessory),1167,gun-ladle,gun-ladle,gun-ladle,gun-ladle,gun-ladle_1167,0.0,90.0,0.0,0.0,-0.318,0.0
    Gun Rammer (Cannon Accessory),1275,gun-rammer,gun-rammer:1,gun-rammer,gun-rammer,gun-rammer_1275,0.0,90.0,0.0,0.0,-0.349,0.0

    # DAZ Firearms (used V4 LH versions)
    12GAShotgun (DAZ Firearms),32537,DZBG870SCPE,870shotgun,12GAShotgun,DZBG870SCPE,DZBG870SCPE_32537,0.0,60.0,0.0,0.0,-0.0186,-0.0093
    22Caliber (DAZ Firearms),49075,DZBGWG22SCP,walterG22scope,22 Caliber,DZBGWG22SCP,DZBGWG22SCP_49075,0.0,68.0,0.0,0.0,-0.0197,-0.0151
    308Rifle (DAZ Firearms),63166,DZBGDSATACT,DSA,308Rifle,DZBGDSATACT,DZBGDSATACT_63166,0.0,73.0,0.0,0.0,-0.0197,-0.0133
    38Revolver (DAZ Firearms),55498,DZBGSMWS649,sw649,38Revolver,DZBGSMWS649,DZBGSMWS649_55498,0.0,66.0,0.0,0.0,-0.0163,-0.0079
    9mmPistol (DAZ Firearms),38369,DZBGDALY9MM,dalyZDA9mm,9mm Pistol,DZBGDALY9MM,DZBGDALY9MM_38369,0.0,63.0,0.0,0.0,-0.0174,-0.0163
    AR-15Rifle (DAZ Firearms),49767,DZBGDPMSSSC,DPMS,AR-15Rifle,DZBGDPMSSSC,DZBGDPMSSSC_49767,0.0,59.0,0.0,0.0,-0.0221,-0.0197
    AR-15Rifle_Tac (DAZ Firearms),50469,DZBGDPMSTSC,DPMS 1,AR-15TacRifle,DZBGDPMSTSC,DZBGDPMSTSC_50469,0.0,62.0,0.0,0.0,-0.0209,-0.0174
    TommyGun (DAZ Firearms),24709,DZBGThompM1,thompsonM1,TommyGun,DZBGThompM1,DZBGThompM1_24709,0.0,62.0,0.0,0.0,-0.0186,-0.0163

    # Deadly Edges
    Starburst (Deadly Edges),7941,B9DE2_Starburst,B9DE2_Starburst,Starburst,B9DE2_Starburst,B9DE2_Starburst_7941,0.0,0.0,0.0,0.0,-0.589,-0.248
    Whacksaw (Deadly Edges),2743,B9DE_Whacksaw,B9DE_Whacksaw,Whacksaw,B9DE_Whacksaw,B9DE_Whacksaw_2743,0.0,0.0,90.0,-0.0,-0.5477,0.107
    Sickle (Deadly Edges),578,B9DE2_Sickle,B9DE2_Sickle,Harvester Sickle,B9DE2_Sickle,B9DE2_Sickle_578,0.0,0.0,0.0,0.0,-0.5528,-0.1248
    Hungamunga (Deadly Edges),1771,B9DE_Hungamunga,B9DE_Hungamunga,Hungamunga,B9DE_Hungamunga,B9DE_Hungamunga_1771,0.0,0.0,0.0,0.0,-0.4738,-0.0178
    Steel Orchid (Deadly Edges),9539,B9DE_SteelOrchid,B9DE_SteelOrchid,Steel_Orchid,B9DE_SteelOrchid,B9DE_SteelOrchid_9539,0.0,0.0,180.0,0.0,-0.4662,-0.0127
    Raptor Axe (Deadly Edges),6862,B9DE_Axe,B9DE_Axe,Raptor_Axe,B9DE_Axe,B9DE_Axe_6862,0.0,0.0,0.0,-0.0,-0.5987,0.028
    Pushdagger (Deadly Edges),1666,B9DE2_PushDagger,B9DE2_PushDagger,Ultimate PushDagger,B9DE2_PushDagger,B9DE2_PushDagger_1666,-90.0,0.0,90.0,-0.014,-0.5732,-0.079
    Devils Corkscrew (Deadly Edges),1130,B9DE2_Corkscrew,B9DE2_Corkscrew,Devil's Corkscrew,B9DE2_Corkscrew,B9DE2_Corkscrew_1130,-90.0,0.0,90.0,0.0164,-0.585,-0.0382

    # Drop The Hammer
    Anvil Hammer (Drop The Hammer),22633,valWarHammer01,valWarHammer01,valWarHammer01,valWarHammer01,valWarHammer01_22633,0.0,15.0,90.0,0.325,-0.6039,-0.1022
    Cross Hammer (Drop The Hammer),10468,valWarHammer02,valWarHammer02,valWarHammer02,valWarHammer02,valWarHammer02_10468,0.0,15.0,90.0,0.3198,-0.606,-0.1022
    War Hammer (Drop The Hammer),8318,valWarHammer03,valWarHammer03,valWarHammer03,valWarHammer03,valWarHammer03_8318,0.0,15.0,90.0,0.3217,-0.608,-0.1266
    Dwarf Hammer (Drop The Hammer),19729,valWarHammer04,valWarHammer04,valWarHammer04,valWarHammer04,valWarHammer04_19729,-6.0,15.0,90.0,0.316,-0.6095,-0.116
    Mallet Sama (Drop The Hammer),5158,valWarHammerHen,valWarHammerHen,valWarHammerHen,valWarHammerHen,valWarHammerHen_5158,0.0,0.0,90.0,0.3008,-0.5796,-0.0999

    # Fantasy Shields
    Basic Heater (Fantasy Shields),8734,valShieldsBasicHeater,valShieldsBasicHeater,valShieldsBasicHeater,valShieldsBasicHeater,valShieldsBasicHeater_8734,22.0,0.0,-85.0,-0.312,-0.5955,-0.072
    Basic Targ (Fantasy Shields),6408,valShieldsBasicTarg,valShieldsBasicTarg,valShieldsBasicTarg,valShieldsBasicTarg,valShieldsBasicTarg_6408,20.0,16.0,-41.0,-0.322,-0.6011,-0.0616
    CelestialHeater (Fantasy Shields),11093,valShieldsCelheater,valShieldsCelheater,valShieldsCelheater,valShieldsCelheater,valShieldsCelheater_11093,21.0,0.0,-85.0,-0.3122,-0.5956,-0.071
    Demonic Heater (Fantasy Shields),8348,valShieldsDemHeater,valShieldsDemHeater,valShieldsDemHeater,valShieldsDemHeater,valShieldsDemHeater_8348,19.0,0.0,-85.0,-0.3106,-0.596,-0.0708
    Dragon Targ (Fantasy Shields),7512,valShieldsDragTarg,valShieldsDragTarg,valShieldsDragTarg,valShieldsDragTarg,valShieldsDragTarg_7512,20.0,13.0,-30.0,-0.32,-0.6005,-0.0627

    # Fantasy Spears
    Fish Spear (Fantasy Spears),5658,valPoArFishspear,Spear,valPoArFishspear,valPoArFishspear,valPoArFishspear_5658,-5.0,15.0,0.0,0.2951,-0.6686,-0.3089
    Fork Spear (Fantasy Spears),5840,valPoArForkspear,Spear,valPoArForkspear,valPoArForkspear,valPoArForkspear_5840,-5.0,15.0,0.0,0.2935,-0.6739,-0.3361
    Leaf Spear (Fantasy Spears),10403,valPoArLeafspear,Spear,valPoArLeafspear,valPoArLeafspear,valPoArLeafspear_10403,-5.0,15.0,0.0,0.2935,-0.6661,-0.3089
    Basic Spear (Fantasy Spears),2532,valPoArSpear,Spear,valPoArSpear,valPoArSpear,valPoArSpear_2532,-5.0,15.0,0.0,0.284,-0.6841,-0.374
    Woodland Spear (Fantasy Spears),2194,valPoArWoodlandSpear,Spear,valPoArWoodlandSpear,valPoArWoodlandSpear,valPoArWoodlandSpear_2194,-5.0,15.0,0.0,0.2828,-0.6817,-0.3716
    Tri-Spear (Fantasy Spears),3789,valPoArTrispear,Spear,valPoArTrispear,valPoArTrispear,valPoArTrispear_3789,-5.0,15.0,0.0,0.284,-0.6983,-0.4308

    # Martial Weapons
    Kama Lt (Martial Weapons),2288,valMAWeapKamaLt,valMAWeapKamaLt,valMAWeapKamaLt,valMAWeapKamaLt,valMAWeapKamaLt_2288,0.0,20.0,0.0,-0.316,-0.5965,-0.058
    Kama Rt (Martial Weapons),2288,valMAWeapKamaRt,valMAWeapKamaRt,valMAWeapKamaRt,valMAWeapKamaRt,valMAWeapKamaRt_2288,0.0,20.0,0.0,0.3167,-0.5967,-0.058
    Tonfa Lt (Martial Weapons),4947,valMAWeapTonfaLf,valMAWeapTonfaLf,valMAWeapTonfaLf,valMAWeapTonfaLf,valMAWeapTonfaLf_4947,19.0,18.0,82.0,-0.3148,-0.6039,-0.0592
    Tonfa Rt (Martial Weapons),4947,valMAWeapTonfaRt,valMAWeapTonfaRt,valMAWeapTonfaRt,valMAWeapTonfaRt,valMAWeapTonfaRt_4947,-21.0,17.0,-83.0,0.3164,-0.6012,-0.0579
    Sai Lt (Martial Weapons),2770,valMAWeapSaiLf,valMAWeapSaiLf,valMAWeapSaiLf,valMAWeapSaiLf,valMAWeapSaiLf_2770,0.0,17.0,0.0,-0.3171,-0.6,-0.0627
    Sai Rt (Martial Weapons),2770,valMAWeapSaiRt,valMAWeapSaiRt,valMAWeapSaiRt,valMAWeapSaiRt,valMAWeapSaiRt_2770,0.0,17.0,0.0,0.316,-0.6012,-0.0615
    Kunai (Martial Weapons),2752,valMAWeapKunai,valMAWeapKunai,valMAWeapKunai,valMAWeapKunai,valMAWeapKunai_2752,0.0,20.0,0.0,0.3243,-0.6012,-0.0686

    # OrderOfSteel
    Crosshilt (Order Of Steel),30079,valOrdSteelCrosshilt,valOrdSteelCrosshilt,valOrdSteelCrosshilt,valOrdSteelCrosshilt,valOrdSteelCrosshilt_30079,0.0,15.0,90.0,0.3184,-0.5923,-0.0494
    Fluketail (Order Of Steel),5965,valOrdSteelFluke,valOrdSteelFluke,valOrdSteelFluke,valOrdSteelFluke,valOrdSteelFluke_5965,0.0,19.0,90.0,0.3182,-0.5993,-0.0604
    Man At Arms (Order Of Steel),8827,valOrdSteelMAA,valOrdSteelMAA,valOrdSteelMAA,valOrdSteelMAA,valOrdSteelMAA_8827,0.0,19.0,90.0,0.3182,-0.5981,-0.0604
    Broken (on floor) (Order Of Steel),7949,valOrdSteelFloor01,valOrdSteelFloor01,valOrdSteelFloor01,valOrdSteelFloor01,valOrdSteelFloor01_7949,20.0,0.0,90.0,-0.0016,-0.0069,0.1661
    Broken (in hand) (Order Of Steel),7949,valOrdSteelBroken01,valOrdSteelBroken01,valOrdSteelBroken01,valOrdSteelBroken01,valOrdSteelBroken01_7949,0.0,25.0,90.0,0.3182,-0.6063,-0.065

    # Polearms
    Bardiche (Polearms),13537,valPoleTwoBardiche,valPoleTwoBardiche,valPoleTwoBardiche,valPoleTwoBardiche,valPoleTwoBardiche_13537,0.0,20.0,90.0,0.32,-0.511,0.1661
    Broad Glaive (Polearms),19525,valPoleArmsBroadglaive,valPoleArmsBroadglaive,valPoleArmsBroadglaive,valPoleArmsBroadglaive,valPoleArmsBroadglaive_19525,0.0,20.0,-90.0,-0.3208,-0.5998,-0.0778
    Fauchard (Polearms),4901,valPoleTwoFauchard,valPoleTwoFauchard,valPoleTwoFauchard,valPoleTwoFauchard,valPoleTwoFauchard_4901,0.0,20.0,-90.0,-0.3187,-0.6088,-0.0964
    Halberd 1 (Polearms),15710,valPoleTwoHalberd01,valPoleTwoHalberd01,valPoleTwoHalberd01,valPoleTwoHalberd01,valPoleTwoHalberd01_15710,0.0,20.0,-90.0,-0.3179,-0.5307,0.1196
    Halberd 2 (Polearms),9536,valPoleTwoHalberd02,valPoleTwoHalberd02,valPoleTwoHalberd02,valPoleTwoHalberd02,valPoleTwoHalberd02_9536,0.0,20.0,-90.0,-0.3179,-0.5421,0.0848
    Larks Tongue (Polearms),5654,valPoleArmsLarkstongue,valPoleArmsLarkstongue,valPoleArmsLarkstongue,valPoleArmsLarkstongue,valPoleArmsLarkstongue_5654,0.0,20.0,0.0,-0.3229,-0.5551,0.0429
    Pike (Polearms),3074,valPoleTwoPike,valPoleTwoPike,valPoleTwoPike,valPoleTwoPike,valPoleTwoPike_3074,0.0,20.0,0.0,-0.322,-0.6124,-0.1153
    Pilum (Polearms),6370,valPoleTwoPilum,valPoleTwoPilum,valPoleTwoPilum,valPoleTwoPilum,valPoleTwoPilum_6370,0.0,-160.0,0.0,0.3206,-0.5827,-0.0159
    Ranseur (Polearms),12080,valPoleArmsRanseur,valPoleArmsRanseur,valPoleArmsRanseur,valPoleArmsRanseur,valPoleArmsRanseur_12080,0.0,20.0,0.0,-0.322,-0.5482,0.0508
    Star Glaive (Polearms),8632,valPoleArmsStarglaive,valPoleArmsStarglaive,valPoleArmsStarglaive,valPoleArmsStarglaive,valPoleArmsStarglaive_8632,0.0,20.0,0.0,-0.321,-0.5789,-0.0172
    Voulge (Polearms),8781,valPoleTwoVoulge,valPoleTwoVoulge,valPoleTwoVoulge,valPoleTwoVoulge,valPoleTwoVoulge_8781,0.0,20.0,0.0,-0.3194,-0.5459,0.0676

    # RPG Launcher
    RPG7 Launcher,10945,RPG7Launcher,RPG7Launcher_1,RPG7Launcher,RPG7Launcher,RPG7Launcher_10945,0.0,85.0,0.0,0.062,-0.6455,-0.1019
    RPG7 Rocket,2054,RPG7Rocket,RPG7Rocket_1,RPG7Rocket,RPG7Rocket,RPG7Rocket_2054,0.0,0.0,0.0,0.063,-0.6592,-0.1658

    # UziliteGun
    Uzilite Gun,56609,hd_Gun,OD_Gun,OD_Gun,hd_Gun,hd_Gun_56609,0.0,76.0,0.0,0.0,-0.0227,-0.016

     

    # From “Cleave” in the DAZ Store (thanks erostew)
    GreatCleaver (Cleave Daz 15046),???,???,valCleaveGreatcleave,valCleaveGreatcleave,???,???,0.000,0.000,90.000,0.318,-0.595,0.000
    Scythe (Cleave Daz 15046),???,???,valCleaveScythe,valCleaveScythe,???,???,0.000,0.000,90.000,0.317,-0.595,0.146

     

    Post edited by 3dcheapskate on
  • 3dcheapskate3dcheapskate Posts: 2,689

    Please Inform Me If Any Of The Release 3 Supported Props Do Not Work

    I created the data for all 100+ props using the Poser and/or DAZ Studio helper scripts that I will be releasing shortly.

     I use these scripts regularly with a variety of figures, but I have not tested every prop.

    If you find that any of them (a) are not correctly auto-matched or (b) do not end up in the hand of the selected figure then it is most likely due to an error in the dataline. Please let me know.

  • ChoholeChohole Posts: 33,604

    Can you please repost those posts in a fashion that does not completely break the forum page formatting.  I don't want to remove them, as it's a not of work there,

    Thanks

     

  • 3dcheapskate3dcheapskate Posts: 2,689
    edited March 2016

    (Edit: OT discussion in response to chohole's comment regarding formatting problems moved by DAZ_Benjam to new Forum WYSIWYG Issues  thread in the commons)

    Additional Prop Support Data For Release 3 Format

    (Not  Included In Release 3)

    I'm working on the helper scripts for adding new props, so obviously I'm creating data for the props I'm testing. I'll post the data here as I go along.

    (Edit (14th March): Missing DAZ Studio fields added, so these are now complete datalines and can be added to your SmartPlusData.txt file manually if you're comfortable doing that.)

    N.B. Since I'm testing there may be errors in the data below, most likely in the text-matching fields. I'll be correcting any I spot as I notice them. Also, some datlines may contain only the Poser data, or only the DS data, depending on which helper scripts I happened to be testing.

    # Schoolgirl Bag from "School Girl Uniform for Aiko 4" at DAZ
    A4 Schoolgirl Bag,6000,A4SchoolGirl_Bag,A4SchoolGirl_Bag,A4SchoolGirl_Bag,A4SchoolGirl_Bag,A4SchoolGirl_Bag_6000,-90.000,0.000,0.000,-0.024,-0.135,-0.101

    # Garden Tools from "Potting Shed and Tools" at DAZ
    Watering Can - Carrying (Garden Tools),5920,sstWtrPot,sstWtrPot,WateringPot,sstWtrPot,sstWtrPot_5920,-90.0,0.0,0.0,-0.021,-0.202,0.0
    Watering Can - Pouring (Garden Tools),5920,sstWtrPot,sstWtrPot,WateringPot,sstWtrPot,sstWtrPot_5920,0.0,65.0,0.0,0.0,-0.138,0.086
    Small Rake (Garden Tools),2030,sstSmRake,sstSmRake,SmRake,sstSmRake,sstSmRake_2030,0.0,90.0,0.0,0.0,-0.044,0.0
    Small Fork (Garden Tools),2366,sstSmPFork,sstSmPFork,SmPitchfork,sstSmPFork,sstSmPFork_2366,0.0,90.0,0.0,0.0,-0.044,0.0
    Small Chopper (Garden Tools),1393,sstSmChopper,sstSmChopper,SmChopper,sstSmChopper,sstSmChopper_1393,0.0,90.0,0.0,0.0,-0.045,0.0
    Small Scoop (Garden Tools),1488,sstScoop,sstScoop,Scoop,sstScoop,sstScoop_1488,0.0,90.0,0.0,0.0,-0.045,0.0
    Hammer (Garden Tools),962,sstHammer,sstHammer,Hammer,sstHammer,sstHammer_962,0.0,90.0,0.0,0.0,-0.0436,0.0
    Chopper (Garden Tools),1703,sstChopper,sstChopper,Chopper,sstChopper,sstChopper_1703,0.0,90.0,0.0,0.0,-0.2422,0.0
    Iron Rake (Garden Tools),4348,sstIrnRake,sstIrnRake,IronRake,sstIrnRake,sstIrnRake_4348,0.0,90.0,0.0,0.0,-0.2422,0.0
    Grass Rake (Garden Tools),4062,sstGrssRake,sstGrssRake,GrassRake,sstGrssRake,sstGrssRake_4062,0.0,90.0,0.0,0.0,-0.2422,0.0
    Shovel (Garden Tools),2242,sstShovel,sstShovel,Shovel,sstShovel,sstShovel_2242,0.0,90.0,0.0,0.0,-0.2422,0.0
    Square Shovel (Garden Tools),2902,sstShovelSq,sstShovelSq,ShovelSq,sstShovelSq,sstShovelSq_2902,0.0,90.0,0.0,0.0,-0.2422,0.0
    Pitchfork (Garden Tools),2336,sstPitchfork,sstPitchfork,PitchFork,sstPitchfork,sstPitchfork_2336,0.0,90.0,0.0,0.0,-0.2422,0.0

     

    NOTES AND REMINDERS TO SELF:

     

    • I realized that there are two ways the watering can could be held,so I created a separate dataline for each. The auto-match will always match the first line, but you can say no to the match and select the other one from the list.
    • *If the script CANNOT auto-match a prop it should give you the list of available props to choose from. I think the  DS version does, but the Poser version doesn't.
    Post edited by 3dcheapskate on
  • MilosGulanMilosGulan Posts: 1,952

    I have to try this, it can be very useful only if I could make it work :D

  • 3dcheapskate3dcheapskate Posts: 2,689
    edited March 2016

    New Prop Support Data (March 2016)

    I'm currently testing the Poser helper scripts for adding new props.

    Here's a new batch of data (including the DAZ Studio fields) that's come out of those tests. I'll be adding additional support data to this post for a while.

    You can add this to your SmartPlusData.txt file manually if you're comfortable doing that.

    (N.B. I've also added the missing DAZ Studio fields to the previous post with the garden tools)

    # Warhammer (M4/H4 "Celestial Armor" from DAZ)
    Warhammer (M4 Celestial Armor),12755,valCelArmHammer,valCelArmHammer,valCelArmHammer,valCelArmHammer,valCelArmHammer_12755,0.0,0.0,90.0,0.3206,-0.5935,-0.0672
     
    # Mace ( Knight Champion for M4 from DAZ)
    Mace (M4 Knight Champion),2894,VLKCflangedmace,mace,mace,VLKCflangedmace,VLKCflangedmace_2894,0.0,12.0,0.0,0.32,-0.602,-0.068

    # BackBreaker (Lord of Battles for M4 and Hiro 4 from DAZ)
    BackBreaker (H4 Lord Of Battles),11687,ValLOBsword,ValLOBsword,BackBreaker,ValLOBsword,ValLOBsword_11687,0.0,22.0,90.0,0.3136,-0.5993,-0.0501

    # Axe (M4 Bone Smasher from DAZ)
    Axe (M4 Bone Smasher),4648,BSr_Axe,BSr_Axe,BSr_Axe_,BSr_Axe,BSr_Axe_4648,0.0,90.0,0.0,0.0,-0.109,0.0

    # Shield (Dyald's M4 Fable at ShareCG)
    Shield (M4 Fable),3855,ShieldWStrp,ShieldWStrp,ShieldWStrp_,ShieldWStrp,ShieldWStrp_3855,17.0,0.0,-85.0,-0.3182,-0.5972,-0.0596

    # Sword (Valiant for Michael 4 from DAZ)
    Sword (M4 Valiant),8060,RDValSword,RDValSword,ValiantSword,RDValSword,RDValSword_8060,0.0,0.0,90.0,0.3245,-0.595,-0.0667

    # From Aery Soul Weapons Collection (Renderosity?)
    IcyingLight RH (AerySoul),7187,icyinglight,icyinglight,IcyingLight,icyinglight,icyinglight_7187,0.0,0.0,0.0,0.314,-0.5729,-0.0842
    WindSinger LH (AerySoul),7187,WindSinger,WindSinger,WindSinger,WindSinger,WindSinger_7187,0.0,0.0,0.0,-0.3146,-0.5731,-0.0827
    MoonBlade RH (AerySoul),7600,md_rgt_blade,md_rgt_blade,md_rgt_blade,md_rgt_blade,md_rgt_blade_7600,-19.0,19.0,92.0,0.2852,-0.5884,-0.0707
    MoonBlade LH (AerySoul),7600,md_lft_blade,md_lft_blade,md_lft_blade,md_lft_blade,md_lft_blade_7600,20.0,19.0,-92.0,-0.2881,-0.5894,-0.0704
    Rapier RH (AerySoul),13626,7s_rgt_rapier,7s_rgt_Rapier,7s_rgt_Rapier,7s_rgt_rapier,7s_rgt_rapier_13626,0.0,0.0,-90.0,0.3096,-0.5756,-0.0645
    Rapier LH (AerySoul),13626,7s_lft_rapier,7s_lft_rapier,7s_lft_rapier,7s_lft_rapier,7s_lft_rapier_13626,0.0,0.0,90.0,-0.3105,-0.575,-0.0654
    Justice Sword RH (AerySoul),20845,js_rgt_sword,js_rgt_sword,js_rgt_sword,js_rgt_sword,js_rgt_sword_20845,-20.0,12.0,-90.0,0.2814,-0.5889,-0.0864
    Justice Sword LH (AerySoul),20845,js_lft_sword,js_lft_sword,js_lft_sword,js_lft_sword,js_lft_sword_20845,20.0,11.0,90.0,-0.2816,-0.59,-0.0876

    # Gun and knife (M4 Ghost Agent)
    Pistol (M4 Ghost Agent),5228,GAgun,GAgun,GAgun,GAgun,GAgun_5228,-174.0,-6.0,4.0,-0.0855,-0.3706,-0.0265
    Knife (M4 Ghost Agent),1091,GAknife,GAknife,GAknife,GAknife,GAknife_1091,87.0,-93.0,97.0,0.0852,-0.332,-0.0231

    # ToA Legendary
    Dagger RH (ToA Legendary),1058,1108_DagRH,DaggerLeft,DaggerRIGHT,1108_DagRH,1108_DagRH_1058,183.0,-7.0,111.0,0.3231,-0.5912,-0.023
    Dagger LH (ToA Legendary),1058,1108_DagLH,DaggerLeft,DaggerLeft,1108_DagLH,1108_DagLH_1058,178.0,-8.0,76.0,-0.325,-0.5907,-0.0225
    Sabre RH (ToA Legendary),1995,1108_BladeRH,BladeRight,Sabre_R,1108_BladeRH,1108_BladeRH_1995,0.0,18.0,90.0,0.3181,-0.6022,-0.0638
    Sabre LH (ToA Legendary),1995,1108_BladeLH,BladeLeft,SabreL,1108_BladeLH,1108_BladeLH_1995,0.0,18.0,-90.0,-0.3171,-0.6016,-0.06

    # Sword (M4 Urban Warrior)
    Sword (M4 Urban Warrior),2791,X_UW_Sword,M4Sword,M4Sword,X_UW_Sword,X_UW_Sword_2791,90.0,-90.0,0.0,-0.0081,-0.5095,-0.0089

    NOTES AND REMINDERS TO SELF:

    • The sword from Slicer for H4 (not included here) has different scalings depending on which icon you load it from, which puts everything up the creek!
    • The M4 StarWars blaster (not included here) origin moves to the wrong place - I've seen this with another prop, can't recall which, but never tracked down the cause. Got it! It's x/y/zScale are set to 80%, so it's the same problem as Slicer
    • Often RH/LH smartprops having different zeroed positions, thus requiring separate datalines. In many cases the only diffences are the signs of the xTran (e.g. the AerySoul weapons) and some of the rotation (if non-zero)

     

    Post edited by 3dcheapskate on
  • MilosGulanMilosGulan Posts: 1,952

    Ok, I think it is finaly time to try to use it, I hope I will be able to make it work.

  • erostewerostew Posts: 214

    Glad you're still working on this! I'm anxiously awaiting the helper scripts. Lately a lot of my renders seem to be using freebie weapon props and .obj files so it would be pretty cool to be able to save things for future use without having to always save it as a new prop and also a new pose to grab the prop and a pose to put the prop in the grasping hand :) 

  • 3dcheapskate3dcheapskate Posts: 2,689
    edited March 2016
    erostew said:

    Glad you're still working on this! I'm anxiously awaiting the helper scripts. Lately a lot of my renders seem to be using freebie weapon props and .obj files so it would be pretty cool to be able to save things for future use without having to always save it as a new prop and also a new pose to grab the prop and a pose to put the prop in the grasping hand :) 

    I've had the basic versions (i.e. updated versions of the Release 3 Beta helper scripts to create the proper Release 3 format data) for both Poser and DAZ Studio sitting on my machine for quite a while.

    But I decided to expand the procedure to automatically strip off any additional suffix (i.e. the red bits in this post), and to provide assistance in determining whether right/left-hand smartprop versions of the prop require separate datalines.

    I've been doing this in Poser first simply because I find it easier messing around in PoserPython than DAZ Script.

    The main change (if I ever get it working) will be that you'll have to manually load two copies of the prop so that the script can compare the internal/external/geometry/etc names to find the longest common strings. And if there are smartprop versions you'll have to manually load two copies of each of those as well - one of the new scripts zeroes all props in the scene, allowing you to visually confirm whether they all zero to the same place and orientation, and thus determine whether or not they can all use a single dataline.

    The biggest problem is simply that I'm getting bored doing it, and keep finding more interesting things to do ! But since you've actually asked about them I'll see if I can get my act together... :D

    In the meantime I can upload the basic versions since they should allow you to create your own datafor the proper release 3 format in the same way as before. Edit: 28th Mar 2016 - basic interim 'Rel3 Ver1' versions uploaded - see post below

    P.S. I assume that you're using DAZ Studio ? If so I might hang fire on the Poser scripts and try and get the DAZ Studio ones done first.

    Post edited by 3dcheapskate on
  • 3dcheapskate3dcheapskate Posts: 2,689
    edited March 2016

    SmartPlus Prop Helper Scripts Rel3 Ver1 (DAZ Studio and Poser)

    Interim version of the proper release 3 format DS prop helper scripts now available - see this 27th March 2016 post on the main thread.

    Interim version of the proper release 3 format Poser prop helper scripts now available - see this 28th March 2016 post on the main thread.

     

    These files have been sitting on my system for several weeks while I've been doing other stuff. After the nudge from erostew I did a quick run through with both DAZ Studio and Poser versions, did some minimal tidying up (some of the wording on the new 'for information only' dialogues), and checked that they still work before uploading them.

    These 'interim' versions, which I've designated 'Rel3 Ver1', use more or less the same procedure as the release 3 beta helper scripts, so anybody who's used those should find them familiar. I didn't even change any of the icons.

    The two main things that changed are:

    A) The step 5 script now obviously creates the HANDPROXYDATA dataline in the proper release 3 format.

    B) You don't have to worry about forgetting what you have to do. Double-clicking the '!Info' icon will now display instructions for the whole procedure, and double-clicking the icons for the two manual steps (2 and 4) will display brief instructions for that step.

    For anybody who didn't play with the release 3 beta scripts then item (B) above should be a big help.

    However, for the final step you still need to copy the resulting dataline from the log file (DAZ Studio) / debug window (Poser), paste it into a bsic text editor (i.e. NOT a wordprocessor or anything that adds formatting codes), make some manual changes/corrections, and then cut-and-paste the edited line into the HANDPROXYDATA section of your  'SmartPlusData.txt' file.

    N.B. Props with Scale and/or any of x/y/zScale NOT set to 100% will usually prevent* these procedures from working. Simply setting scale to 100% will NOT resolve the problem. I need to make some changes to both Release 3 Core and these scripts to fix that.

    *After running Step 3 (PropOriginToWorldOrigin) the prop origin will NOT be at the world centre. Setting all scales to 100% before Step 2 (MANUALLY Translate) may seem to work, but I think there's more to it - I need to do some more tests. avoids the problem

     

     

     

    Post edited by 3dcheapskate on
  • 3dcheapskate3dcheapskate Posts: 2,689
    edited March 2016

    ONGOING...

    I confirmed earlier today that setting Scale, xScale, yScale, and zScale all to 100% before starting the procedure avoids the problem noted in the previous post, so the next version of these prop helper scripts will do this automatically - it's already in my ongoing Poser version.

    And talking of the next version - the Poser one's almost there. I'm testing it by creating data for more props. Things I've noticed while doing this:

    • making the GROUND invisible would be useful
    • making the figure (remember, a figure is needed in the scene to allow scripts to run from pose files) invisible but all the props visible would makes setting the translation/rotation easier. If you load smartprops they load invisible, but the new 'Auto 2 Verify' reparents them to a new proxy and they become visible again
    • many RH/LH smartprop pairs require separate datalines but have near-identical numeric values, only the signs of yRot, zRot and xTrans being opposite
    • Auto 4 Origin - check that the selected actor is the prop first.

    Anyway, here's the data from the ongoing tests with my latest Poser dev version (so no DAZ Studio text parameters yet). I haven't verified any of this data by using it with PropGoto+ to put the prop into a figure's hand, but then I'm confident enough of the Smart+ stuff that I don't really need to ! cheeky (edit: just added everything up to and including the courageous stuff to my SmartPlusData.txt and tried giving them to Andy in Poser 9. Everything works fine, just as I knew it would !  )

    # Slicer Sword ("Slicer" for M4, H4 in the DAZ Store )  
    Slicer Sword,3985,SlicerSword,SlicerSword,SlicerSword_,SlicerSword,SlicerSword_3985,0.0,-90.0,0.0,0.0,-0.337,0.0

    # Horse Sword (from "Riders for V3" by WalkerofShadows - used to be at ShareCG)
    Horse Sword (WalkerOfShadows),7500,HorseSword2,HorseSword,HorseSword,???,???,0.0,0.0,90.0,0.3118,-0.5788,-0.072

    #Ski Sticks (from LDD's Ski Fun - old Renderosity freebie?)
    Ski Stick RH,5550,rbaton,rbaton,right_Baton,???,???,-24.0,17.5,84.0,0.2909,-0.5923,-0.074
    Ski Stick LH,5550,lbaton,lbaton,left_Baton,???,???,24.0,18.0,-84.0,-0.2894,-0.5939,-0.0767

    # Pistol ("Action Poses" Mytilus at Renderosity) ... this one was a right PITA to set the rotations, and they're still a bit off !
    Pistol RH (Mytilus Action Poses),56141,aposesPistolRH,GunR,GunR,???,???,60.0,82.0,79.0,0.289,-0.5864,-0.0679
    Pistol LH (Mytilus Action Poses),56141,aposesPistolLH,GunL,GunL,???,???,-45.3398,66.3717,-82.2831,-0.2901,-0.586,-0.0667

    # Bow/Arrow (B25 Archer from DAZ)
    Arrow (B25 Archer),2100,B25ArcherArrow,B25ArcherArrow,B25ArcherArrow,???,???,0.0,90.0,0.0,0.0,-0.095,0.0
    Bow (B25 Archer),6831,B25ArcherBow,Bow2,Bow2,???,???,3.0,6.0,-91.0,-0.2951,-0.587,-0.0767

    # Mace (V4 Battle Maiden - DAZ)
    Mace (Battle Maiden),9833,GermanMace,GermanMace,GermanMace,???,???,-6.0,18.0,0.0,0.2947,-0.5838,-0.0523

    # Scimitar (Blood Bound from DAZ) ...this has two possible hand grip positions.*
    Scimitar End Grip (Blood Bound),11126,M3DBBscimitar,M3DBBscimitar,BB_scimitar,???,???,-3.0,23.0,-178.0,0.293,-0.5942,-0.0715
    Scimitar Back Grip (Blood Bound),11126,M3DBBscimitar,M3DBBscimitar,BB_scimitar,???,???,-1.0,-29.0,185.0,0.2888,-0.5171,-0.2697

    # Courageous for V4 (DAZ)  ... the rotations for these were a PITA too !
    Shin Knife (Courageous),5061,v4c-kshin,v4c-kshin,v4c-kshin,???,???,90.0,-94.0,90.0,0.0624,-0.1837,0.005
    Thigh Knife (Courageous),7444,v4c-kthigh,v4c-kthigh,C-KnifeThigh,???,???,90.0,-100.0,90.0,0.0768,-0.3055,0.0001
    Rapier (Courageous),33079,v4c-rapier,v4c-rapier,C-Rapier,???,???,193.0,-72.0,211.0,-0.0713,-0.4708,-0.0126

    *The Blood Bound Scimitar auto-matches the first line, so if you want to use the second one you have to cancel the match and manually select from the list. It's a looong list now !

    I'm happy enough now that the procedure's more or less complete. The only thing that's really missing is automatically writing the dataline to the SmartPlusData.txt file, and I'm working on that*

    And then updating the DAZ Studio version to match of course.

    And then releasing both I guess ?

    *The basics of the automatic file update (i.e. writing a new line at the end of the HANDPROXYDATA section) are more or less working in my Poser development version. I'm now working on checks to see whether there's already a line for the prop (i.e. by simply comparing the vertexCount and geometryFilename) - this should allow me to automatically add the missing Poser parameters to a dataline that was created from the DAZ Studio scripts (i.e. with the '???' fields).

     

    Post edited by 3dcheapskate on
Sign In or Register to comment.