Sun, Dec 1, 5:19 PM CST

Renderosity Forums / Poser Technical



Welcome to the Poser Technical Forum

Forum Moderators: Staff

Poser Technical F.A.Q (Last Updated: 2024 Nov 13 12:50 am)

Welcome to the Poser Technical Forum.

Where computer nerds can Pull out their slide rules and not get laughed at. Pocket protectors are not required. ;-)

This is the place you come to ask questions and share new ideas about using the internal file structure of Poser to push the program past it's normal limits.

New users are encouraged to read the FAQ sections here and on the Poser forum before asking questions.



Checkout the Renderosity MarketPlace - Your source for digital art content!



Subject: How do I change the order of my Materials in my Clothing Figures


insomniaworks ( ) posted Mon, 09 February 2004 at 11:15 PM · edited Thu, 28 November 2024 at 8:16 PM

I have just built a clothing piece for poser with a lot of material zones. The materials are all out of order when I look at them in poser. I would like to see them listed alphabeticaly. Can anyone help? thank you marty


maclean ( ) posted Tue, 10 February 2004 at 2:57 PM

marty,

This is something that bugged me for a long, long time. I found a fix, but it's a bit klunky.

What you have to do is add a dummy part to the figure's obj file. I used a square made in uvmapper (with enough sub-divisions to cover as many materials as you require). In uv mapper, I assigned a material to each section of the square, then I added it to the figure obj. It must be the 1st part listed in the obj, and you also need to check the order of the materials. Sometimes uv mapper lists them differently.

Then you have to edit the cr2 to make the dummy part invisible in poser. I lock it, scale it to 1%, hide it from the menu, etc, etc. Oh, and make sure the material order in the cr2 matches the obj.

Once you've done all that, the figure will open with thematerials in the order you set them. Here's the text of the blank.obj I use for this. If you copy/paste this and save it with an .obj extension, you can import it to poser as an obj or open it in uv mapper. You can change the materials names to suit yourself.


# file generated by UVMapper
# NumVerts/NumTVerts/NumVNormals/NumFacets   50/144/0/36
# NumGroups/NumMaterials/NumRegions   1/32/0
# x/y/color/ppu   900/675/0/50.00000000

mtllib blank.mtl

v  0.03452630  0.05409500  0.06975000
v  0.03460380  0.05409500  0.06975000
v  0.03452630  0.05417250  0.06975000
v  0.03468120  0.05417250  0.06975000
v  0.03468120  0.05409500  0.06975000
v  0.03475880  0.05409500  0.06975000
v  0.03483630  0.05409500  0.06975000
v  0.03491380  0.05409500  0.06975000
v  0.03491380  0.05417250  0.06975000
v  0.03483630  0.05417250  0.06975000
v  0.03499120  0.05409500  0.06975000
v  0.03506880  0.05409500  0.06975000
v  0.03506880  0.05417250  0.06975000
v  0.03514630  0.05417250  0.06975000
v  0.03514630  0.05409500  0.06975000
v  0.03522380  0.05409500  0.06975000
v  0.03522380  0.05417250  0.06975000
v  0.03460380  0.05417250  0.06975000
v  0.03460380  0.05425000  0.06975000
v  0.03452630  0.05425000  0.06975000
v  0.03468120  0.05425000  0.06975000
v  0.03475880  0.05417250  0.06975000
v  0.03483630  0.05425000  0.06975000
v  0.03499120  0.05425000  0.06975000
v  0.03499120  0.05417250  0.06975000
v  0.03506880  0.05425000  0.06975000
v  0.03452630  0.05432750  0.06975000
v  0.03460380  0.05432750  0.06975000
v  0.03475880  0.05425000  0.06975000
v  0.03468120  0.05432750  0.06975000
v  0.03475880  0.05432750  0.06975000
v  0.03491380  0.05425000  0.06975000
v  0.03514630  0.05425000  0.06975000
v  0.03522380  0.05425000  0.06975000
v  0.03460380  0.05440500  0.06975000
v  0.03452630  0.05440500  0.06975000
v  0.03475880  0.05440500  0.06975000
v  0.03468120  0.05440500  0.06975000
v  0.03483630  0.05440500  0.06975000
v  0.03483630  0.05432750  0.06975000
v  0.03491380  0.05432750  0.06975000
v  0.03491380  0.05440500  0.06975000
v  0.03499120  0.05432750  0.06975000
v  0.03506880  0.05440500  0.06975000
v  0.03499120  0.05440500  0.06975000
v  0.03506880  0.05432750  0.06975000
v  0.03514630  0.05432750  0.06975000
v  0.03514630  0.05440500  0.06975000
v  0.03522380  0.05432750  0.06975000
v  0.03522380  0.05440500  0.06975000

