-
Task
-
Resolution: Unresolved
-
Not Evaluated
-
None
-
None
-
None
The automatic Level of Detail (LoD) system is a valuable tool that helps avoid the laborious manual creation of LoD models by designers. However, when using Instancing, this automation becomes uncontrollable, forcing developers to spend time on manual work.
The Existing Problem (and why it is expensive)
- High Cost of Manual LoD: Manually creating several LoD levels for every model is a very expensive and time-consuming process for game developers.
- Lack of Control for Instances: The automatic LoD system works, but it is completely hidden "under the hood." For instances, the only existing control mechanism is based on distance ranges: instancingLodMax and instancingLodMin in instance tables.
- Absence of Direct Selection: If a model has automatically generated LoD levels, there is currently no way to explicitly specify which of these automatic meshes should be displayed for a particular instance.
Key Point: The inability to directly select the LoD mesh forces designers either to manually create meshes to ensure the necessary level of detail for specific groups of instances.
The Proposed Solution
We propose adding a simple property to the Model object for the manual specification of the LoD level index to be used.
The Proposal's Core:
- A new property, for example, lodIndex (LoD level index), is added to the Model object.
- If this property is defined (and not set to "Auto"), the system will always load the specified LoD level, using the automatically generated mesh, provided it exists in the source asset.
Advantages
This will resolve the "expensiveness" problem as follows:
- Utilizing Automation: Developers will be able to effectively use automatically generated LoD levels for their models.
- Precise Control for Instances: They will be able to directly bind a specific (automatic) LoD mesh to an instance, avoiding the labor costs of manual mesh creation and complex distance range configuration.
Example Configuration with Manual Automatic LoD Selection:
InstanceTable { id: table }
Model{ instance: table lodIndex: 0 instancingLodMax: 100 instancingLodMin: 1 }
Model{ instance: table lodIndex: 1 instancingLodMax: 1000 instancingLodMin: 100 }