PDA

View Full Version : Modding InfoCenter - The "Repository" Technique


JWoods
7th Aug 2005, 09:37 AM
>>> MODDING INFOCENTER <<<

CREATING A REPOSITORY, LINK TO IT, AND ENABLE SLAVE OBJECTS



DISCLAIMER: The "Modding InfoCenter" threads are NOT tutorials: they are intended to help average-experienced object creators performing specific tasks, or to give users a deeper in-sight on specific modding-related subjects. So, don't expect to find step-by-step explanations, to be performed "blindly". Please DO NOT REPOST the following info, or part of them, on other sites.
All the "Modding InfoCenter" threads are created and maintained by Numenor and JWoods. Everyone is welcome to post his own questions or additional information about the specific thread subject.

SUMMARY: This article gives in depth details on how to prepare a “repository” object, link to it with “slave” objects, and “enable” the slave objects. It applies to all sets that a creator wishes to use the repository feature.The provided snapshots have been taken from UVMapper Pro and SimPE v.042.

:deal: This InfoCenter article is also provided in PDF format. To view it, we strongly suggest to download the Foxisoft PFD Viewer (http://www.foxitsoftware.com/pdf/rd_intro.php): it's free and small, less than 1Mb!

-------------------------------------------------------------------------------------

In this lesson you will learn how to create a “Repository Object” and link to it with your “Slave Object”, and how to “color enable” the “Slave Objects”.

:here: FAQ: “What is a Repository object?” A “Repository Object” is a central object containing all of the “texture related” files needed for an entire set of objects.

:here: FAQ: “What is a Slave object?” A “Slave Object” is one which relies on another object (Repository Object) for its texture related files.

:here: FAQ: “What is the benefit of using the repository feature?” Using this feature allows for “lighter” packages, easy 1 step “full set” re-coloring and, an “efficient” way to perfectly match all the pieces in your set by using the Repository texture(s).

:here: FAQ: “Will the Repository object contain all the textures used by the entire set?” NO: the Repository only contains the recolourable subsets that multiple objects will share; not recolourable textures (e.g. the shadows) will still be contained into the slave objects



Picking an object as the “Repository”

There are a few things to keep in mind when choosing your “Repository” object. The first thing you need to determine is what object in your new set “you” want to be the “Repository” object. I lean toward my “showcase” piece in most cases but sometimes we may want to choose an object with two subsets. In this tutorial we will use a table as the “Repository” object and link to it with our chair object.


Before we can start you must UV map both of your objects to the same texture.I have chosen to create a new Table as the “Repository Object” and a new chair which will be the “Slave Object”.


Part A: Creating and Linking to the "Repository"

Step 1. “Repository Object”: Be sure you have created a texture map that has all the textures in place you need. Here I have UV Mapped my table and constructed a texture map with my wood grain running horizontally and vertically. I also have the same two portions darkened a bit for shadowing effect.

http://thumbs.modthesims2.com/getimage.php?file=107767&thumb=1 (http://thumbs.modthesims2.com/getimage.php?file=107767&stc=1)


Step 2. Slave Object: Here is my dining chair which is one of the “Slave Objects” in my set. I have UV mapped it to the “Repository Object’s” texture map. You will notice the map also has an area for the chair cushion which is now utilized.

http://thumbs.modthesims2.com/getimage.php?file=107768&thumb=1 (http://thumbs.modthesims2.com/getimage.php?file=107768&stc=1)

Step 3. Go into your “Repository Object’s” GMDC (Geometric Data Container)/Plugin View/Groups and copy the “Subset” name into the same location in your “Slave Object’s” GMDC /Plugin View/Groups/Subset Name field and click “Commit”.

http://thumbs.modthesims2.com/getimage.php?file=107769&thumb=1 (http://thumbs.modthesims2.com/getimage.php?file=107769&stc=1)


Step 4. Copy the “Subset Name” from the Repository Objects SHPE/Plugin/Content/Subset Name to the same location in your “Slave Object” SHPE file and click “Commit”.

http://thumbs.modthesims2.com/getimage.php?file=107770&thumb=1 (http://thumbs.modthesims2.com/getimage.php?file=107770&stc=1)

Step 5. Delete the following files:

TXMT (Material Definition): All but the shadow.

MMAT (Material Override): All.

TXTR (Texture Image): All but shadows.

Step 6. Open your repository object and locate the SHPE (Shape) File/Content/Parts/”your repository shape. Below the “Subset Name” you see the “Material Definition File”, copy that into the same place in your “Slave Object’s” Material Definition File field and click “Commit”. (See image bellow)

http://thumbs.modthesims2.com/getimage.php?file=107771&thumb=1 (http://thumbs.modthesims2.com/getimage.php?file=107771&stc=1)

That’s it we can go in game and you will see that your “Slave Object” is using the files for the texture from the “Repository Object”.



Part B: Enabling the “Slave Objects”

Step 1. Open the GMND (Geometric Node) and in the “Plugin View”/”Blocklist”/”tsDesignModeEnabled” and enter your objects “Subset Name” in the appropriate field’s and click “Commit”. (See below image).

http://thumbs.modthesims2.com/getimage.php?file=107772&thumb=1 (http://thumbs.modthesims2.com/getimage.php?file=107772&stc=1)

Step 2. Again in the “Blocklist” pull-down go to the “tsNoShadow (cDataListExtension)” and enter your “Subset Name” in the appropriate field and click “Commit”. (See image below).

http://thumbs.modthesims2.com/getimage.php?file=107774&thumb=1 (http://thumbs.modthesims2.com/getimage.php?file=107774&stc=1)

Step 3. Click on the “cObjectGraphNode” tab then click the “add” link. In the “Enabled” field enter a “1” for the last digit. In the “Index” field enter the number sequentially as I did in the image by adding “5” then click “Commit”. (Follow numeric instructions in the image below).

http://thumbs.modthesims2.com/getimage.php?file=107775&thumb=1 (http://thumbs.modthesims2.com/getimage.php?file=107775&stc=1)

:here: FAQ: “What is the 'DataList Extension Reference' shown above, and why should I edit it?" The 'DataList Extension Reference' tells to the game how many 'cDataListExtensions' blocks there are in the GMND; if you open the pull-down Blocklist, you'll see that there are 5 cDataListExtension blocks (don't count blocks that are NOT of the cDataListExtension type!). The 'DataList Extension Reference' must have the exact number of lines as the number of cDataListExtension blocks in the GMND: if there is a line less, then the last block of the GMND will not be read by the game (as if it doesn't even exist!); if there is a line more, the game will crash.


Step 4. Click the “Edit Blocks” tab and then the pull down to find the (cDataListExtension). Next, click the “Add” button and then “Commit”. After you click commit a small error box will appear just ignore this and click “OK” then “OK” again.

http://thumbs.modthesims2.com/getimage.php?file=107776&thumb=1 (http://thumbs.modthesims2.com/getimage.php?file=107776&stc=1)

Step 5. We need to edit our new DataListExtension so, in the “Blocklist” pull-down menu highlight the new “cDataListExtension” and click on it. Now enter in the “Name” field on the left “tsMaterialsMeshName”. Now we need to add a string so down on the bottom right click the pull down to find the entry “String” and click “Add”. Enter your objects “Subset” name in the “Name” field on the right. Now you need to open your “Repository Object”/Resource Node/Plugin View/Content/cObjectGraphNode tab and copy it’s “filename” without the “_cres” extension and click “Commit” (See image for numeric instructions bellow).

http://thumbs.modthesims2.com/getimage.php?file=107777&thumb=1 (http://thumbs.modthesims2.com/getimage.php?file=107777&stc=1)

Step 6. Save your package and when you get in-game your “Slave Object” will also be “enabled”.

:cool: HINT: In this example, the "Repository" contains only 1 "shared" texture; you can easily add a second shared subset, following the very same steps explained above (if you choose as a Repository an object that already has 2 recolourable subsets, it will be easier).
But the Repository can contain any number of shared textures, even more than 2, providing a particular structure of the package. Examine the Grand Trianon Floor Mirror (http://files.modthesims2.com/attachment.php?attachmentid=90636) to have a working example of a 4-subsets Repository object.



-------------------------------------------------------------------------------------

OTHER USEFUL RESOURCES

Modding Infocenter Index (http://www.modthesims2.com/forumdisplay.php?f=333) - Comprehensive list of all the InfoCenter threads
Object Creation Workshop and Repair Center (http://www.modthesims2.com/showthread.php?t=82084) - If your object doesn't work, no matter what you try
Colour Options for "EP-ready" packages (http://www.modthesims2.com/showthread.php?t=42014) - About the texture linking tecniques
Sims 2 start to finish Object Creation Tutorial (http://www.modthesims2.com/showthread.php?t=59293) - Learn how to create your own object




-------------------------------------------------------------------------------------




.

mod_bv
7th Aug 2005, 01:13 PM
Thank you so much!

Fat D
7th Aug 2005, 01:54 PM
I suggest using a totally seperate, catalogless object as repository.

JWoods
7th Aug 2005, 11:41 PM
Maybe I mis understood your post... The idea of creating a seperate repository object that does not show in the "catalogue" or non-object package as a repository is another option. It can be pursuited by the creator after learning the easiest procedure I could give.

Re-cap: If you are capable of utilizing the "Repository" feature then you have the knowledge and freedom to extend the feature. On the other hand if you have no knowledge of it I think it's fair to say the above guide is a good start. ;)

Numenor
8th Aug 2005, 01:18 AM
Well said, JWoods ;)

Anyway, as an academic excercise (since I'm not sure that FATD's idea may have practical uses), I'd like to elaborate on this subject.

Warning: this is intended as an advanced application of the Repository technique; as they say in TV, "Don't do this at home!" :D

If an object is designed as a "pure" Repository, and therefore it doesn't need to appear in the catalog, nor in game, it needs a simplified Scenegraphic chain, composed only by a Resource node (the simplest you can find), a Shape and a GMND.
Obviously, since it is a texture Repository, we need also one texture and one Material Definition for each shared subset (as said in the main post, there can be multiple shared subset, even more than 2).

Since the Repository is to be intended as a recolourable object, then we need to include a Material Override for each shared subset, too.
But the Material Overrides contain a reference to the object GUID, and this forces us to add an Object Data to our package, in order to register and store a unique GUID for our Repository.
If we don't add the Object Data, the Repository will work anyway, but all the "slave" objects won't be selectable and recolourable using the "Design Tool": the gam would respond "This object is not recolourable".

So, we'd better add a OBJD, and register a unique GUID, but all the catalog placement options should be unchecked, otherwise we could have unpredictable results :)

Infact, our "pure" Repository lacks many files: GMDC, BHAVs, BCONs, Pie Menus, Name Reference (will it work without a Name Reference? :confused:), Object Functions, and some other "minor" files.

To tell the truth, I'm not absolutely sure that such an object would actually work... In theory it should, though.
As said, "Don't try this at home"! :D

Sorry for clogging the thread with these (probably) useless info, but academic excercises are what I like most! :mag: :)

Little_Tx_Mama
8th Aug 2005, 03:35 AM
Thank You!! As always, very useful information for those of us still in the learning stages and extremely easy to follow. You're an excellent teacher and I so appreciate all the free lessons :D

Fat D
8th Aug 2005, 09:45 AM
a pure repository may also be a normal object that is just remuved from the catalog. I might try your suggestions to save disk space.

many downloaders are quite selective what they download, so that their catalog won't be clogged. Using my repository style, this allows players to delete ANY of the objects.

For example, if someone wants a clean catalog and downloads the grand trianon bunk beds, he would also need the floor mirror, which he/she would think of as an unneccesary decorative item that clogs the catalog.

Your description works, name references are unneccessary.

Numenor
8th Aug 2005, 02:35 PM
Glad to know :) Sometimes, academic subjects can have practical uses, then! :D

JWoods
8th Aug 2005, 04:18 PM
a pure repository may also be a normal object that is just remuved from the catalog. I might try your suggestions to save disk space.

many downloaders are quite selective what they download, so that their catalog won't be clogged. Using my repository style, this allows players to delete ANY of the objects.

For example, if someone wants a clean catalog and downloads the grand trianon bunk beds, he would also need the floor mirror, which he/she would think of as an unneccesary decorative item that clogs the catalog.

Your description works, name references are unneccessary.

I am curious as to where I could find your utilization of "your" repository style, I have searched this entire site and yet nothing, please direct me to it as I am curious. If you have in fact come up with such a "style" wouldn't it be a good idea to share it in tutorial form on MTS2?

It seems to me that having any package in your download folder will slow load time weather it shows in the catalouge or not. If we take all our objects and make them so they don't show in the catalogue will the game load faster? I would think using the package in it's entirety would be more resourceful then keeping them hidden... ;) Your example of the floor mirror really makes no sense to me. If you create a non catalogued item as the repository the downloader is still forced to have the package in his/her download folder. This in turn adds the same added weight to thier folder/game. With the downloading traits I see here it seems the users would rather have a useful package they can visually see then a package they can't see. These are the things we must responsibly keep in mind as creator's... ;)

mod_bv
8th Aug 2005, 04:24 PM
I like Fat D's idea... So if you make a set, not only will it match, there is no mandatory object. You could just say 'The 0d2RespBV.package file is required.'

Fat D
8th Aug 2005, 04:32 PM
I use it for my Half-Walls (new meshes-build mode).
I don't feel like I'm skilled enough to wirte a tutorial.
Yes, it doesn't change the load time, but it changes the catalog length.

Inge Jones
8th Aug 2005, 05:39 PM
Interesting info in this thread, thanks. I intend to try it some time.

Thing is, if I come back to look for it at a later date, I'd probably look for it in the Object Creation and Texturing forum or the Meshing tutorials, not here. I don't know if anyone else thinks that way?

Fat D
8th Aug 2005, 05:46 PM
i have tried to find it there multiple times.

Numenor
8th Aug 2005, 06:25 PM
These are not Tutorials, it's more like a Wiki (actually, the InfoCenter will host Wiki data, later on)

Fat D
8th Aug 2005, 07:40 PM
but I think they are closer to tutorials than to ideas/question etc., which is usually here.

Numenor
8th Aug 2005, 09:40 PM
Well, yes, sometimes they looks like tutorials (but only because we use a lot of pics), but basically they are intended to be a mine on information :)

