Instancing Lab Tutorial Completed: Part 1 of 6
Instancing Lab Tutorial Completed: Part 1 of 6
Here is the completed "Instancing Lab" Tutorial which i posted some months ago in installments - a separate thread for each part. These were titled: "Tutorial on the idiosyncrasies of the Instancing laboratory".
I never completed the project in that form. I think i got as far as Part 4A ? The more i worked on it the more i discovered about the subject and also realized that all the parts should be posted in one thread. So what you have here is my previous work plus the final parts [not posted before].
I managed to complete this work for Christmas 2012 and now post it in one thread. In the process i took the opportunity to edit it to correct/improve some things and remove some material which was not to the point. I have not changed the style of my writing [which some may still find not so good]. I have also preserved the process of discovering things which i underwent as i worked on this project.
I hope you will find this work useful. It is my Christmas present to the Bryce Community if you like.
I would appreciate it if no one responds until i get all parts and images uploaded. There will be a lot of work for me to do to get it all up and in good condition for this forum. There are more then 200 images and i may need to edit this big post for a day or so to eliminate mistakes add capitalization and other refinements.
The Bryce "Instancing Lab” is certainly a powerful tool which multiplies the creative possibilities and workflow 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 Replication and Distribution Lab [ARDL] 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 the ARDL. I shall hereafter in this tutorial consistently refer to the Instancing Lab as the ARDL.
Before reading this, i advise a study the tutorials on the ARDL by Rashad Carter [if you have not already done so] [ http://www.daz3d.com/forums/discussion/3381/ ].
The ADL offers the possibility of so-called “True Instancing” provided that the master object to be distributed/replicated IS a “True Instance” in the first place, 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 in the early stages some months ago]. We expect consistency but even though a program may be technically consistent, inconsistency in naming different aspects of it causes confusion.
But when i gave it some thought i realized that SOG objects [the 6 Bryce Primitives] have no polygons and therefore 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 ARDL. Sections 3 and 4 explore “True Instancing” more deeply and Sections 5 and 6 will suggest some not so obvious cool things which can be done with the ARDL.
So let’s begin. Pictures are at the bottom of this post [ and all others] and i hope numbered in correct order.
 Create a template file you can reload repeatedly [Name it Template_01]. This should consist of a simple ground plane and a cube below the ground plane a bit under world center. 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 replicates are generated from it are rendered above the ground plane. Name the Cube “Master”. Please see Picture_01.
 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.
 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.
 The ARDL 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.
 In the Brush Editor, under “Brush Parameters”-“Source”, select: “Master”. The default is “combo test“.
 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 on this.
 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.
 In the ARDL 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".
 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 excellent tutorials provided by Rashad Carter. Please see Picture_07.
 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.
 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 [probably "Group 1"] constituted of many nameless components. Then delete that group. Please see Picture_09. We then select the ground plane again and click on the “I” button as before in order to enter the ARDL.
 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 ARDL 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!
 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 the Brush parameters 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 ARDL 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.
 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.
 After using the ARDL 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 ARDL can’t handle it. The multiplicated objects seem to skewed or twisted. They don't actually rotate as a whole.
 Now again the same test is applied to a Skewed Pyramid primitive. Please see Picture_15. Again the ARDL has trouble with 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 ARDL 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 too much, but i have not noticed anyone mentioning it before!
 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:
 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.
 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 to a folder were you can find it again. 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 NEW 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].
 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.
 Now we go back into the ARDL [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.
 Also please have a look at Picture_20. Something is not right! Ee? “True Instancing” in the ADL is at present unstable . It will improve in the future to be sure.
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.