UltraScenery Experiments and Experiences
barbult
Posts: 24,260
I decided to create a thread to house my UltraScenery experiments so I don't monopolize the commercial thread.. This is analogous to my thread on UltraScatterPro.
Lessons Learned/Tips:
- Before I ever use instances in an Iray scene, the FIRST thing I do is change Render Settings Instancing Optimization to Memory. You find this setting on the Editor tab in the Render Settings pane. This is documented in the UltraScenery manual and is very important. If you set it to Speed and create a lot of instances, Daz Studio will either become unresponsive or crash. Recent versions of Daz Sudio have an Auto setting. I don't know whether it is good enough to leave it on Auto or not. I've preferred to be safe and explicitly change it to Memory.
- TIP (Thank you, memcneil70, for this important reminder!) Don't use Iray Preview when working with UltraScenery, unless you have a super powerful configuration like a Titan RTX (or these days, RTX 3090). Iray preview doesn't seem to respect the Instancing Optimization setting of Memory, Using Iray Preview with the huge number of instances in UltraScenery will be incredibly slow and will most likely crash Daz Studio. Use Texture Shaded viewport preview instead. The downside is that you can't preview what the lighting and instances will look like in your render. Instead of Iray Preview, try the Spot Render tool or try rendering a normal Photoreal render, but in a very small size, for a quick preview of what you final large render will look like.
I don't have an RTX 3090 to even attempt Iray Preview, so for me there are two better ways to help place characters or objects in UltraScenery without trees interfering:- UltraScenery Toolbox - Volume One - use masks to keep an area clear of any chosen vegetation when the scene is built
- UltraScenery Tooblox - Volume II - use the Instance Group Locator to find the interfering instances and remove them from the scene
- The ONLY script you need to run for UltraScenery is UltraSceneCreator.dse. You can find it in your content library in Environments/Landscapes/UltraScenery. All the other scripts in the product are resources used internally by the UltraSceneCreator script. Leave them alone.
- UltraScenery comes with an Iray Render Setting Preset that is a very quick and easy way to get good lighting to render your scene. You can find it in your content library in Environments/Landscapes/UltraScenery/Render presets. It is called USC Late Morning.duf.
- TIP (Provided by Artini) If you are just starting out and are not sure how your computer will handle UltraScenery, or you jumped right in and it seems incredibly slow, try this suggestion. In the Build tab, uncheck all the small items, like pebbles, grass, daisies, litter, etc. Maybe go as far as unchecking everything except the trees. See how your computer handles that scene, and then expand from there on the next build.
- When defining the terrain for an UltraScene, the (optional) Height Map is combined with the Noise terrain settings. If you don't want the Noise setting to affect your Height Map, set the Noise brightness control to the minimum value (-100) and leave contrast at 0, so the noise preview is black.
- TIP (Provided by TangoAlpha for using Notepad++ to edit JSON files) To make it easier to find your way around, type Alt-0 (zero). This will collapse everything to a single red box with a + in it. Click on the + box to start peeling back the layers. First click, you'll see the header. Then you can open up the actual layers and delve into them. Only open up the layers as you need them, and the file stays manageable, and (hopefully) you won't get lost.
- Lesson Learned: Props that have other props as children will not work in an UltraScenery Ecology file. Here is a way to modify them to make them work.
- Lesson learned: When you rename a layer in an ecology JSON file, you need to find and rename all other references to that layer.
- Lesson Learned: "alignnormal" : true can help make short things hug the ground, but it is not good for tall things that should be growing straight up, unless they are on fairly flat ground.
- Lesson Learned: Big wide props are never going to sit properly on top of curved ground. They are not the best choice for use in UltraSceneCreator.
- TIP The camera headlamp can help make the UltraScenery terrain more visible in the Texture Shaded viewport preview. I listed my preferred headlamp settings here.
memory Optimization.png
513 x 334 - 40K
Post edited by barbult on
Comments
Index
Experiment: High Contrast Terrain
Experiment: Create a "new" Ecology with other props I own
Experiment: Change the name of an ecology I built
Experiment: Modify complex props with parent/child hierarchy so they can be used in UltraSceneCreator
Experiment: Change origin of a prop to control its height on the UltraScenery terrain
Experiment: Use Negative Altitude to Create Interesting Terrains
Experiment: Modify Iray Surface Settings to Get More Color Variety in an UltraScene
Experiment: Create a Cobblestone Material for the UltraScenery Dirt Track Features
Experiment: Create a Flower Garden (Inspired by Keukenhof)
Experiment: Modify Feature Dirt Track 2 to Follow the Terrain
Experiment: Create a New UltraScenery Feature (Paved Road)
Experiment: Create a New UltraScenery Feature with Added Props (Railroad Track)
Experiment: Use Iray Decals to Add Details to UltraScenery Terrain
Some Thoughts on UltraScenery Affinity and Repel
Some Thoughts on UltraScenery JSON Files
Great, will be watching with interest.
I am using Daz Studio 4.12.2.6 Public Beta and UltraScenery 1.0.2
Experiment: High Contrast Terrain
Today I stumbled upon a surprise. When the terrain has high contrast areas, UltraScenery did not place any instances in that area. It left bare terrain spots.
The question is: Why are these areas left bare? Is if by design, or is it a bug? UPDATE: HowieFarkes has confirmed this as a script bug in version 1.0.2 and he will fix it in a future update. UPDATE: This has been corrected in UltraScenery 1.1.0.
Let's see what is going on:
1) Use high contrast Noise Terrain settings (no Height Map used)
2) Push contrast Noise Terrain settings to the max (no Height Map used)
I am using Daz Studio 4.12.2.6 Public Beta and UltraScenery 1.0.2
Experiment: High Contrast Terrain (Continued)
3) Use high contrast Height Map file
Repeat steps 9-13 but load the Indexed Color height map instead of the grayscale map. Observe that the results look similar to the grayscale height map results.
Experiment: Create a "new" Ecology with other props I own
First some caveats and disclaimers:
EDIT: Yup, I ran in to a problem. U-Turn ahead! The theory and steps are sound, but Willow Creek was a poor choice because of the complexity of the props. The props I chose are problematic. This is corrected in step 6).
1) Pick out some plant props that you want to use with UltraScenery. Let's use plants from Willow Creek, because it recently became free, so anybody reading this can follow along. It has some trees and some tree stumps. Looking at the trees and stumps, I can see that these might present a challenge, because their wide bases may not fill well on sloped terrain. We'll see what happens and what we can do about that.
2) Make a copy of an existing ecology folder, so the original is not destroyed. We will modify the copy to make our version. I'm going to copy \Environments\Landscapes\UltraScenery\Ecologies\USC Woodland 02 and name it "USC Willow 01 BV". BV are my initials; use your own. I like to add my initials to the ecology name, because I can easily see which are ones I modified, and the name I choose won't conflict with other ecologies that might be released in the store. I chose a woodland ecology to modify, because it has trees, and the props I chose to use are trees. It seems like a logical choice.
3) Open the ecology folder copy you created (USC Willow 01 BV). Change the name of all the files with the ecology name in them to use the new ecology name instead. For example, change USC Woodland 02 MAT.duf to USC Willow 01 BV MAT.duf. The only file in the folder that should not be renamed is info.json. TIP: Use a file naming utility to make the renaming easier and faster and more accurate. I use Bulk Rename Utility.
4) Edit the files to change the ecology name inside of them:
Continued below
Here's a little tip, particularly for people that may be new to or unfamiliar with Notepad++.
Once you've opened the JSON file, you'll be presented with a mass of . . . well, 2000+ lines of . . . stuff. To make it easier to find your way around, type Alt-0 (zero). This will collapse everything to a single red box with a + in it. Click on the + box to start peeling back the layers. First click, you'll see the header. Then you can open up the actual layers and delve into them. Only open up the layers as you need them, and the file stays manageable, and (hopefully) you won't get lost.
Here's one I did earlier:
(I used one of my ecologies cos, well, I gave myself permission!)
Now, back to the experimenting :)
Experiment: Create a "new" Ecology with other props I own (Continuation 1)
5) Change the props used in the ecology
Continued below
Thanks for the Notepad++ tip!
I see you already created a Willows 01 environment and you also use your initials in it. I promise I did not steal your idea! I haven't purchased those products yet. Good minds think alike, etc.
Well, I bet your Willows works a lot better than my experiment. Willow Creek was a bad choice for this experiment, as you can see above. I have successful created several ecologies for myself since UltraScenery first came out. This is the first time I stumbled upon a prop that didn't work. Wouldn't you know, it was while I was trying to document the steps to help other experimenters. Public embarrassment goes with the territory in these experimental threads. Others can learn from my mistakes.
Experiment: Create a "new" Ecology with other props I own (Continuation 2 - The U-Turn)
6) Change the props used in the ecology to props that WORK with UltraScenery!
Continue with steps 5) 3. to build the corrected ecology. That works as expected! We get a scattering of dead trees and tree stumps. (Remember, at this stage we have only the Willows layer checked in the Build tab of UltraScenery.) Also as anticipated, the tree stumps are not sitting nicely on the sloped ground.
Continued Below
Well that was certainly "an experience"!
Kudos to you for attempting to document all this. I'll be reading with interest...
Yes it was! Wouldn't you know I'd pick something troublesome right off the bat. I'm sorry it made a mess out of something the should have been more straightforward. People can see that not all experiments are successful. Then when they fail, they know they are not alone and should keep trying. I hadn't planned on that being the lesson, but I guess it is.
Experiment: Create a "new" Ecology with other props I own (Continuation 3 - Fixing More Errors)
6) Test the full Ecology
2020-05-19 20:10:05.641 WARNING: TypeError: Result of expression 'oLayer' [null] is not an object.
In retrospect, after learning that I cannot use the nice willow trees in Willow Creek with UltraSceneCreator and learning that TangoAlpha already has a Willows 01 ecology, I regret my ecology name choice. I could go back and rename everything again to something else, and that might be a good exercise for later. We have bigger fish to fry, as they say. What's in a name?
Continued below
Experiment: Create a "new" Ecology with other props I own (Continuation 4 - Optimizing Instance Placement)
This section will investigate the alignnormal setting of a layer.
Because we changed the props that were used, some of the instance placement parameters in the ecology JSON file may not be optimum for our props. Let's take a critical look at our scene. I see these things I would like to improve"
7) Make things sit flatter on the ground.
Continued below
I am currently working step by step through your tutorial and going to post my image (coming soon). Have you successfully added a prop to a ecology instead of replacing an existing prop? I have for the most part had success replacing props but have had issues just adding additional props in. In part because its been a really really long time since I coded anything and I don't remember alot of that either LOL.
@Daventaki welcome to the thread!
I have successfully added a whole new layer by copying an existing layer and renaming it and then changing the props it contains. I don't remember whether I have added additional props to an existing layer, though. It seems like that should work, unless there is something hard coded to look at only a certain number of props in a set. It sounds like a good idea for a separate small experiment.
If you are stumbling over the JSON syntax, the JSON validator is your best bet to be sure you aren't missing a comma or brace or something.
I'll have to play more and see what I can figure out to add additional props, I had just started playing with that aspect then became sidetracked with other things. I would welcome another experiment!
I did used the validator and it would give me a green light but I think it had something to do with reading the file. I can't remember for sure but im definitely going to get back into it. Going to use TangoAlpha's trick of collapsing the sections see if that helps too.
Ok this has the Maple tree, Cherry tree and Laurels from World Gardens- Japan. I did not realize at the time the maple's were nearly the same height.
I am using Daz Studio 4.12.2.6 Public Beta and a pre-release version of UltraScenery 1.1.0
Experiment: Create a "new" Ecology with other props I own (Continuation 5 - Optimizing Instance Placement - Part 2)
This section will investigate copying a layer to make a new layer and removing some props from a layer.
Since the trees need to stand vertically (not aligned with the ground normal) and the stumps look better when they are aligned to the ground normal, I am going to split them into two separate layers, so they can have separate "alignnormal" values in the JSON file.
8) Make things sit flatter on the ground by splitting the trees and stumps into separate layers so they can have separate settings.
{
"path": "/Props/Stonemason/Willow Creek/Iray/Willow Creek Tree Stump01 Iray.duf",
"proxy": "/environments/landscapes/ultrascenery/plants/USC Tree 02 Proxy.duf",
"materials": []
},
{
"path": "/Props/Stonemason/Willow Creek/Iray/Willow Creek Tree Stump02 Iray.duf",
"proxy": "/environments/landscapes/ultrascenery/plants/USC Tree 03 Proxy.duf",
"materials": []
}]
"path": "/Props/Stonemason/Willow Creek/Iray/Willow Creek Tree03 Iray.duf",
"proxy": "/environments/landscapes/ultrascenery/plants/USC Tree 01 Proxy.duf",
"materials": []
}]
Continued below
Experiment: Create a "new" Ecology with other props I own (Continuation 6 - Optimizing Instance Placement - Part 3)
We need to adjust the spacing and quantity of trees and stumps, because there are just too many and they are too close together. This section will investigate spacing, seed, affinity, and repel settings for layers.
9) Adjust the spacing of the trees and stumps
Top down view
Continued below
Experiment: Create a "new" Ecology with other props I own (Continuation 7 - Varying Instance Size)
The trees don't vary in size much. I would like more variety of sizes. This section will investigate the scale setting.
10) Adjust the scale of the trees to add more variety of sizes
Continued Below
Experiment: Create a "new" Ecology with other props I own (Continuation 8 - Dealing with floating props)
I chose tree props with wide bases, and I've learned that those just don't work well with UltraSceneCreator. This section will investigate the slope setting and other ways to work around the floating prop problem.
11) Prevent the trees from being placed on steep terrain
12) Move the floating props down so the bases are below ground
After you have built your UltraScene, it you still have floating prop bases try these steps.
Continued below
Experiment: Create a "new" Ecology with other props I own (Continuation 9 - Creating Ecology Thumbnail and Preview)
Up to this point, our new ecology has reused the thumbnail and preview images of the ecology we copied in the beginning. Lets create some more representative image to replace those.
13) Create the Thumbnail image and Preview image for the new ecology
Continued below
Experiment: Create a "new" Ecology with other props I own (Continuation 10 - Creating Representative Proxies)
Up to this point, we've been using the tree proxies that were part of the ecology we copied. They aren't very representative of the props we are using, especially the stumps! It has made visualizing the scene before render difficult. I should have made proxies early on. But better late than never. They will be useful in the future when the new ecology is used. Proxies are generally displayed only for large trees, as far as I can tell. I chose to also make proxies for the stumps.
14) Create simple low-poly props to represent the size and shape of the props added to the ecology; these will be our proxies
15) Edit the ecology JSON file to use the new proxies
16) Build an UltraScene with the new ecology and verify that the new proxies are displayed.
I was bored with the pond, so I tried the new ecology with Dirt Track 1.
A rendered view
We are done! We have created an ecology that we can use with UltraSceneCreator. But it can be improved. See below.
This was quite an effort. Now you can appreciate the value you receive when you buy a whole pack of ecologies from the Daz Store PAs for a few dollars!
Been reading this experiment with interest, Barbult. Most impressed with what you've been able to do & the clarity of what you've written. I shall have to experiment when I get the chance, unfortunately it's much less often than I want as I rarely get the chance to play with DS for more than a couple of hours a week.
I do a certain amount of programming in C++ (never once tried scripting in DS) and my initial thought on seeing the base pad problem was to tackle it this way:
Go through the vertices on the tree model & find out the maximum base radius from below nominal ground to possibly as high as 10cm above the nominal ground level. Call this radius 'r'. Then, when placing the instances, lower the Y position dependant on the slope angle at the instanced tree position so the nominal zero is lowered from the local ground level by the amount: r*sin(slope). That should be OK as the slope should remain sufficiently constant within the radius of a tree base pad. It'll be fine if the slope gets shallower away from the centre of the tree because the pad will just be a little deeper than it needs, and if the slope gets steeper, other vegetation at the base will probably largely cover any small amount of ground pokethrough by the pad. Having one value for the radius probably means the tree will sit a bit deep with some rotations relative to the slope, but it's probably not worth the extra computation to find the significant base radius for each instance dependant on local slope and instance specific rotation.
I have to admit I haven't the faintest idea whether any of this is possible in the DS scripting language, but it almost certainly will be, and what I suggested above might be an approach to consider.
Regards,
Richard.
Hi Barb - love all the work you're doing on this. Just a note on the "spacing" value. How spacing works in UltraScenery is very different to how it works in UltraScatter.
UltraScatter actually scatters points around then tests whether each one is within the set distance from any other points and culls it if it is. This gives a very nice random distribution but takes a very long time to compute (as you'll find out if you do a 20,000 instance scatter with a distance set). UltraScenery on the otherhand takes a more pragmatic approach by laying out the points in a hexagonal grid with each point set at the "spacing" distance away from each other. Then some randomization is added to remove the orderliness of it all (that's the "random" value usually set just under the "spacing" property). This results in a much faster and "good enough" distribution for the vegetation in UltraScenery.
I quickly knocked up this diagram when explaining it to TangoAlpha during the development of his ecologies.
Thank you, that's really helpful to understand "spacing". I'll reference this post where I discussed it above. Please drop in and offer tips and corrections when you have a chance!
Great work barbult! Helpful to have your tutorials to learn from. I have the product and the new expansion but have only given the original one try so far.
Ahh. So the JSON file is not the bit determining the height offset. Not possible then. What a shame.
Experiment: Change the name of an ecology I built
It is pretty clear to see that there aren't any willows in the ecology that I built and named "USC Willow 01 BV". I want to rename it "USC Dead Trees 01 BV". This should be very similar to creating a new ecology from another one. Let's see if this is as easy as it seems like it should be. In fact, just to be safe and not accidently destroy my new ecology, I think I will follow exactly that process by making a copy and working on that. The description of these steps will be briefer, since we just went through all this in the previous experiment.
Experiment: Modify complex props with parent/child hierarchy so they can be used in UltraSceneCreator
In suddenly hit me a couple days ago, that there is a way to modify those complex props, like the Stonemason Willow Creek willow trees with parent/child hierarchy, to work with UltraSceneCreator. It amounts to exporting the whole tree hierarchy as an OBJ and importing it back in to Daz Studio. I'll flesh out the details when I actually do it. I'm pretty sure that should work. We'll see...
I performed this process on both Willow Creek Tree01 Iray and Willow Creek Tree02 Iray.
That now creates a prop that you can use with UltraScenery in an ecology that you create. But, it can be improved.
This is a scene I created with my USC Willow 01 BV ecology.