Few people know the wiki because... it has no pics! We wanted to create a reference point for modders. Now we are just at the beginning, but later on we'll create a thread for each filetype, e.g. the Material Definition, the Geometry Node, etc...

Khaibit
9th Aug 2005, 02:04 PM
Thank you, JWoods!

I already investigated some packages of the Grand Trianon Collection which was quite difficult as I got error messages and couldn't open/save the cloned packages, including the repository - is this caused by the 'ignored' error message during the slave object creation??? (Or are just some of my downloaded objects currupt? Oh well...) Anyway, without this tutorial I still would have been lost so thanks again, Jack :)
Now we are just at the beginning, but later on we'll create a thread for each filetype, e.g. the Material Definition, the Geometry Node, etc...
Great news! :thumb:
So far the wiki isn't helpful to me (tried to find out what's this LIFO for but the listed 'infos' are even more confusing...) Will you include a "what's this good for" for (dumb) starting creators like me who don't know anything about programming languages, don't know what the listes entries like "4 unknown x(Always a power of 2 aka 16,32,64 etc)" should tell them? :D In this case the wiki can become helpful to more people - even without pics ;)

Numenor
9th Aug 2005, 02:08 PM
I already investigated some packages of the Grand Trianon Collection which was quite difficult as I got error messages and couldn't open/save the cloned packages, including the repository - is this caused by the 'ignored' error message during the slave object creation??? (Or are just some of my downloaded objects currupt? Oh well...)

The "error" reported in the article is only an information: it simply says that the name of the newly added cDatalistExtension block is empty (it will be filled in the next step).
The problem you are having opening the packages aren't related to that: it's either a bad download or a bad installation of SimPE/.NET.

Khaibit
9th Aug 2005, 02:36 PM
:laugh: I read the tutorials/infos on my "workspace" PC carefully when I can follow the steps - should have taken a closer look first *shame*

Hopefully this problem will be fixed with version 0.44 - downloading the required managed DirectX 9c. A clean install seems to be helpful, too. And reading! :D Didn't notice problems with my game.

Samekh
29th Aug 2005, 07:08 PM
Hia, I recently discovered I could (infact) make things appear smooth when before they had looked angular. That's thanks to something I found yesterday about Numenor using Wings where he said how he auto smoothed things. (How did I ever miss that - it works like a dream with the output from GMAX). So I've decided to redo all of my meshes as low poly with this smoothing effect. Since I have to map everything again I thought I'd go for the repositry technique (the one that Fat D was talking about) with a maximum of about three repositry items (simple cubes should save space I thought), one for soft furnishings, one for plumbing etc. Therefore I could have texture images with complimentary patterns and colours and people would be able to download the repositry item and it's colour options and make matching sets from my things without clogging up their folder too much with multiple texture images that were very close copies of eachother. I cloned the ming vase for my repositry cube and, using SimPE version 44, I'm trying to link the first of my remakes to it. Now it's recolourable but the chair from the connectable set I made isn't. The chair shows the initial texture of the cube. When the chair was borrowing from the Club sofa set in the prior version, it was recolourable.

I'm finding it a little hard (I thought I knew how to do this but...). This tut (technically a non tut) at the top, created before version 44?

If the cube is recolourable but the chair no longer is, do I need to tsdesignmode enable the chair too?