vt  0.02328721  0.78391212
vt  0.10230273  0.78391212
vt  0.10230273  0.97392398
vt  0.02328721  0.97392398
vt  0.12398745  0.78391212
vt  0.20300257  0.78391212
vt  0.20300257  0.97392398
vt  0.12398745  0.97392398
vt  0.22223330  0.78391212
vt  0.30124840  0.78391212
vt  0.30124840  0.97392398
vt  0.22223330  0.97392398
vt  0.32613826  0.78391212
vt  0.40515336  0.78391212
vt  0.40515336  0.97392398
vt  0.32613826  0.97392398
vt  0.43965861  0.78391212
vt  0.51867425  0.78391212
vt  0.51867425  0.97392398
vt  0.43965861  0.97392398
vt  0.55072606  0.78391212
vt  0.62974119  0.78391212
vt  0.62974119  0.97392398
vt  0.55072606  0.97392398
vt  0.66584897  0.78391212
vt  0.74486411  0.78391212
vt  0.74486411  0.97392398
vt  0.66584897  0.97392398
vt  0.02328721  0.50000000
vt  0.10230273  0.50000000
vt  0.10230273  0.69001186
vt  0.02328721  0.69001186
vt  0.12398745  0.50000000
vt  0.20300257  0.50000000
vt  0.20300257  0.69001186
vt  0.12398745  0.69001186
vt  0.22223330  0.50000000
vt  0.30124840  0.50000000
vt  0.30124840  0.69001186
vt  0.22223330  0.69001186
vt  0.32613826  0.50000000
vt  0.40515336  0.50000000
vt  0.40515336  0.69001186
vt  0.32613826  0.69001186
vt  0.43965861  0.50000000
vt  0.51867425  0.50000000
vt  0.51867425  0.69001186
vt  0.43965861  0.69001186
vt  0.55072606  0.50000000
vt  0.62974119  0.50000000
vt  0.62974119  0.69001186
vt  0.55072606  0.69001186
vt  0.66584897  0.50000000
vt  0.74486411  0.50000000
vt  0.74486411  0.69001186
vt  0.66584897  0.69001186
vt  0.02328721  0.02607648
vt  0.10230273  0.02607648
vt  0.10230273  0.21608800
vt  0.02328721  0.21608800
vt  0.12398745  0.02607648
vt  0.20300257  0.02607648
vt  0.20300257  0.21608800
vt  0.12398745  0.21608800
vt  0.22223330  0.02607648
vt  0.30124840  0.02607648
vt  0.30124840  0.21608800
vt  0.22223330  0.21608800
vt  0.32613826  0.02607648
vt  0.40515336  0.02607648
vt  0.40515336  0.21608800
vt  0.32613826  0.21608800
vt  0.43965861  0.02607648
vt  0.51867425  0.02607648
vt  0.51867425  0.21608800
vt  0.43965861  0.21608800
vt  0.55072606  0.02607648
vt  0.62974119  0.02607648
vt  0.62974119  0.21608800
vt  0.55072606  0.21608800
vt  0.66584897  0.02607648
vt  0.74486411  0.02607648
vt  0.74486411  0.21608800
vt  0.66584897  0.21608800
vt  0.02328721  0.24738806
vt  0.10230273  0.24738806
vt  0.10230273  0.43739986
vt  0.02328721  0.43739986
vt  0.12398745  0.24738806
vt  0.20300257  0.24738806
vt  0.20300257  0.43739986
vt  0.12398745  0.43739986
vt  0.22223330  0.24738806
vt  0.30124840  0.24738806
vt  0.30124840  0.43739986
vt  0.22223330  0.43739986
vt  0.32613826  0.24738806
vt  0.40515336  0.24738806
vt  0.40515336  0.43739986
vt  0.32613826  0.43739986
vt  0.43965861  0.24738806
vt  0.51867425  0.24738806
vt  0.51867425  0.43739986
vt  0.43965861  0.43739986
vt  0.55072606  0.24738806
vt  0.62974119  0.24738806
vt  0.62974119  0.43739986
vt  0.55072606  0.43739986
vt  0.66584897  0.24738806
vt  0.74486411  0.24738806
vt  0.74486411  0.43739986
vt  0.66584897  0.43739986
vt  0.78097188  0.24738806
vt  0.85998696  0.24738806
vt  0.85998696  0.43739986
vt  0.78097188  0.43739986
vt  0.89609474  0.24738806
vt  0.97510993  0.24738806
vt  0.97510993  0.43739986
vt  0.89609474  0.43739986
vt  0.78097188  0.02607648
vt  0.85998696  0.02607648
vt  0.85998696  0.21608800
vt  0.78097188  0.21608800
vt  0.89609474  0.02607648
vt  0.97510993  0.02607648
vt  0.97510993  0.21608800
vt  0.89609474  0.21608800
vt  0.78097188  0.50000000
vt  0.85998696  0.50000000
vt  0.85998696  0.69001186
vt  0.78097188  0.69001186
vt  0.89609474  0.50000000
vt  0.97510993  0.50000000
vt  0.97510993  0.69001186
vt  0.89609474  0.69001186
vt  0.78097188  0.78391212
vt  0.85998696  0.78391212
vt  0.85998696  0.97392398
vt  0.78097188  0.97392398
vt  0.89609474  0.78391212
vt  0.97510993  0.78391212
vt  0.97510993  0.97392398
vt  0.89609474  0.97392398

