(Created page with "Coming soon...")
 
(13 intermediate revisions by the same user not shown)
Line 1: Line 1:
Coming soon...
== Setup ==
The whole package is contained in the AutoLOD - Impostors folder resulting from the import. You can move it wherever you want, but it is recommended to keep the same folder structure.
 
== What is an impostor ==
An impostor or imposter is a billboard whose material displays a picture of a 3D object. Depending of the view angle, a different picture of the object will be displayed, to fake a 3D effect. Several pictures from several angles are baked into an atlas texture to access them quickly.
[[File:Screenshot1.png|frame|The AutoLOD Impostors editor window.]]
 
== How to use ==
 
=== Basics ===
<code>AutoLOD Impostors</code> consists in an editor window. You can open it via <code>Window->AutoLOD->Impostors</code>.
 
Drag & drop the object to be processed into the ”Target” field. Please note that a MeshFilter is required otherwise the object cannot be added.
 
Click on the  <code>Generate Impostor</code> button and wait a few seconds. Unity will temporarily open another scene and enter/quit play mode, just let it do it, don't try to stop the process.
 
When you get back in the scene, your object should now have a LODGroup attached, and the impostor should be instantiated as its children. Try to zoom out to see the LOD transition between the original object and its impostor.
 
=== Advanced ===
The provided scene <code>BakingScene-Default</code> is automatically loaded in the Baking Scene object field. Note that you can use your own scene, the only constraints are the presence of an object named "Target" and a main Camera with the script <code>ImpostorTexturesGenerator</code> attached. <blockquote>If you are using URP, you must also fill in the <code>UniversalRenderPipelineAsset</code> and the <code>UniversalRendererData</code> fields at the bottom of the camera impostor. </blockquote>The provided scene is the recommanded one for high-fidelity results, but you can modify the lighting settings or add objects in the scene to achieve some interesting result. It's up to your imagination!
* You can change the generated atlas size with the <code>Texture Size</code> popup. The estimated size below gives an idea of the full impostor (Albedo atlas + Normals atlas + Billboard) size on the disk after DXT1/DXT5 compression.
* The atlas is baked following a sphere vertices coordinates. Currently, two types of sphere are available.
*# '''UV sphere''': The default choice.  The UV sphere is based on a constant number of longitude and latitude samples.  The coverage is denser at the poles.<big><math display="block">N_{pics} = S_{Long}*S_{Lat}</math></big>
*#'''Pseudo-Fibonacci sphere''': at an experimental stage.  Provides a homogeneous coverage. Not compatible with latitude smoothing in the impostor shader. <big><math display="block">N_{pics} = \sum_{l=-S_{Lat}/2}^{S_{Lat}/2}cos(\frac{2\pi.l}{S_{Lat}}).S_{Long}
</math></big>
 
* The ''Optimization info'' panel is some read-only information to help understanding the coverage and the atlas layout.
* The ''LOD Group Settings'' panel contains the settings of the upcoming LODGroup. If you don't want to setup any LODGroup and just bake an impostor, you can uncheck the panel toggle.
* Impostors baked as prefab only. You have to enter a valid output path (''i.e.'' child from the ''Assets/'' folder). A preview text will display the full path of the upcoming impostor.
 
====Post baking improvements====
If you select the impostor object in the hierarchy, you will see that the shader has a few parameters to improve the fidelity.
 
* The Brightness slider can increase/decrease the albedo power.
* The Smoothness/Metallic/Occlusion sliders work the same way than the default diffuse material.
* The Cutout slider can increase/decrease the sharpness of the alpha clipping geometry.
 
* The Smooth toggle turns On/Off impostor bilinear interpolation smoothing.
 
[[File:Impostor2.gif|none|thumb|429x429px|From left to right: The original model, smooth enabled, smooth disabled.]]
 
* The Yaw/Elevation offset sliders is the way to virtually rotate the object.
 
== Contact ==
[mailto:chaumartinleo@gmail.com chaumartinleo@gmail.com]
 
== References ==
https://www.gamedeveloper.com/programming/dynamic-2d-imposters-a-simple-efficient-directx-9-implementation
 
https://calcifer.org/kenneth-christiansen/ComputerScience/imposters.pdf

Revision as of 09:39, 22 July 2022

Setup

The whole package is contained in the AutoLOD - Impostors folder resulting from the import. You can move it wherever you want, but it is recommended to keep the same folder structure.

What is an impostor

An impostor or imposter is a billboard whose material displays a picture of a 3D object. Depending of the view angle, a different picture of the object will be displayed, to fake a 3D effect. Several pictures from several angles are baked into an atlas texture to access them quickly.

The AutoLOD Impostors editor window.

How to use

Basics

AutoLOD Impostors consists in an editor window. You can open it via Window->AutoLOD->Impostors.

Drag & drop the object to be processed into the ”Target” field. Please note that a MeshFilter is required otherwise the object cannot be added.

Click on the Generate Impostor button and wait a few seconds. Unity will temporarily open another scene and enter/quit play mode, just let it do it, don't try to stop the process.

When you get back in the scene, your object should now have a LODGroup attached, and the impostor should be instantiated as its children. Try to zoom out to see the LOD transition between the original object and its impostor.

Advanced

The provided scene BakingScene-Default is automatically loaded in the Baking Scene object field. Note that you can use your own scene, the only constraints are the presence of an object named "Target" and a main Camera with the script ImpostorTexturesGenerator attached.

If you are using URP, you must also fill in the UniversalRenderPipelineAsset and the UniversalRendererData fields at the bottom of the camera impostor.

The provided scene is the recommanded one for high-fidelity results, but you can modify the lighting settings or add objects in the scene to achieve some interesting result. It's up to your imagination!

  • You can change the generated atlas size with the Texture Size popup. The estimated size below gives an idea of the full impostor (Albedo atlas + Normals atlas + Billboard) size on the disk after DXT1/DXT5 compression.
  • The atlas is baked following a sphere vertices coordinates. Currently, two types of sphere are available.
    1. UV sphere: The default choice. The UV sphere is based on a constant number of longitude and latitude samples. The coverage is denser at the poles.
    2. Pseudo-Fibonacci sphere: at an experimental stage. Provides a homogeneous coverage. Not compatible with latitude smoothing in the impostor shader.
  • The Optimization info panel is some read-only information to help understanding the coverage and the atlas layout.
  • The LOD Group Settings panel contains the settings of the upcoming LODGroup. If you don't want to setup any LODGroup and just bake an impostor, you can uncheck the panel toggle.
  • Impostors baked as prefab only. You have to enter a valid output path (i.e. child from the Assets/ folder). A preview text will display the full path of the upcoming impostor.

Post baking improvements

If you select the impostor object in the hierarchy, you will see that the shader has a few parameters to improve the fidelity.

  • The Brightness slider can increase/decrease the albedo power.
  • The Smoothness/Metallic/Occlusion sliders work the same way than the default diffuse material.
  • The Cutout slider can increase/decrease the sharpness of the alpha clipping geometry.
  • The Smooth toggle turns On/Off impostor bilinear interpolation smoothing.
From left to right: The original model, smooth enabled, smooth disabled.
  • The Yaw/Elevation offset sliders is the way to virtually rotate the object.

Contact

chaumartinleo@gmail.com

References

https://www.gamedeveloper.com/programming/dynamic-2d-imposters-a-simple-efficient-directx-9-implementation

https://calcifer.org/kenneth-christiansen/ComputerScience/imposters.pdf