I know this is a controversial thing to do, is it more efficient and economical or not? Don't know yet. It might happen that us meshers all start to use the same images, some for hard items, some for soft, wood, plastics etc. and map our items accordingly. The image for my repositry cube is quite big, I know, but I'm hoping to be able to use if for most of my meshes and I thought carefully about spaces for colour blocks and fabric, plastic and wood textures. I thought about the things I made and how many textures were involved. Obviously I'll have to have seperate repositry items for my frame and picture meshes. I would love to stick them up here but it would be too close to breaching copyright. That's why I didn't do it in the first place. Ukranian modernist art. Wonderful stuff. And, ofcourse, the pages from my Lewis Carroll book, those brilliant engravings. Can't do that either sorry.

Thanks too, Numenor! You don't know how much you helped me with those few words about Wings but it will revolutionise things for me! Actually, it might have been J Woods talking about what Numenor did but thanks to both of you anyway.

I don't expect an answer soon (a yes or no). I must apologise for living in the (is this right?) temperate zone. Not many hurricanes here. Very small earthquakes. I hope everything is alright in S.E. America. Florida, Louisiana, Mississippi, etc. I love Florida. I loved Boca Grande and Coco Beach. On Coco Beach there are little shell fish that come up every time the waves recede. And the pelicans. They're fab. Where we stopped in Lemon Avenue on the Gulf of Mexico was just fantastic, Edward Hopper houses that had been there since the turn of the century. Are they gone now? Those weatherboard constructions? I would love to live in Florida but how on earth can anyone stand the storms?

I hope you're OK J woods, you and your family.

Numenor
29th Aug 2005, 10:16 PM
The Repository only need a tsDesignModeEnabled block; all the "slave" objects, on the other hand, need a tsDesignModeEnabled block and a tsMaterialsMeshName block, pointing to the CRES of the Repository.

In my personal experience, I've found that it's very easy to mispell the blocks names (in particular, I usually mispell the tsMaterialsMeshName: only "Materials" is plural, while "Name" is singular).

If your object borrows the default texture from the repository, then the Shape is OK: the problem must be in the tsMaterialsMeshName block (either in the block name or in the CRES reference within the block). Double check it. Be sure that the CRES reference has the ##0x1C050000! prefix.

Remember also that slave objects don't have Material Overrides.

Grapholina
31st Aug 2005, 03:34 PM
I have a question, and I'm sorry if it sounds stupid, but I just don't understand.

When you say "UV mapped it to the repository object"... what exactly does that mean or entail?

Does that mean that you add your slave object to the repository object's UV map?

I'm really confused on this one.

Lethe_s
31st Aug 2005, 04:01 PM
Grapholina,
basically, you're thinking in terms of texture image, and making your UV-maps 'fit'. At least, that's how I do it :)
First, take a look at all the objects you want to use in your repository set.
Then, count the number of different textures you'll need.
Say, a darker texture for the shadowy sides, a lighter on top, and a third for differentiating.
That means that your texture image will consist of three parts.
The top left corner will be that dark texture, the top right corner the light texture, and the bottom half will be the rest.
Now, uv-map all your objects in function of that texture image.
Make sure that when uv-mapping, all the dark parts go in the top right corner of the map, the light parts in the top left corner, etc.
So all your objects are uv-mapped separately, but 'fit' the same texture image, that of the main repository object.
Does that make sense?

Grapholina
31st Aug 2005, 05:31 PM
That makes a lot of sense. Thank you for the explanation. So... just to make sure I have this right... I'm only going to create one map, making sure that it fits all the objects; right?

Lethe_s
31st Aug 2005, 06:54 PM
Um, no :) (darn, I'm not good at this explaining thing, am I)

The whole point is to make only one texture image,
but, you need to make a uv-map for every object you have, otherwise it won't be textured.
So if you have, say, six objects. That will leave you with a repository set with six uv-maps and one texture image. The texture image will be attached to the 'repository object'.
The 'slave objects' still have their own uv-maps, but those uv-maps are geared toward the one texture image.
So, for a normal object, what you'd do is have a uv-map, and then build the texture around it.
For repository objects, it's safest to do it the other way round.
Um, let me give you some examples: (should have thought of this before :))

This is my repository texture image:
http://i4.photobucket.com/albums/y116/Lethe_s/stapelbattlements.png

this is the uv-map of the repository object:
http://i4.photobucket.com/albums/y116/Lethe_s/battlediagonaluv.jpg

and this one, is the uv-map of one of the slave objects. It's a smaller, simpler mesh than the repository object, but note how it's spread out to 'fit' the texture image of the repository object.
http://i4.photobucket.com/albums/y116/Lethe_s/battlediagonalcorneruvnew.jpg

Numenor
31st Aug 2005, 07:05 PM
Lethe_s, you explanation is perfectly clear (thanks for taking care of these threads, while JWoods and I can't connect...).

Grapholina, the meaning of my phrase (that is quite obscure, I agree) is mainly the following:
Usually, when we create a normal, stand-alone object, we create a map and then we create a texture that would fit the map.
When you are mapping an object enslaved to a Repository, the process is inverse: you already have a texture (created using the principles pointed out by Lethe_s), and you have to create a map that fits the existing texture.
Therefore, after you have created a starting UVmap (box, planar or whatever), you have to move/rotate/scale the various parts in order to position them over the right portion of the existing Repository texture.

Grapholina
31st Aug 2005, 07:33 PM
Got it. I guess now I'll go try it.

Lethe_S, thank you so much for taking the time to help me understand. And, Numenor, don't you worry about not being able to be here 24/7. I'm sure no one is going to keel over and die if they don't get an answer right away. Including me!

I really appreciate all the help you guys are giving me. I'm a fanatic about learning new things, only sometimes, I just don't get it the first go round.

Grapholina
31st Aug 2005, 10:44 PM
Well, darn it. I've tried this a total of 5 times and it still will not work right. The sofa is the repository object and the loveseat the slave. As you can see from the attached pic, the loveseat is picking up the pillows, but not the sofa fabric. Instead... it is picking up the fabric colors from the original base object (even though the sofa isn't).

What am I doing wrong?

Edit: Okay, I'm almost to the point of giving up. I'm on my 12th try and I still cannot get it right. No matter what I do, including changing base objects, the pillows pick up, but the fabric of the sofa will not show up, and instead I get the base object's fabrics. All of them. Interesting, though, the loveseat's thumbnail in the catalog is textured correctly.

If someone would please take a look at my object and try to tell me what I'm doing wrong, I would really appreciate it.

Lethe_s
1st Sep 2005, 03:39 PM
Grapholina,
I'm assuming you have two meshes or 'groups': one for the pillows, and one for the sofa.
and you're obviously doing everything right for the pillow mesh :)
now it's just a matter of getting the same method to work for the sofa
Did you make a seperate uv-map and texture map for the pillows and sofa, or did you uv-map everything to one texture image?

if you uv-mapped everything to the same texture image,
make sure that all your gmdc's, geometric node entries, shape entries, etc, point to that same texture image, this means having two groups called 'pillow' or something :)

if you chose two texture images, use exactly the same method as you did for the pillows, but replace every 'pillow' with 'sofa' (or whatever you named it)

and if you're really at your wit's end, upload, and I'll take a look at it :)

Grapholina
1st Sep 2005, 05:15 PM
Edit: I uploaded the darned mesh :smash: :smash:

I thank you for taking a look at this. I just want to know what it is I'm doing wrong.

Here's what I did. I used the Borococco(?) sofa for my base. My base had 2 groups (frame and fabric), so I kept them to simplify matters. The pillows is the frame and the fabric is the actual sofa.

Everything works fine with the sofa.

Next, I use the Borococco loveseat for my loveseat mesh. That base only has one texture image, the frame (because it uses the sofa's fabrics).

I map again the loveseat pillows and loveseat (2 maps, 2 groups). I import my new GMDC for the loveseat, I follow all directions for the repository technique, and then I put both the loveseat and sofa in my Downloads folder.

When viewing the catalog images, my meshes look fine. Correct texture for the pillows and couches.

When I put them on a lot, the sofa works, but the loveseat only picks up the pillows. The fabric, as you can see from my picture above, belongs to the Boroccoco loveseat.

I have been extremely careful not to make any typos or leave anything out. I've tried this so many times that I can do it in my sleep. I'm really frustrated, because I have NO idea what I am missing or doing wrong.

I've also tried various things on my own, just to try something, and for the most part I got no results, and one crash.

I was looking at the Moroccan chair that somebody made for the Moroccan Sofa and Loveseat. That chair has no images at all. Could this be my problem, that I need to delete the loveseat's shadows and all?

GRRRRRR!

Lethe_s
1st Sep 2005, 06:00 PM
Grapholina,
I think I found your problem (or at least part of it :) )
I can't really be sure, without having the repository object as well,
but if you look in your GeometricNode, pull down the blocklist to number 8,
you'll see that the fabric still refers to the art nouveau sofa.

