1. Parametric Asset Generation (Procedural Asset Core)
The procedural generation core is based on non-destructive parametric modeling.
Parametric Primitive System:
Any complex asset—from a chair to a tree—is created not as a unique model, but as an instance of a parametric generator.
Example of creating a "Chair":
Base Primitives: "Seat", "Leg", "Backrest".
Parameters: Leg_Height, Seat_Width, Backrest_Angle, Leg_Style (["straight", "curved", "cabriole"]).
The engine generates the final geometry in real-time based on these parameters and the selected polygonality style (from High-Poly for close-up views to Low-Poly for mass scenes).
Procedural Materials (Substance-Alike Material Graph):
Textures and materials are never stored as raster images. They are described as a node graph of noise generators, gradients, curves, and filters.
Parameters: Base_Color, Roughness, Damage_Intensity, Wetness.
Result: One "Rusted Metal" material can be instantly applied to an object of any shape and scale, seamlessly adapting to it without quality loss.
2. Procedural Worlds at Runtime (Runtime World Generation)
We do not store landscapes; we store instructions for their creation.
Semantic World Description (World DNA):
A world is described by a small JSON-like file—its "DNA".
{
"world_seed": 0xA3F2C1,
"biomes": [
{
"type": "temperate_forest",
"coverage": 0.6,
"tree_density": 0.8,
"tree_params": { "height_variance": 0.3, "style": "oak" },
"ground_cover": "fern"
},
{
"type": "mountain",
"coverage": 0.4,
"rockiness": 0.9,
"snow_altitude": 1000
}
],
"rules": [
{"if": "slope > 45", "then": "spawn_rock_cluster"},
{"if": "near_water", "then": "spawn_reed", "density": 0.7}
]
}
This file weighs no more than 10-50 KB, regardless of the world's size.
Client-Side Generation with Deterministic Result:
When a user enters a world, their client receives the "DNA" file.
The engine on the user's side independently generates the entire surrounding world using algorithms common to all.
Since the algorithms are deterministic (the same seed gives the same result), all users see an identical world without the need to transfer it.
LOD Generation: As the user moves, the engine generates the landscape and objects with the required level of detail, discarding data about distant parts.
3. Parametric Preset Library (Procedural Preset Library)
Users work not with gigabytes of models, but with a library of parametric presets.
Creating and Saving a Preset:
A user configures a parametric tree: sets height, crown lushness, trunk curvature.
They do not save a 3D model of the tree. They click "Save as Preset" (Ctrl+S).
A .vrapreset file weighing ~2-5 KB is added to their library, containing only the parameters and a reference to the base generator (proc_tree_gen_v4).
Sharing and Styles:
The user can share this .vrapreset file. Another user, upon loading it, gets the exact same tree in their world, even with different graphics settings.
Entire stylistic packages are created—collections of presets for building worlds in a unified style ("Cyberpunk Style", "Middle-earth Style"). A package of 1000 presets weighs about 5-10 MB, not gigabytes.
Procedural Variability:
When placing an "Oak" preset in the world, the engine automatically adds random variations within the set parameters (height_variance: ±10%) to avoid monotony. This is calculated on the fly on each client.
4. Hybrid Approach for User-Generated Content
For unique handmade objects, the engine uses "smart" compression and voxel representation.
Voxelization and Parametric Simplification:
If a user imports a unique 3D model (e.g., a statue), the engine automatically analyzes it and creates a parametric approximation.
Complex geometry is converted into a set of voxels and smooth surfaces that can be described mathematically.
The original high-poly model is used only as a reference, while its optimized parametric version exists in the world.
Neural Network Texture Compression:
Unique textures are passed through a lightweight neural network encoder, which converts them into a vector representation (latent vector).
For rendering on the client, a decoder (also built into the engine) reconstructs the texture from this vector. This allows storing complex textures in ~100 KB instead of 10 MB.
The result of the current iteration: VR Constructor can store or transmit ready-made content but also It stores and transmits "recipes" for content creation. This fundamentally changes the economics of content: the cost of storing and transmitting a world is practically independent of its visual complexity and size, and is determined only by the complexity of its "DNA".