g Figure 1
usemtl center_wall
f 27/1 28/2 35/3 36/4
usemtl center_fill_1
f 28/5 30/6 38/7 35/8
usemtl center_fill_2
f 30/9 31/10 37/11 38/12
usemtl center_fill_3
f 31/13 40/14 39/15 37/16
usemtl center_fill_4
f 40/17 41/18 42/19 39/20
usemtl center_fill_5
f 41/21 43/22 45/23 42/24
usemtl center_outer
f 43/25 46/26 44/27 45/28
usemtl left_wall
f 20/29 19/30 28/31 27/32
usemtl left_fill_1
f 19/33 21/34 30/35 28/36
usemtl left_fill_2
f 21/37 29/38 31/39 30/40
usemtl left_fill_3
f 29/41 23/42 40/43 31/44
usemtl left_fill_4
f 23/45 32/46 41/47 40/48
usemtl left_fill_5
f 32/49 24/50 43/51 41/52
usemtl left_outer
f 24/53 26/54 46/55 43/56
usemtl front_wall
f 1/57 2/58 18/59 3/60
usemtl front_fill_1
f 2/61 5/62 4/63 18/64
usemtl front_fill_2
f 5/65 6/66 22/67 4/68
f 6/69 7/70 10/71 22/72
usemtl front_fill_4
f 7/73 8/74 9/75 10/76
usemtl front_fill_5
f 8/77 11/78 25/79 9/80
usemtl front_outer
f 11/81 12/82 13/83 25/84
usemtl right_wall
f 3/85 18/86 19/87 20/88
usemtl right_fill_1
f 18/89 4/90 21/91 19/92
usemtl right_fill_2
f 4/93 22/94 29/95 21/96
usemtl right_fill_3
f 22/97 10/98 23/99 29/100
usemtl right_fill_4
f 10/101 9/102 32/103 23/104
usemtl right_fill_5
f 9/105 25/106 24/107 32/108
usemtl right_outer
f 25/109 13/110 26/111 24/112
usemtl floor
f 13/113 14/114 33/115 26/116
usemtl floor_outer
f 14/117 17/118 34/119 33/120
usemtl ceiling
f 12/121 15/122 14/123 13/124
usemtl ceiling_outer
f 15/125 16/126 17/127 14/128
usemtl Preview
f 26/129 33/130 47/131 46/132
f 33/133 34/134 49/135 47/136
f 46/137 47/138 48/139 44/140
f 47/141 49/142 50/143 48/144

------------------------------------ If you need any more info, let me know.

mac


maclean ( ) posted Tue, 10 February 2004 at 3:00 PM

Here's the 'blank' body part from the cr2. You don't need any channels for it and everything is locked and hidden. It doesn't appear in the menu. The only place you'll see it is in the Hierarchy window.

actor blank:1
        {
        name    blank
        off
        bend 0
        dynamicsLock            1
        hidden          1
        addToMenu       0
        castsShadow             0
        includeInDepthCue               1
        parent BODY:1
        channels
                {
                }
        endPoint 0 0 0
        origin 0 0 0
        orientation 0 0 0
        displayOrigin           0
        displayMode USEPARENT
        customMaterial  0
        locked 1
        }