If you want to enable the recolours of the sofa to work on the loveseat, this is where you'll have to add both groups and their respective referral strings (the ones you find in the Resource Node)
That means, make sure that there's both 'fabric' and 'frame' in the TsMaterialsMeshName, and make sure they refer to the right string.
Check the bottom half of JWoods tut for detailed info on this.
I noticed you also haven't cleaned up the cDatalistExtensions, so I'm guessing you haven't tried 'enabling' your slave object yet :)
Try following the enabling process, and see where that takes you. If there's any more trouble,
upload the both of them, so I can test my possible 'fixes'

Grapholina
1st Sep 2005, 06:54 PM
OK. Thank you so much. Actually, I was trying that while you were looking at the loveseat. I'm still not getting the correct results. One thing I have not done, is adding the string. I guess I'm a bit confused on that one because the references to frame and fabric are already there in the arrays. If I add more, I'm afraid I'll crash again.

Let me try it one more time, and if I fail, I'll upload both repository and slave objects.

Again, I can't thank you enough. I don't know why this is so difficult for me.

Grapholina
1st Sep 2005, 07:12 PM
Finally! I am so sorry for all the trouble. I finally saw what my problem was. I was pulling the sofa's file name from the wrong place, so it was totally incorrect. Once I entered the correct name (and the string), everything worked great. Well, almost. Now I have to enable the pillows for the loveseat which are not showing up in design mode.

I am really greatful for your help. If you hadn't said something about JWood's end of the tutorial, I would not have gone back to read it.

Samekh
1st Sep 2005, 07:26 PM
I was hoping to be able to help you, Grapholina, because I'm working on a very similar project using the Barrocco and Serenity Sitter stuff. Slightly different because I'm trying to link them to an independent repositry item. Earlier on today I tried to link them together, there are 7 clones of the Serenity Sitter and 2 of the Barocco Loveseat that I need to work on. But whenever I tinker with these things (well two of them, the repositry and an item from the set) things just get uglier. I thought (and this might be of some relevence to you Grapholina) that the loveseat was the original repositry item for the set. So I cloned that and then found that (even though it was the only partially recolourable item in my set) it was missing material definitions and overrides and texture images. So I attempted to redress this problem (in the repositry) by cloning the material definition, override and texture image from the ones that weren't shadows and changing the details so that they'd point to frame or fabric. Maybe this is a dud set for some reason. I wanted it because it had two recolourable models so it should have been easy and more versatile. I've mapped all of my remeshes accordingly. Now I am banging my head off a brick wall.

I have this procedure down for linking bedding to the original and homemade options and making bed frames reference their own textures but, can I do it for this? Can I heckers like.

It was possibly a major mistake cloning material overrides etc.

Grapholina
1st Sep 2005, 10:29 PM
well, I'm still messing with mine, and I may go to another base object because even though my loveseat is now showing the original fabric, the pillows are not showing in design mode, and even if I recolor the sofa, only the pillows show up for the loveseat, and not the fabric.

You may be right in that this may be one goofy set (the Boroccoco set). I'm to the point that I want to get on a plane and march on Maxis.

If JWoods were around, I'm sure he might be able to figure this out. Me, I haven't a clue. If you think of anything, post. I'll keep my eye on this thread.

Lethe_s
2nd Sep 2005, 04:31 PM
Grapholina,
remember how I said you only had 'fabric' in you TsMaterialsMeshName ?
Did you put 'frame' in there, with the appropriate string?
Otherwise the pillows won't recolour.
My offer to look at both your objects still stands :)

Grapholina
2nd Sep 2005, 04:43 PM
Thank you, you kind and generous soul! I'm ashamed to say how many tries I'm now up to.

Let me check my latest package to see if I have frame in the tsMaterialsMeshName. Then if it doesn't work, I'll upload both repository and slave objects for you.

Grapholina
2nd Sep 2005, 05:34 PM
Lethe_s, I really have tried. I've gone over the slave object tons of times and I just cannot see anything I've left off.

Maybe you can. I've attached both repository and slave objects. And thanks again for looking at this.

Grapholina
3rd Sep 2005, 03:15 AM
Any luck? I've tried several other things in the meantime, without success.

Lethe_s
3rd Sep 2005, 09:07 AM
Grapholina,
tea and patience :)
I have to sleep and stuff :D
now,
here's what I've done so far
Edited your sofamesh, by changing all the artnouveau instances to 'montereysofa', and the 'tanroses' to 'antique', they confused the heck out of me :)
Your loveseat mesh wasn't in the rar, so I worked with the one I already had,
and linked that to the sofamesh, that's all fine, but the enabling bit is harder, mostly because of the two subsets
I've so far experimented with one tsMaterialsMeshname for both,
and with two tsMaterialsMeshnames, but haven't been able to see the recolour on the loveseat yet
soooo, more tea and patience :) (or help of someone with a deeper understanding of the geometric node, of course)

edit: know what I just realized? I'm missing a SlaveSubset thingy in the geometric node... hmmm

Grapholina
3rd Sep 2005, 11:56 AM
Hmm. I've been trying different things myself, and have had some luck. Unfortunately, it was with a different base and the shadows are now off because it was a 3 tile object. Pfffttttt.

Anyway, sorry if I seemed rushed. I think we're in very different time zones, yes?

EDIT: Oooh! I just saw that tsDesignModeSlaveSubset thingy! It's in the Adirondak Loveseat. Is that what you were talking about?

Grapholina
3rd Sep 2005, 04:48 PM
Lethe_S, I did it! It had to do with the tsDesignModeSlaveSubsets in both the repository and slave objects.

Thanks for trying to help, anyway.

Lethe_s
3rd Sep 2005, 09:40 PM
Grapholina,
congratulations! :)
you must feel exhilirated right about now...
I'm sorry, I haven't had any time to look at it again, today,
cause yes, we are in vastly different timezones.
But sometimes, I don't have to do too much, it seems :)

Samekh
30th Sep 2005, 01:46 PM
Oh no. Sorry, I'm trying to link the matching chair to the (third party) repositry object now. I'm trying to follow the tutorial. I have the chair linked but having problems colour enabling it. I'm fairly sure SimPE has changed since the repositry tutorial was written (also some of the images are giving 'bad gateway' errors so I can't check to see whether I'm on the same page. I think there's a new section in the resource tree which is the 'resource node' and step 3 of the colour enabling section of the tutorial (where it talks about adding a cObjectGraphNode) is it using this 'resource node' to do it?

Can I go through my steps with you please (from the point where the slave is linked and I've deleted the non shadow material definitions, overrides and texture images. Changed the subset names in the geometry node tsDesignModeEnabled and tsNoShadow) and try it again?

Using the clone of a chair that has no parts that are slaves already.
Ok...

Right, I'm in the geometry node and there's no sign of the cObjectGraphNode there. So, perhaps naughty and incorrect, I'll follow the tutorial via the resource node.

Found the cObjectGraphNode, added one enabled it and given it a sequential index of 6 - commit.

Edit blocks in the resource node or the geometric node? Now there has appeared a cObjectGraphNode in the geometric node but my 6th entry is not there!

I'll use the geometric node. Edit blocks, found the cDataListExtension and added one (it is number 6 in the list) - commit.

Geometric Node, content, pull down blocklist, selected the cDataListExtension and given it the name tsMaterialsMeshName and added 2 strings for the 2 recolourable parts with the names that correspond to the repositry item.

I'm now in the repository's Resource Node/Plugin View/Content/cObjectGraphNode
and copying the filename which is ##0x1c050000!reposcube1 (leaving out the _cres suffix) into the string fields of the slaves tsMaterialsMeshName. Commit and Save.

So does that sound right? I think I'm getting confused by the step 2 and step 3 of the tutorial. Are we supposed to go from the geometric node to the resource node before step 3?

Anyway, I'm going to try it now. If it works then perhaps (if anyone else is having the same difficulties) this post might help. :)

Ah well, it didn't work. Didn't crash but didn't work. I'll try doing it over, staying within the resource node to edit the blocks. Please forgive me if I seem a bit frantic (much caffiene to maximise concentration) and also if I'm in the wrong place for this (I came back here because it's the same project (or mission), essentially, as the one I was asking about before. I don't really want to post this broken slave object because (please believe me) I want to learn how to do this for my self. I've got the tutorial open, my repositry, my slave and the package file of the table that JWoods kindly fixed for me.

Once I get this working I'll 'report my progress'. If anyone finds this post, in the meantime, and can refer to the tutorial - please tell me if I'm being completely stupid getting stuck between steps 2 and 3. Also, I'll move this post to the repository section.

Numenor
30th Sep 2005, 04:50 PM
The missing images has been fixed. Thanks for reporting.

As for your problem, Samekh, never ever change anything in the Resource Node! The Geometry node always contains a cObjectGraphNode (if ever happens to you not to find it, please post here a screenshot: maybe there's a bug in SimPE?).

The only time you need to look at the Resource node is in Part B, step 5.

Also, in Part B, both the steps 2 and 3 are performed into the Geometry Node; the Resource node is not involved. The meaning of these steps can be found in the FAQ nearby: every time you add a block in the GMND blocklist, you have to add a line in the GMND DatalistExtension List.

Do again the tutorial, but this time don't miss the cObjectGraphNode into the GMND. Again, if you can't find it, post a screenshot.

Samekh
30th Sep 2005, 06:50 PM
I found the cObjectGraphNode, thanks for fixing the links in the tutorial. I was pulling down the blocklist in the geometric node looking for it when I should have selected the 0x0 geometric node in the blocklist and then there's a tab available (below it) for the cObjectGraphNode. I'm just about ready to test it again. In the table that JWoods fixed for me (in the geometric node pull down blocklist) he has cDataListExtensions for Wood and Metal (the original ones had been base and table). That was a already a slave object before I cloned it. This chair that I'm doing wasn't enslaved to any other object and it has cDataListExtensions still referring to wood and cushion. It's pointing to the same master as the table, I'm presuming I should change these (their names) to wood and metal?

In the table that works there is no seperate cDataListExtension in the blocklist, in my chair their is one now that refers to wood and metal - I take it that should do the same thing? Anyway, I'll try it now. Silly me! If I'd only just investigated the geometric node a bit more in the first place I'd have found the cObjectGraphNode! I'm sorry I'm such a nuisance.


And then it works! I can't believe it. I feel utterly ridiculous now. I learned to do this with bed frames months ago (it's basicly the same thing). It just demonstrates that trying to learn how to do things to the extent where you don't really even look at what your doing any more (me and bed frames) can be a massive stumbling block whenever there is the slightest change to layout or process. Doh!

Numenor
30th Sep 2005, 07:28 PM
Bravo! :)

