Your comments

I'm gonna load up 2017 and copy over all the scripts and shaders from the 2018 version and see if it works. If it does, I'll put the scripts and shaders into a zip and send it to you. But don't get your hopes too high, I donno yet if it'll run on 2017. ;p

It's possible that some or all of my 2018.1 version would actually run on 2017.1. I mean, I could send it to you and you could try it to see if it works. But first, you probably should at least get it working correctly on the 2017.1 version. :)

Maybe in the manager, select the "billboards only" option, and see what happens. That should switch it to the billboard. It won't transition, it's supposed to stay in billboard mode while you have that option selected.

Is my tree changing to billboard though, while it is right next to yours?

Yea I think I added a slider to control how much ambient occlusion... but that's only in 2018.1.

You can install 2018.1 into a separate folder from your 2017.1 installation, to have both copies of unity on your computer at the same time. They don't interfere with each other. I have copies of unity installed for versions all the way back to 5.0 I think. 


Then copy your entire project folder, and add "2018.1" to the end of the folder name, for the new copy. That way you won't mess anything up if you need to switch back to 2017. Then load that new copy into 2018.1 of unity and see if it's as bad as you feared, lol. Just be sure that on the 2018.1 copy, you'll need to download the LushLOD trees asset again, because then it'll give you the 2018.1 version, which hopefully will give you all the additional shadow options you were wishing you had.

Did you try creating a new scene, and putting the tree into that scene, and then select the tree and follow all the setup steps (to create the manager and everything)? Maybe try also putting one of my trees into the scene next to yours, and see if mine is transitioning, while yours isn't?

I didn't know unity billboards couldn't be resized. Strange that this has't been reported before. The solution would be that instead of resizing the trees to be smaller to fit the camera, the camera should be resized bigger to fit the trees. I'm gonna try off the top of my head to write the code you'd need. This is the code between lines 712 and 730. Replace that code with this and see if it works correctly. This is untested code, I wrote this off the top of my head... hopefully I didn't make a mistake...

// Transform Render Obj to occupy in Unit Cube
//renderParent.transform.localScale = new Vector3((1f / bounds.size.x),(1f / bounds.size.y),(1f / bounds.size.z)); //<-- this is what used to shrink the tree, so this line is now commented out.

// Recalculate Cube Bounds
Bounds cubeBounds = GetBounds(renderParent);

// Init Camera
BillboardCamera.transform.position = cubeBounds.center; //<-- camera is put into the center of the box that the tree is in.
BillboardCamera.transform.rotation = Quaternion.LookRotation(Vector3.left, Vector3.up);
BillboardCamera.transform.localScale = Vector3.one; //<-- I'm not sure if this actually does anything. I don't think this affects the size of the picture though. Might be okay to comment out this line.
BillboardCamera.orthographic = true;

float LargestBoundsSide = Mathf.Max(Mathf.Max(bounds.size.x, bounds.size.y), bounds.size.z); //<-- this should get the size of the bounds that is the largest... either x, or y, or z, whichever of those three is biggest.

BillboardCamera.orthographicSize = LargestBoundsSide / 2f; //<-- pretty sure the camera size needs to be half the size of whatever it is taking a picture of... this is an off-the-top-of-my-head guess, I didn't test this.
BillboardCamera.nearClipPlane = -LargestBoundsSide; //<-- the camera is in the center of the tree, so we have to allow the camera to see "backwards", which is why the negative sign on this one.
BillboardCamera.farClipPlane = LargestBoundsSide; //<-- how far the camera can see forward.
BillboardCamera.rect = new Rect(0f, 0f, (float)BillboardTextureSize / Screen.width, (float)BillboardTextureSize / Screen.height); //<-- I didn't change this.. I think this simply ensures that the picture being taken will be square. It's possible this also might control the size in pixels of the resulting screenshot image, not sure.
BillboardCamera.enabled = true;
Selection.activeGameObject = BillboardCamera.gameObject;

I guess it could be bounding up the tree correctly... the other possibility is that it is failing to size the camera correctly... it looks like it does set the camera's settings as well, between lines 721 and 730... so there's a small chance the issue could be there but I'd rather believe it is the tree than that it is the camera, since those camera settings have been working for everyone else.

One way to tell though if it is the camera is to load up the original converter scene that has my trees in it, and run the scene on my trees and see if it works without errors. If you think you changed the scene in any way, you might need to reimport the whole LushLOD project, a clean import, just to ensure there isn't anything you might have changed. If it converts my trees just fine but doesn't convert yours, then at least we'd know it's something about your specific tree that is confusing it.

The reason it creates a bounding box for the tree is so that it can shrink the tree down to a size of 1,1,1.. so that it'll perfectly fit into the camera, since the camera is set to screenshot at a size of 1,1,1... which has no benefits... I mean I could have simply increased the size of the camera instead, but that would have failed just the same if it isn't correctly getting the bounds of the tree. This is definitely an issue I've never seen before, which really makes me wonder if there is anything about your tree that isn't normal for a typical Unity Tree Creator tree...

It duplicates the tree at line 684, and puts it into the lod0 variable.

Then it makes lod0 to be the child of a game object named renderParent... that happens on line 693.

Then it gets the bounds of the parent, which basically will be the size of a box around the tree, which happens on line 710.

Then it shinks the tree down to basically a scale of 1,1,1... so the tree is very tiny... which happens on line 713.

The GetBounds() function's source code is there, in case you want to step through it to see if it looks like it is correctly adding up all the boundaries of the tree. The goal of the function is to find out exactly how big the tree is, like what is the smallest box that the tree would perfectly fit into.

Obviously the function is returning a bounds size that is too smal and the tree is much bigger. Only thing I can think of that would cause that is if there is something weird about your tree... i mean... the bounds function is a built-in unity function so it's not supposed to fail to get a perfect bounds... but looking at the source for GetBounds I see that it has to loop through each part of the tree and add together all the bounds, so maybe your tree somehow is different than what it is expecting, so it isn't adding together everything and some parts of your tree aren't be included in the bounds it is adding up?