mac


insomniaworks ( ) posted Sat, 14 February 2004 at 10:06 AM

I thank you Mac for this information. When I first saw it, I wanted to curse you, lol, but I am going to go over your advice now step by step and see if this works. thank you marty


insomniaworks ( ) posted Sat, 14 February 2004 at 10:18 AM

Here are some things I do not understand... "What you have to do is add a dummy part to the figure's obj file. I used a square made in uvmapper (with enough sub-divisions to cover as many materials as you require)." I have never made a square in uvmapper or anyother object in uvmapper and I don't know how. In uv mapper, I assigned a material to each section of the square, then I added it to the figure obj. It must be the 1st part listed in the obj, and you also need to check the order of the materials. Sometimes uv mapper lists them differently. How do I make sure its the first thing listed in the obj? thank you marty


maclean ( ) posted Sat, 14 February 2004 at 11:15 AM

file_97846.jpg

hi marty, Sorry, I should have been a bit more specific. First of all, the code that I posted in message #2 can be copied and pasted into any text editor. If you save it with an .obj extension, you will have a cube obj (with the material names which I use). These material names can be changed in notepad to any names you want. You can cut out unwanted material names by deleting the line 'use mtl whatever' If you want to make your own cube, you can only do it in uv mapper pro. The free uv mapper makes a cube, but you can't divide it up into sections. In uv mapper pro, go to File> New model> Box and accept the defaults. Then make a new map - Planar> Z-axis> don't split> That will give you a planar map of one face of the cube divided into 9 x 9 squares (like the text version I posted above). The template image shows the planar map with 1 square of the cube selected. This gives you up to 27 possible material names. If you need more, you'd have to make a box with more divisions. Once you have a mapped box, you can select each square and assign a material to it - Tools> Assign to> Material - then resave the obj file. When I said uv mapper lists the materials differently, I meant that when you save the box with new material names, sometimes the order changes. After you save the obj, just open it in notepad and check that the order is still the same. When you assemble your figure in poser, the dummy obj must be the first piece you import to poser, then you import the rest of your body parts. This ensures that it's at the very beginning of the obj file and that poser will read it before anything else. Poser will 'see' the dummy part with the material names in a certain order, and accept that exact order for the cr2. It took me a while to crack this problem and I know it all sounds complicated, but it's not that difficult. Once you have the dummy box, you can use the same one for every figure and just change the material names in notepad. If it's still confusing, e-mail me at maclean@libero.it and I'll send you an obj + cr2 of one of my figures. That way, you can open them up and see exactly how it done. mac


maclean ( ) posted Sat, 14 February 2004 at 11:23 AM

Another quick note. It's important to understand how poser works. When you make a cr2, poser reads the information in the geometry obj to find the list of body parts and materials. Each body part it finds has to correspond to the actor list in the cr2. As poser reads the body parts, it also makes a list of the materials. The 1st material it finds will be at the top of the list in Surface Materials, the 2nd in second place, and so on. So poser reads the materials in the order they're placed in the obj file. By adding a dummy part with materials, you're forcing poser to find that part first, and read the materials in the order you want them. mac PS Very important - If you try this, remember to delete the geometry .rsr first or poser won't find the new obj information.


insomniaworks ( ) posted Sat, 14 February 2004 at 11:25 AM

Okay, I got it to work reasonably well by loading the obj you supplied into uvmapper. I then assigned each section a material in alphabetical order. I then loaded that square into poser and checked the material listing. It was very close to alphabetical order, except two materials that should be in the middle of the list, moved to the bottom. Thats funny, what are the rules that govern ordering these materials correctly anyway. Anyway with the square loadup on poser with a material listing greatly improved, I loaded up the Target Clothing Item. I then saved them together as one obj. Then I ran the cr2 that loads the Target Clothing Obj with the square added to it. What happened was the Clothing Figure loaded perfectly with the new (almost perfect list). The square on the other hand, because it was never assigned to any group that the cr2 recognizes, didn't load up at all. This was my first try and more of an experiement than anything, but I am happy with these results. I can not find any the square at all, its non exhistant as far is poser is concerned. I can't even find it in the hirechy list. In other words, I got it to work in a hap-hazzard way with out any changing in the cr2 whatsoever. Maybe, by chance I just simplified your method! Just one question though, I renamed all the materials in alphabetical order, how come a few materials did not go in order? Do you have any sugestions as to why? Anyway, its a big improvement! Thank you marty