Actually, I understand that sometimes, though we may think that something is obvious, it is not. I didn't think to suggest you to select the first entry of the blocklist, in order for the cObjectGraphNode to appear...

As for the "wood", "metal", etc... blocks, I know that JWoods tutorial suggest to rename them according to the new subset names. But I still haven't found the purposes of those blocks.
In my objects, I usually delete them (deleting the same number of entries in the Datalist Extension List!!!), an all my objects (slave or master) works perfectly...

Samekh
30th Sep 2005, 08:14 PM
There may be a clue. I left them as 'cushion' and 'wood'. I just thought I'd try the package first and when it worked I left them as they were, but the thumbnails for both the table (the package where table and base blocks had been renamed) and the chair were messed up, i.e. showing a blue shape. I deleted the thumbnails package to see if they would return and the chair thumbnail shows correctly now but the table doesn't. I don't know what that indicates but leaving those block names as they are originally makes the thumbnail work!

When you delete those possibly unneeded blocks, do you need to do anything extra with the thumbnails for them to show correctly? Maybe renaming them 'confuses' the package and deleting them forces the game to show the object with the external material definitions it's linked to?

Actually, I'm not sure JWoods did rename them. He fixed my package but the chances are it was me who had renamed them and he didn't do anything with those blocks! I should point that out ;).

I've still go the zip file that he sent me with the working table so I'm going to delete those files in the table. If I understand you correctly I:

a: (In the geometric node/content/blocklist) delete the cDataListExtensions for wood and metal leaving four blocks (the root, the tsnoshadow, the tsdesignmodeenabled and the tsmaterialsmeshname) then I

b: (Still in the geometric node/content/blocklist) select the root (0x0 or geometric node) and as there are 5 items in the datalist extension reference - do I just delete number 5 to take it down to 4 and match the number of blocks in the blocklist or do I remove 2 because I'm removing two items from the blocklist? Is the geometric node (0x0) counted? I get it, if I delete two from the blocklist I delete two from the datalist extension, and it doesn't matter which two so long as I delete the same number. Ok :). Ah, I delete 1 and 5 in the datalist because, in the blocklist, items 1 and 5 are wood and metal... I get it now.

Numenor
30th Sep 2005, 08:36 PM
I don't think that the thumbnails rely on those blocks, because the blocks contain reference for all the original Maxis colours for each subset. As far as I know, the thumbnail is generated reading the Material Definitions from the Shape.
When I test my objects, I usually delete all the files into the "Thumbnails" folder, to force the game to regenerate them from scratch.
A blue part in the thumbnail, generally, means a flashing blue part in the object, when placed in game.
Double check the Material Definition references into the Shape of the slave object ("Parts" tab), being sure that they match exactly the references in the Shape of the Repository.
Also, when testing the slave object in game be sure that the repository is in the downloads (sorry if this sounds too obvious :)

Samekh
12th Oct 2005, 08:05 PM
It's me again! Hia Numenor. Firstly, I must thank you because I have been marching through linking my objects to two third party repositories and I'm really getting the hang of it now and understanding more and more all the time. I even have objects, with two models, that borrow from two different repositories for their textures and it's fantastic because it cuts down on so much space and everything can be co-ordinated (it's taking me a while re-meshing, re-mapping and getting the repository textures perfect and flexible, and re-doing the shadows - I should thank you also for saying that you use Wings (and how) because that's dropping my poly counts dramatically and, mostly, improving the appearance).

I've been remeshing my lamps today (guess what's coming) and for some reason I'm unable to make recolours of the repository. When the option comes up to chose a subset to recolour I get nothing.

I've been using a dining chair with two recolourable parts for both the other repositories but, this time, I had to use the Illistara lamp because the shade has two states and I don't know how to give the chair a lit state.

Can lamps use the repository technique?

The first time I tried it I deleted all the uneccessary files from the repository (like shadows, light patterns and references to debris) and I renamed all references to lampshade to shade and post to patterns. That didn't work. Now I've tried not deleting anything but changing the important model names in the first gmdc and the first shape and in tsdesignmodeenabled and tsnoshadow in the Geometric Node. Still no joy.

I'm trying to think what it might be - I did everything the same way. I would have cloned the light (for the repository) without pulling the animations. Is it something to do with changing the model names? I've used the Illistara lamp all the time because it's so straightforward and has two, easily recolourable, subsets. (What's the difference between a subset and a model?)

The more I think about it, it must be to do with changing lampshade to shade etc. There must be something else in the package that insists on it being 'post' and 'lampshade'. I'll change the names back and see if that works, it won't be hard ;) (now).

Ignore this for the minute until I've tested it out.

I should have tested my repository in game first (to see if it was recolourable) but, like I said, with your help I've been galloping through my meshes. (Also my graphics card is getting glitchy and it doesn't like me going into a 3d program after playing the sims without me shutting the pc down first - if I do that it crashes. Hey ho.)

OK for now! I'll start mewing loudly if I really, seriously, need help.

If you know offhand though - using repositories with lamps; is that very different?

Numenor
12th Oct 2005, 08:34 PM
Using the repository tecnique on lamps is exactly the same as usual (btw, bravo! seems that you have mastered the repository tecnique! :)).
The Ilistara lamp has already two "Maxis" recolourable subsets, whose names are already perfect to be linked to slave objects.

What I don't understand (I don't remember now exactly what JWoods has wrote in the Repository tutorial) is why you deleted anything from the package: the clone should be complete, with its shadows and even the debrispile (that is quite useless in lamps, but removing it needs care).

Once you have cloned the Ilistara, remesh it at will and you'll have a perfect recolourable repository.
Just remember that you can link to a "lamp" repository only other lamps, because of the lit/unlit nature of these objects (you can link non-lamp objects, but only to the "post").

The slave objects must have, as usual, the same subsets names as the repository (post and lampshadow). Do not change the name of the subsets, neither in the repository, nor in the slaves, unless it's strictly needed (and in this case is not needed): though you are good at this "linking" job, you may miss a step and the links would be broken.

Samekh
12th Oct 2005, 09:53 PM
I returned the names in the repository to post and lampshade and it works! It's recolourable anyway. It's got to have something to do with the Material Overrides or something. I'll use the texture for the post in lots of other things, I've been careful to make the textures for the repository items very distinct from eachother, it's tricky - but it makes it worth the space on the drive. I know JWoods said that he had more than two recolourable subsets in his repository but (I had a look at the packages and I couldn't, for the life of me, figure out how) I thought it would be simply a case of adding extra models in the gmdc and extra Material Definitions and Overrides and an extra tsMaterialsmeshname in the geometric node, and adding other arrays here and there but... that's like walking on the moon for me!



