Tutorial on the idiosyncrasies of the Instancing laboratory. Part 1 of 6
The “Bryce Instancing Lab” is certainly a powerful tool which multiplies the possibilities for the Bryce artist significantly, not only for eco-systems but also many other applications. However the “Bryce Instancing Lab” has many quirks which have upset and may continue to upset the artist for some time, particularly if the artist wants to work intuitively. These need to be properly explored and explained. Actually the Bryce “Instancing Lab” [IL] should be called the Bryce “Advanced Distribution Lab” [ADL] because not only is that its main function, but also because “instancing” is a new feature available as a global option and inherent in several different Bryce tools including also the ADL. I shall hereafter consistently refer to the IL as the ADL.
Before reading this, i advise a study of the recent tutorials on the ADL by Rashad Carter [if you have not already done so] [ http://www.daz3d.com/forums/discussion/3381/ ].
The ADL offers the possibility of “True Instancing” provided that the master object to be distributed/replicated is a “True Instance” or can be transformed into one. Bryce does not allow all objects to be transformed into or replicated as “True Instances”! This confuses many people [including myself] who expect consistency. But when i gave it some thought i realized that SOG objects [the 6 Bryce Primitives for instance] have no polygons and therefore they need no instances whereas polygonal objects benefit greatly from instances when they are replicated. This is because of the large number of point coordinates and polygons generated for each copy which would quickly exhaust the limited amount of memory Bryce is currently able to use.
My tutorial is divided into 6 sections. Sections 1 and 2 are intended to help all users to understand the basic bugs [flaws] and idiosyncrasies of the ADL. Sections 3 and 4 explore “True Instancing” including User-Created “True Instancing” and Sections 5 and 6 will suggest some cool things which can be done with the ADL. At least that is the plan.
So let’s begin. Pictures are at the bottom of this post and numbered in correct order.
[001] Create a template file you can reload repeatedly [Name it Template_01]. This should consist of a simple ground plane [no complex textures please] and a cube below the ground plane a bit under world centre. The cube is invisible in the first render. But the cube should be given a material which will help to reveal orientation [in conjunction with proper lighting] when copies generated from it are rendered above the ground plane. Name the Cube “Master”. Please see Picture_01.
[002] Select the Cube and check if it is an object for which Bryce can create instances. Do this by selecting from the main menu: “Edit > Replicate Instance”. Please see Picture_02. You will find that the cube cannot be instanced [the option is greyed out]. This is true for all of the 6 Bryce Primitives. You already know the reason why this is so? The Bryce Primitives are not polygonal objects but instances of mathematical equations within the inner world of Bryce which are then subject to a Linear Transformation Matrix for each actual object you have placed in your scene.
[003] Select the ground plane and click on the “I” button [lowest button of the Ground Plane attributes stack]. Please see Picture_03. We are going to distribute Cubes on the ground plane. The ground plane will become the Parent and the Cubes will become the Children who will all end up linked to the Parent, however these Children will take on the material from the “master” cube and not from the Parent.
[004] The ADL opens up. Deselect the little green instancing button [because you know the Bryce Cube cannot be instanced]. Next click on the “Brush editor” text [in black], which appears at the top of the Lab next to the word: “Painter”. Please see Picture_04.
[005] In the Brush Editor, under “Brush Parameters”-“Source”, select: “Master”. The default is “ combo test“ which is meaningless except for the programmers who are still developing this part of Bryce. Well this is almost like working in Lightwave3D as it was over a decade ago! But never mind, this is a powerful laboratory which will allow you to do magical things.
[006] Set all the parameters as shown in Picture_05. I have deliberately eliminated any random scaling because random rotation seems to be the issue most people have. Make sure to set the “proportion” to 100 [this can be done by clicking on the big disk to the left]. Please also read Rashad Carter’s excellent tutorial.
[007] Beware of clicking the little checkmark below the bottom left “Preview” window. It is intuitive to do so [because when you get back to the Painter Room of the lab it is what you MUST DO to get out and see your changes], but don’t do it now! Click instead on “Painter” at the top. Doing so will return you to the Painter Room, were you can actually create the replicated objects in various pattern groups.
[008] In the ADL Painter Room, please set the parameters as shown. Please see Picture_06. For testing purposes we don’t want a lot of replication and we don’t want a randomized distribution. We want a distribution, which clearly indicates if random rotation is taking place or not. Notice that for "Brush parameters" "Master" is NO LONGER displayed. Instead it states "mixed brush".
[009] Click your brush once in the big window on the right. At this stage we are not into artistic painting but only testing. For advice about artistic painting please refer to the tutorials provided by Rashad Carter. Please see Picture_07.
[010] Now, the scene appears. We render and we see that the cubes have been randomly rotated. Please see Picture_08. That is what we wanted.
[011] Being creatively inspired we want to change the distribution of the cubes, so we delete what we have done by selecting all the replicated cubes [they are a single group constituted of components with the same name] and then delete them. Please see Picture_09. We then select the ground plane again and click on the “I” button as before in order to enter the ADL.
[012] But in our creative zeal we forget something. We forget to enter the Brush Room. Because the Painter Room remembers all our parameters [including the object – “master” - to be replicated] we think that the Brush Room also remembers. That is intuitive, but Bryce does not currently work like that. We perform an edit in the Painter Room to try a different distribution. We exit as before and the render shows that we have indeed got a different pattern, but the cubes are no longer randomly rotated! Please see Picture_10. We go back to the ADL and check also in the Brush Room if the rotation is still set at 0 to 360 and find that it is. Please see Picture_11. That is frustrating!
[013] The lesson learned is this: It is imperative that for every edit of a distribution, when we enter the ADL we must first enter the Brush Editor Room and select the “Source” again [the parameters for random scale and random rotation are remembered and we don’t have to set those again unless we want to change them!]. It took me a long time to figure that out because i assumed that Bryce stored the “Source” parameters like it does all others in the ADL. And no one has ever mentioned this idiosyncrasy. If we don’t do this, then the object to be replicated and distributed no longer rotates or scales randomly - even though you can edit that distribution repeatedly as much as you like.
So the cardinal rule for EVERY ADL edit is: Always enter the Brush Editor first and select the “Source” [or multiple sources], and only then worry about the distribution in the Painter Room!
Now we move on to a more serious problem and its solution.
[014] I want some rectangular slabs to be rotated randomly. They are made of cube primitives and only involve Linear Transformations [squash and stretch]. Please see Picture_12 which shows the master slab.
[015] After using the ADL in the proper manner [as instructed above], you can see the result. It is very unusual as shown by Picture_13 and Picture_14. Apparently even though the master is only a deformed cube, the ADL can’t handle it. The multiplicated objects seem to skewed along the Object Space Y-axis and don't actually rotate as a whole. More about that in Part two, because it also seriously effects mesh models [the bug is not limited to Bryce primitives]
[016] Now again the same test is applied to a Skewed Pyramid primitive. Please see Picture_15. Again the ADL can’t handle it. The Skewed Pyramid was especially chosen because it will indicate any rotation [or the lack of it] most vividly [because of the direction in which the apex points]. Fact is, the ADL can NOT randomly rotate any Bryce primitive which has a Linear Transformation applied to it! Is that a bug? Well that does not worry me so much, but i have not noticed anyone mentioning it before! I had to find it out for myself.
[017] What is the workaround? Easy! Simply convert to OBJ and import OBJ. Then you can also have True Instancing. But the beginner may ask: "How is that done?".
Well, here is one possibility:
[018] Make a Skewed Pyramid – it does not matter what the proportions are, so long as the apex points strongly in one direction. Then make the base level with the ground plane – that procedure does not have to be perfect. We are not doing Bryce-Origami but just demonstrating some facts. So i assume you now have made your test object which will look something like Picture_16.
[019] Duplicate the object and make the duplicate slightly larger. Set the outer copy to “intersect” attribute and the inner object to “positive” attribute. Group and then click the little “C” button of the attributes stack. Please see Picture_17. Export as OBJ. Delete the mess Bryce has made and import the OBJ you have just created. You notice it is a nice clean mesh composed of 6 triangular polygons. You can now put a material on it and if you like store it in your User Object Library for future use. You can do this with all Bryce primitives you may create in your lifetime, resulting in perhaps millions of new primitives and complex models, which are all Mesh Objects [same as any other imported model].
[020] Select your Mesh Object and check if it is an object for which Bryce can create instances. Please see Picture_18. Wow! We find that the transformed object CAN be instanced [the option is NOT greyed out]. That also means it is a single mesh and not a group. More about that in Part 2.
[021] Now we go back into the ADL [using our simple ground plane] and making sure that the instancing button is on [It is on by default unless you have turned it off within a session] and following the procedure which Rashad gas given in detail, you will find, that now you have instances as well as random rotation. The instanced objects are shown as dotted-line wireframes . Please see Picture_19. However we should not celebrate because saving and reloading such files is another matter. You should follow the advice that Rashad has given about that in his tutorials. I will go more deeply into it later.
[022] Also please have a look at Picture_20. Something is not right! Ee? Rashad has stated that Booleans are unstable [ but i have not found that to be so in BR7.1 ]. But “True Instancing” in the ADL is at present VERY unstable . It will improve in the future to be sure. Perhaps it is best not to use “True Instancing” in the ADL at present unless there is some good reason to do so. I will research and try to find good reasons and report on those if i find them.
I suspect that DAZ is doing with Bryce what NewTek did with Lightwave3D - incrementally engineering it up for future commercial purposes. So Bryce will be unstable in the intermediate versions until the changeover is complete. I think the final objective is to make Bryce able to import and use very many and/or very large polygon models and to allow artists to work on mega-scenes. That suits the business policy of selling content based on ever more elaborate mesh models. Since it can’t be done all at once, we are going to see intermediate versions were everything does not work properly, not because of bugs, but because of stubs. Non-functional ends which will be completed later. Based on my experience in software engineering and comparing DAZ with what NewTek has done with Lightwave3D, it seems to me a sensible commercial direction to take, so long as they don’t trash the native solid modelling capabilities inherent in Bryce.
In the next sections of this tutorial i will delve deeper into the strange world of instancing, distribution and look into some more serious issues and how to overcome them.
Kind regards
Peter
Comments
Great Peter!!!
Yes, the Instance Lab does not remember the previous settings used the last time the user painted. The parameters must be edited each time to user enters the Lab, yup! Image 13 describes a problem I had never observed before but indeed I find it to be true. A Cube will be be skewed by the IL, this is NOT GOOD. As wonderful as primitives are, they do seem to be problematic compared to mesh objects in some important ways.
Anyhow, nice work and I look forward to the next phase of the tutorial.
I'm glad i found this, seems i put my chair in the wrong thread :).
I'll be following this with great intrest, as a newb in bryce you can't have enough tutorials.
So thank you for doing this.
Grtz Jean-Claude
This is going to be one really interesting tutorial, you've got me hooked.
Awesome stuff Peter.
Cheers
GG
Another very helpful tut that would be suitable for the Bryce 3D Expo magazine - http://www.daz3d.com/forums/discussion/3227/
I - let play - best way to learn is to use it
Thanks Peter, looks good, I just wish DAZ would stop buggering about and fix inline images in the forums.