maclean ( ) posted Sat, 14 February 2004 at 3:01 PM

Attached Link: http://groups.yahoo.com/group/PoserTECH/

OK, marty. You're doing fine so far. A lot faster than I did it the first time.

First problem, The material order. I don't quite know why this happens. If you order the squares in uv mapper, going from left to right and top to bottom, they should (in theory) be in order, But it doesn't always happen that way. I often have to re-order them manually inside the dummy obj file with notepad. But it's not a problem. You can either re-type them or copy/paste them, moving the 'usemtl' lines around to get it right. What governs the materials is the facet order of the box and I haven't quite worked that out yet.

The second problem is that the dummy obj needs to be a part of figure obj. The normal way to do that would be to import each piece into poser one by one, always importing the dummy obj first, so it appears in the final obj first. Now, you already have the figure built, so you have 2 choices. You can either re-build it (remembering to import the dummy before anything), export all the pieces as your final obj, and move it to your Geometries folder. Now you can either make a new cr2 or try adding the new part yourself.

If you use the old cr2, you need to add a dummy actor and body part. This is pretty easy. Post #3 above has the full body part for a dummy, and in poser the part will be hidden and locked, and won't appear in the menu, so there are no distractions. You can copy/paste it as it is and add it to the cr2 as the 1st body part. That means it goes in between BODY and whatever your 1st body part is. One thing to note is that I call my dummy 'blank', so you'd need to change the line

actor blank:1 to actor mydummyname:1

That is, the name you use when you import it to poser - 'dummy' or whatever.

You also have to add the dummy actor in the first section of the cr2. Here's what it looks like.

{
        version
        {
                number 4.01
        }
        figureResFile :Runtime:Geometries:room creator:01main room.obj
        actor BODY:1
        {
        }
        actor blank:1
        {
                storageOffset 0 0 0
                geomHandlerGeom 13 blank
        }
        actor back_wall:1
        {
                storageOffset 0 0 0
                geomHandlerGeom 13 back_wall
        }
        actor back_1:1
        {
                storageOffset 0 0 0
                geomHandlerGeom 13 back_1
        }
more body parts, etc, etc

What you have to do is insert the lines

ADD THESE LINES----------------
        actor blank:1 <<<<< INSERT YOUR DUMMY NAME
        {
                storageOffset 0 0 0
                geomHandlerGeom 13 blank <<<<< INSERT YOUR DUMMY NAME

        }

------------------------------------ Add them immediately after the BODY statement

        actor BODY:1
        {
        }

Again, you have to change 'blank' to your name (where I've indicated).

The other way to do it is to add the dummy obj information to your own figure obj as the first group. I'm not sure on this method, because there's no way of adding the actual geometry, just the materials, so I can't guarantee what will happen. What you'd have to do is open the dummy obj and cut out the material information. It starts with the line 'g Figure1' (It's easy to search obj files with either 'gSPACEBAR' or 'usemtl'). Cut out from g Figure1 to the end, then paste it into your figure obj ABOVE the first g line (g is for 'group'). The dummy obj materials are now the first body part in your obj. You must change the g line 'Figure1' to whatever you're calling the dummy actor in the cr2.

I hope this helps. As I say, it all sounds ridiculusly complicated, but it's easy when you're doing it from the start with a figure. You have your figure built, so you're having to backtrack.

Yell if you need more.

mac

Things to remember

Always delete the geometry .rsr before opening the new figure in poser.

Remember to check that the cr2 materials are in the same order as the obj before you open the figure in poser

If you don't have cr2Editor, I recommend strongly getting it. Get v1.51, NOT 1.52, as it was buggy. It may be in Freestuff here, if not you can get it at the link above, but you have to join the Yahoo group. No big deal. It's a good place to get tech info.


insomniaworks ( ) posted Sat, 14 February 2004 at 3:02 PM

Thank you very much for your help mac! marty


maclean ( ) posted Sat, 14 February 2004 at 3:17 PM

No problem at all. Hope it all works out. mac


Privacy Notice

This site uses cookies to deliver the best experience. Our own cookies make user accounts and other features possible. Third-party cookies are used to display relevant ads and to analyze how Renderosity is used. By using our site, you acknowledge that you have read and understood our Terms of Service, including our Cookie Policy and our Privacy Policy.