'What I don't understand (I don't remember now exactly what JWoods has wrote in the Repository tutorial) is why you deleted anything from the package.'

I deleted things in the repository to start with, but then not deleting them didn't make any difference because I had changed the subset names. The repository only needs to have the Material Definitions, Material Overrides, Shape references, Models in the GMDC, texture images and references in the Geometric node (tsdesignmodeEnabled and tsnoshadows) for the textures you want to borrow? That's very likely part of where I went wrong.

I have changed the names of the subsets in the other two independant repository items I made but they were just for beds and chairs and tables. Single state textures.

In the slave objects I delete Material Overides, Definitions and Texture images that I need to borrow from and link to the repository. Shadows are always kept. And then I name the models (in the gmdc) to be the same as the models in the repository item(s) change the shape parts name and material definition to whatever it is in the repository item(s). Go up to the Geometric node and change the tsDesignmodeenabled and tsnoshadows.... Would anyone else need any help in the linking of basic objects to repositories? I think I'm just about there with the easy stuff. Nobody but me is needing help with this now though (not for ages). I must be a bit slow.

What makes a good repository texture, Numenor? Considering it has to work for many different things. I'm using windows with my repository items but they can't be as good as the Maxis ones no matter how carefully I map them - because, in Maxis, they are mapped for windows! It offers many more colour options (yes) and they match little bits of tables and beds. How many different repository textures does someone need do you think? I would like to be prolific and make lots of nice things that lots of people will want and that's my reasoning behind taking on this idea of seperate repositories sooner rather than later. I would 'like' to be! I now have three repositories, I've been able to delete the massive colour options that were previously appended to the originals and I've just about mapped everything I've linked to these repositories. It probably is a matter of conjecture but is this a good idea or not? The Maxis textures are so perfect. It saves space on the hard drive of the originator! If the textures are up to it then perhaps they can be linked to by other meshers while they add their own? I'm not that great at textures. I managed to utilise Paint Shop Pro to work with the Maxis textures when I first found SimPE but they are extremely proficient and artistic artists at the Maxis place.

Numenor
12th Oct 2005, 10:11 PM
Trying to reuse Maxis textures is really a good thing, since they are so beutiful (though sometimes it's a bit tricky map a mesh over them...).

As for having more than 2 repository subsets, well, that's a creation of mine :D
The only object, as far as I know, that uses 4 subsets is the Floor Mirror from the Grand Trianon set. The trick, in that case, was to add an additional GMND, not linked to anything else; its tsDesignModeEnabled contains the subsets # 3 and 4 (while the main GMND, that is part of the object itself, contains the subsets # 1 and 2).
For both subsets 3 and 4, I have then added a default TXMT and TXTR, that are not used by the object itself: they are only available for the slave objects.
Very easy, once you have understood how the repository works...! :)

As for the "perfect" repository, no objects are better than others... The only limitation, as said, are the "multi-state" objects, lit/unlit and clean/dirty: a slave lamp needs a repository lamp (at least for the subset that lits up), and so on.

Samekh
20th Oct 2005, 05:26 PM
Still having a problem with linking lamps to a repository, but it's a bit of a weird one that made me go and check the 'flashing blue object' thread. It's to do with the lampshades on the slave objects. The repository lampshade is recolourable and works fine but all of the lampshades that I linked to it flash blue. All of the colour options (for both the repository and slave) appear in the catalogue and the shape subset name and material definition file (in the slave) is identicle to those in the repository. The only thing I can think of is that the slave's material definition reference in the Shape is ##0x1C050000!reposcube3_lampshade_plainshade_lit and perhaps it should link to the unlit state instead? As I said though, it's exactly the same in the repository and that works. All of the lamp bases work and are linked. I'll try a fix integrity on one of the slaves and see if there's any difference. I remember reading something somewhere about having to change or delete a reference in multi state objects but if the repository works, I can't think of a reason why the slave shouldn't.

JWoods
20th Oct 2005, 05:43 PM
Samekh: Before I ask you to upload your package try exactly what you said , linking it to the "unlit". I believe that may be the solution... If not you are free to upload it to have it looked at... :)

Samekh
26th Oct 2005, 07:11 PM
I have tried that, linking it to the unlit state, it didn't work. I'll do some more checks to make sure I haven't made a stupid mistake before I submit it for checking. I can't have made the same stupid mistake with all of the lamps I tried to link to the repository though. If it's been done already there must be a solution.

Reyn
21st Nov 2005, 03:40 PM
I think you need to map each item, but you only colour one. That way, each object kows where to put each texture.

I could be wrong, but that's what seems to make sense.

Spaik
4th Dec 2005, 11:35 PM
I need a little more help (it seems the only thing I'm able to ask :) ).
I've tried to use the repository for my Xmas tree with lights; the idea was of linking the tree to the texture of Maxis pine tree (which could make my package really lighter), while leaving in the package the texture of the decorations.
I followed all the steps of the tutorial, but the result was a flashing blue tree.

I must say that I used as new subset name "treepine_tree" which I gathered from a cloned package, but I don't know if it is correct. So...
1) How can I retrieve the subset names used in Maxis objects?
2) Is there anything else that I can do to solve the problem?
3) Would it be enough to follow only part A of the tutorial?

Thanks Silvia

Numenor
5th Dec 2005, 01:37 AM
When you want to link your package to an external object, you need to know the original names for the Resource node and the subsets. In order to do that, you have to *clone* the "master" object, unchecking all the cloning options; this way, the internal filenames will not be changed or nemamed.

For instance, the Christmas tree has the following names:
CRES = christmasTree_cres
subsets names: tree (recolourable), christmastree_ornaments (not recolourable, animated via effects) and christmastree_presents (not recolourable).

Remember that when you link your object to a Maxis object, you don't have to put any ##0c1c050000! prefix, neither in the GMND nor in the shape, nor in the MMAT.

As for your question #3: the "Repository object" in this case, is the Maxis christmas tree, and it's already done; you have to follow only part B on your object (but remember not to use the prefix).

Spaik
5th Dec 2005, 10:37 AM
THANKSSSSSSSSSSS NUMENOR (sorry for shouting, but I'm so happy I did it).
Actually, I used the mesh from the pine tree (the one in gardening section) and not the Xmas tree, but I followed easily all your explanations.
I made two mistakes in my first attempt: I got the wrong CRES name and I put somewhere the ##0c1c050000! prefix.


I'd like to say a BIG THANKS to JWoods too. You two great men are teaching me a lot of things.

Silvia

Samekh
29th Jan 2006, 08:22 PM
I should have returned to say that I gave up on trying to link the shades to a shade repository!! I know you say it's possible but I had several lamps on the go and it's halfway to texture economy if I can link all the bases to a master which is possible. I think the repository technique is brilliant once we can understand the bones of it. I still look at the colour enabling thread and, in my experience, many of the problems with colour enabling can be avoided by linking to another object. I don't know how to efficiently add a material definition and overide and a texture image (and all linked together) which is what is needed for having two recolourable parts. I've read, somewhere, that all you do is export these things from another package and then import them but the linking is profoundly difficult and then there's the risk that the hidden data might crash the game. Linking to something else is much easier. It also means you can add a second recolourable model where there was previously only one because you get rid of all the definitions and overides of anything you want to link.

Is it true to say (this is something I think I learned) that for all models you want to be linked to a texture image held within the same package you need a definition and an overide (apart from shadows which just have a material definition)? So it goes, from the geometric data container (which hold(s) every part of the object) to the shape which can direct the models to use the material definition from their own package or look elsewhere. Then those models in the shape file, that are told to look internally, are pointed to their own material overide and from there to the definition? Is there a breakdown (luddite level) in the wiki for me?

If it's ok I'd like to ask a question here that I found it impossible to get the answer elsewhere. Why is it sometimes very hard to pick up an object in game? Like a remesh of a sofa I ran off - it's almost as if I need to select a precise point on a leg to move or recolour it? Is that data held in the Object data somewhere? It was a sofa when it was cloned. It would probably explain what to do about a complaint I had that people couldn't click on a plate on a table.

I still think the repository technique is a brilliant, powerful tool. It can go wrong. It takes some tinkering with independant repositories. For a while I thought the perfect independant repository was something that had a hard surface, a textile, a metallic portion, but the bleed through was horrific (zooming out bleed) particularly on tubular metal.

I recently discovered the perfect object to clone as a repository, or what I thought was perfect, and that was the crib. It has two subsets linked to the same texture. In effect you can have two different sorts of wood, or plastic, or fabric and you don't need to duplicate the textures. However, I discovered that the alpha channel of what would have been the bedding part was making any models linked to it diminish until they vanished on a zoom out. When I realised the problem I copied the data from the material definition of the frame to the same places in the bedding. Voila. Works now. I thought I had done something ridiculous and would have to remesh everything but a bit of clear thought prevailed. Should I make a clone of the crib and fix the material definitions for people who want a repository (for a template) where they can have two subsets sample the same texture image? :) How are you anyway?

IgnorantBliss
29th Jan 2006, 09:08 PM
Samekh, adding a subset and making it recolorable is not very hard, I have written a tutorial (http://www.modthesims2.com/showthread.php?t=103379) on it.

Numenor has a post about package structure (http://www.modthesims2.com/showthread.php?t=121294). As far as I know, the Shape points to the Material Definition, not the Material Override. Not all subsets need a Material Override, but recolorable ones always do.

For the unclickable sofa, it might have something to do with the clickable area determined for the mesh. With newer versions of SimPE, when you import a mesh, you can select which parts will be included in the Bounding Mesh. The clickable area is determined by the area of those mesh parts.

Samekh
29th Jan 2006, 09:48 PM
Oh, can anything be changed within the gmdc then, or upon import?

IgnorantBliss
29th Jan 2006, 09:58 PM
Oh, can anything be changed within the gmdc then, or upon import?

If you're talking about the bounding mesh thing, yes.

simfreaks
4th Apr 2006, 11:57 AM
I have an odd problem that I cannot figure out.
I'm making a living set.
chair = repository
loveseat and sofa = slaves

the loveseat and sofa are working just fine, the chair however, only picks up the textures when I'm placing the object down. I get "not designable" when I tried to change the texture via design mode.

simfreaks
4th Apr 2006, 12:20 PM
I fixed my problem by recloning the chair with all textures, when I had only pulled one initially and it works fine now.

Sluvah
7th Apr 2006, 09:10 PM
Thx a lot god Jwoods !

zedrik
13th Jun 2006, 10:03 PM
I tried my hands at this repository technique again after failing miserably and needing help from Lethe_s last time. Yesterday, I made a set of objects that all shared one texture in a repository object. It turned out wonderfully.

Today, I tried something I have been wanting to do for a while, but didn't feel like messing with the repository technique. After yesterday's success, I figured I should try it out.

I made a set of crosses a while back and I wanted an inverted series. The floor cross on a base works perfectly fine. The inverted cross pulls the stuff from the normal cross perfectly. Both inverted wall crosses show up in the game fine. They are even pulling the texture from their respective normal cross fine. They just aren't pulling any of the recolors of their respective repository cross.

I tried recloning them again and starting over from scratch in case I missed something, but it's still not working. I'm not sure what I'm doing wrong. I'd like some ideas on how I can correct this problem.

Numenor
13th Jun 2006, 11:57 PM
If the slaves borrow only the default texture, I'd say that you have correctly set the references in the Shape, but there is aproblem in the GMND (the tsMaterialsMeshName).
Double check it, and be sure to have the "##0x1C050000!" prefix in front of the CRES reference.

Or perhaps you have created the new block in the GMND, but you forgot to update the DataList Extension List.

zedrik
14th Jun 2006, 06:23 AM
Cool, I fixed it. Problem was in the GMND. Must have skipped the step where I add in the cObjectGraphNode's Datalist Extension Reference. Both times. And the next time in each when I tried recloning. Talk about absentmindedness...

Thanks for the help. Sometimes just need an outside mind to get out of mental loops sometimes I guess.

nectere
7th Jul 2006, 03:26 AM
Giddy with rediclous amounts of JOY!

*does the happiest dance!

Ok I have nothing constructive to add here except THANK YOU! My window frame now pulls the proper textures (from Maxis) because trust me I suck really bad at textures, so bad I HAVE to use the texture coordinator editor in Milkshape rather than the uvmapper. (now if could just out a way to export those coordinates...) Its all those little lines, they totally confuse me!

so so very happy.

Mage
7th Jul 2006, 05:31 AM
Thanks JWoods and Numenor for all this great information. I'm trying to make kitchen islands that use the same texture as a new kitchen counter I made. Ignorant Bliss sent me over to Numenor's counter templates, but by then I had already spent a week making my counters and I couldn't bring myself to give up on them yet. I have the island made - the mesh not quite perfected yet- and it works great but when I made a recolor of the counter it didn't show up as an option for the island. I've been fiddling with it all day without success. I was wondering if someone would take a look, if indeed it is even possible to get it to work with counters and islands.

IgnorantBliss
7th Jul 2006, 05:36 AM
Mage, cloning a Maxis counter the normal way will likely result in a non-working package, because the textures are not linked properly. That's why it's recommended to use the templates instead, fixing the bad packages is possible but quite complicated. You could still use your meshes and textures on new clones for the most part.

Mage
7th Jul 2006, 06:01 AM
Thanks again, Ignorant Bliss. You mean I could make the island a stand alone object with it's own texture etc.?

IgnorantBliss
7th Jul 2006, 06:14 AM
What I meant was that if you reclone both the counter and island, you can reuse your current meshes and textures. Then, according to Numenor's instructions in the template thread, you can link the island to the counter for textures.

Mage
7th Jul 2006, 12:06 PM
Sorry. I realized later that was what you meant.

DinosRose
18th Nov 2006, 03:52 AM
Double check it, and be sure to have the "##0x1C050000!" prefix in front of the CRES reference.


I knew if I ever had the time to read thru other's posts I'd discover what was going wrong with my slave object. I had given up and went back to my stand alone chair using the same texture files as my table even tho it meant double the # of packages, but figured I'd give it one more try.

I don't recall the tut mentioning that the CRES reference needed the "##0x1C050000!" for my tsMaterialsMeshName strings (it wasn't part of the Filename in the Resource Node of my repository object)...but I added that to the beginning of each string and :D my chair now shows up with all the wood color opts and fabric ops I had on my table texture file! I'm so thrilled.

Thank you Numenor!

Dino's Rose - amatuer modder

Numenor
18th Nov 2006, 02:44 PM
It's easy to ovelook a step in this tutorial, there are numerous steps to perform :)
You are right, the tutorial doesn't mention explicitly to include the prefix in the name, but in the picture (part B, step 5) you can see that the prefix is included in the text to copy and paste.

I'm glad that you succeeded in creating your slave chair (beautiful, btw! :) )

DinosRose
19th Nov 2006, 07:48 PM
It's easy to ovelook a step in this tutorial, there are numerous steps to perform :)
You are right, the tutorial doesn't mention explicitly to include the prefix in the name, but in the picture (part B, step 5) you can see that the prefix is included in the text to copy and paste.

I see where I went wrong now. I copied what was in the Filename field on the Content tab of the Resource Node instead of the Filename on cObjectGraphNode tab (too many filename fields... :rolleyes: ). I guess that's what I get for trying to switch back and forth between screens and Adobe Reader...I should have just printed the tut out.

Thanks again!

Dino's Rose - amatuer modder

angieb
9th Jul 2007, 12:15 AM
Hi,

I'm hoping someone can help me out please, I think i've chosen the wrong object to be a repository as I think its a slave to another object already.

I made three different size candlesticks and then imported them as subsets to the holiday candle. When I went through the repository and slave steps the candle is already there with all its recolours and the glowgoub which I want to replace with the candlestick.

Can I still use this object as the repository if its already a slave? Can it be changed from being a slave?

I would really appreciate your help and I hope I'm not wasting anyone's time I do tend to jump ahead of myself sometimes I'm just so eager to learn.

Thanks

angieb

Numenor
9th Jul 2007, 08:54 AM
If I understand well, you have created three candles, with the intention of making them slave of the Holiday Candle; but then you discovered that the Holiday Candle is already slave of another candle, right?

Then you can just set as Repository the original candle that the Holiday Candle is enslaved to; you have to edit your three candles like this:

1) GMND/tsMaterialsMeshName: copy the CRES reference from the Holiday Candle and paste them into your own candles
2) Shape: again, copy the Material Definition references from the Holiday Candles and past them into your own Shapes.

If you cloned the Holiday Candle, in order to create your own candles, then probably the references are already fine, without any need of correction. Just be sure that SimPE has NOT added any "##0x1c050000!" in front of the CRES names (in the GMND) or in front of the Material Definitions names (in the Shape).

This way, your candles will be enslaved directly to the original candle. This will get rid also of another problem: the Holiday Candle not being widely used (you can't redistribute Maxis items, and only a small part of the users own the Holiday pack).
I always suggest not to use as Repository an object coming from an EP, or (even worse) a stuff pack, for this reason.

angieb
9th Jul 2007, 09:50 AM
What I did was import the candlestick as a subset to the candle making a seperate object, then created another two candlesticks of different size and I wanted them all to share the textures of the first candlestick and candle making a set. I was being a bit of a cheat because I don't know how to make an animated candle yet I hav'nt got that far. I did try cloning the candle and importing that as a subset to the candlestick but was getting ahead of myself there because I don't know how to retain the animation.

Would it be better then to just not use the holiday candle but clone it with the boxes unchecked and look up the tsMaterialsMeshName of the candle the holiday candle is enslaved to and then import the candlestick as a subset to that one making a seperate object candle and candlestick.?

Thankyou very much for your help.

angieb

Numenor
9th Jul 2007, 06:20 PM
One of your problems is that you "don't know how to retain animations", and therefore you decided to import an additional subset into an existing candle (so to "retain the animation").
But there's a misunderstanding: the candle mesh is NOT animated, and therefore you can load it in your favourite 3D esitor, saving it in OBJ format, without losing any animation. The only animation is on the flame: it's just an animated texture, that is contained in every candle.

My suggeston is to do this:

1) clone the candle from the base game
2) export the mesh (all its parts, including the flame) and edit it at will; you can move and resize the flame, too: just remember not to change its name and not to modify its UV-map.
3) reimport everything in your clone.

The second problem I foresee is that you have "imported the candlestick as a separate object". I'm not sure to understand well, but the Repository tecnique requires that the slave object has the same number and same name of the master object...

angieb
10th Jul 2007, 02:34 PM
Sorry, I'm not very good at explaining.

The advice you have given me is exactly what I needed thankyou. The main problem was the holiday candle. The repository technique worked untill I got to the point where I needed to enable the slave object then it all became confusing because that was already a slave. I will do exactly what you said with the candle from the base game and then I'm sure everything will work great.

Your time and advice is greatly appreciated.

Thankyou ever so much.

angieb

angieb
18th Jul 2007, 11:38 AM
Hi Numenor,

I did everything you said and its's worked out fine thankyou. The only problem I have now is that I can only access one candle colour and not the recolours. Do I have to list the other colours somewhere. I have tried putting all three colours in the shape but still only one colour will show.

Thankyou

angieb

Numenor
19th Jul 2007, 09:16 AM
Putting all the three colours in the Shape is useless (and actually wrong): the shape must hold ONE Material Definition for each subset, in particular the default colour; so, you'd better remove the extra lines.

As for the recolour not working, remember that:

1) in order to create a recolour, you have to create a recolour package of the Repository object (the Maxis candles).
2) The recolours should be visible in catalog, for both the Maxis candles and your custom candle.
3) If they appear only for the MAxis candle, then there is something wrong in your slave object: double check the GMND (the tsMaterialsMeshName should contain the CRES reference of the Maxis candle without any "##0x1c...." prefix, because you are linking to a Maxis object).

angieb
19th Jul 2007, 10:07 AM
I know it was wrong I was just trying anything and everything to try and get the colours to show.:cry: Sorry, you learn from your mistakes. I've put it all back as it should be and copied and pasted the cres name. I've gone through J woods tutorial and the tutorial by Ignorant Bliss, making a repository from maxis objects and I can still only get one colour for the candle.

I will go over it again obviously I 've made an error as you said with the cres name.

Please don't be angry with me I'm just getting a bit frustrated with myself it's obviously something really simple and I can't see it for looking. :(

I've only done one recolour of the anytime candle so far because I can't get the other two colours of maxis to show let alone mine.

Thankyou again for your time and your help and I'm sorry if I gave you the impression that I don't understand the technique I do I just can't get it right. I hope I hav'nt wasted your time.

thankyou angieb

Just a thought I only used one candle not all three.

Numenor
19th Jul 2007, 10:43 AM
Getting angry with a user that kindly asks questions and shows a genuine willing to learn is something that will never happen :lol:

I've only done one recolour of the anytime candle so far because I can't get the other two colours of maxis to show let alone mine.
Does this mean that the original anytime candle doesn't show ALL the Maxis recolours, plus the new one you created? In this case, the recolour you created might have something wrong, OR the mesh object you created is creating conflicts with the Maxis one...

Let's do this: post here your custom candle, and the recolour you have created, and I will take a look :)

angieb
19th Jul 2007, 06:37 PM
Hi Numenor,

I've done it. :bunny:

I had'nt put in the the last Data List Extension. I did'nt get an error message probably because its an updated version of SimPe and that confused me a little I thought I had'nt done it right so I'd left the tsMaterialsMeshName (the one I should have changed to candle) as that and not put in the last string. So it was linking to the main candle but not picking up the recolours.

Thankyou for offering to take a look if I had'nt figured it out by this evening I was going to tear my hair out I would have been begging you.

thankyou again :)

angieb

Numenor
19th Jul 2007, 10:45 PM
I'm so glad you fixed the package yourself :) It's much more gratifying this way, isn't it? :D

If you didn't add a line to the DataList Extension Reference, the game just ignored your tsMaterialsName block: the purpose of the Reference list is actually to tell the game how many blocks are in the GMND.
FYI, if the Reference has one line less, then the last block in the GMND is ignored; if the Reference has one line in excess, the game will crash.

angieb
20th Jul 2007, 10:33 AM
Definately more gratifying :D

I won't be making that mistake again, what was so frustrating was I knew I'd got it half right because the candle would'nt have shown up at all.

I've also memorised the tutorial because i've been throught it so many times now. :lol:

Thankyou again I really am enjoying learning all this new stuff even though it can be frustrating at times and I would never have been able to do any of it without all you guys at MTS2.

A very happy bunny :bunny:

angieb

julsfels
18th Oct 2007, 06:41 AM
Hello,

first of all: thanks, JWoods and Numenor, for this wonderful "tutorial" (and all you have done for the community).
I always thought it was very annoying to have textures more than one time in the game, even if the textures are hugh ones (shame on me).
So yesterday I changed some of my objects to the repository technique, and everthing worked fine. Happy!
But now I have a problem: I have two different computers with two different installations of The Sims. I worked and tested on the one where only the Base-Game is installed, and in the Downloads-Folder are only the objects I am actually working with. Here, everything was ok.
Then I tested it on the other installation - all AddOns, up to Bon Voyage, and all Mini Packs, and about 1000 Downloads. On this installation, the following problem occurs: by using the design tool (or even choosing a recolor from the catalog), the game needs around 30 sec. until the objects changes into the recolor - veeeeryyyy slooooow. This occurs only by using the repository technique - when I recolor the objects in the usual way, loading time is normal.
Does any one know about this problem, and is there perhaps a possibility to avoid this?

Thanks! Andrea

niol
18th Oct 2007, 09:17 AM
julsfels,

I guess this is not a particular issue for the repository technique.

My ground is that Maxis has already used it in some instances since the base game.
From my experiences, I don't see any lagging on this coz I often do repository recolouring and fences. Surely, this doesn't guarantee it's the case to others.

In your case, I reckon it's the amount of custom contents for your full game copy to read causes the lagging.
This also happens to me in my game copies with a lot of custom contents.

However, if the game engine sorting methods aren't parallel enough or selectively decided, some lagging for secondary sorting may happen when a huge total amount of contents (default and custom) to read. But then, isn't that good to have a temporary indexing for easy updating and sorting when that's the case?

In addition, bigger textures or meshes take more resources and timing to read. The more material features added to the textures to form the resultant materials can also take up even more resources and timing. So as the complexity of a mesh...

julsfels
18th Oct 2007, 09:46 PM
Yes. No. *Confused* Thanks for your answer. This was my first thought, too - too many custom objects.
But I am using the repository technique for other objects, and I have them in my "productive system" :lol: (the user-account, I am using to play) with over 20.000 DLs in game - and there is no lagging except of this single object (a door).

I guess, it must have a reason I did not yet detect - I´m going to test a little bit.

niol
19th Oct 2007, 04:45 PM
cool, that may help let us know more things... :)

kudos to you. :)

Ebbe
6th Dec 2008, 08:12 PM
Ok I read the tutorial on Repository Tehnique, but I have a few questions. Say I have a furniture set with about 5 pieces in it, and I've decided that my repository object will be a shelf type object with items already on it. Now the texture/UV map for this shelf will serve as the texture map for the other objects.

1) Is it possible to have multiple textures in the repository UV map tha is not used by the repository object?

2) When/and if I decide to gave one of my objects a subset of recolors, is that possible. By this I mean, you know how you click on say a counter and there's color options for both the counter and counter top. Could I still do that with on my slave objects. Say if I had a mesh that's a table with a jar on it that was a slave object, could i make a color subset for the table and jars all while working from the repository texture/uv map?

If so, I presume I would just go on with the subset tutorial.

EDIT:

3) Can this work if you are using the UV Mapper in 3ds max? Would I then just uv map them both, then open it in UV Mapper classic with my texture map?

4)And is it possible or better to actually have made a texture map before a uv map?

VioletPadfoot
30th Jun 2011, 12:37 AM
Just to let anyone know, the tutorial provided in the PDF says nothing about the "tsDesignModeEnabled" step in the "enabling" section, something I found out during the recent downtime. Thankfully I remembered I had to do something with that item (after doing everything else and wondering why my object couldn't be selected with the design tool) and figuring out what to do was fairly simple to remember (was only using the tutorial to refresh my memory.) But someone may want to think about fixing that.