@@ -119,12 +119,16 @@ void bake_cube_geometry(
119
119
const VoxelBlockyModelCube &config,
120
120
VoxelBlockyModel::BakedData &baked_data,
121
121
Vector2i p_atlas_size,
122
+ VoxelBlockyModel::MaterialIndexer &material_indexer,
122
123
bool bake_tangents
123
124
) {
124
125
const float height = config.get_height ();
125
126
126
127
baked_data.model .surface_count = 1 ;
127
128
VoxelBlockyModel::BakedData::Surface &surface = baked_data.model .surfaces [0 ];
129
+ // The only way to specify matererials in this model is via "material overrides", since there is no base mesh.
130
+ // Even if none are specified, we should at least index the "empty" material.
131
+ surface.material_id = material_indexer.get_or_create_index (config.get_material_override (0 ));
128
132
129
133
for (unsigned int side = 0 ; side < Cube::SIDE_COUNT; ++side) {
130
134
VoxelBlockyModel::BakedData::SideSurface &side_surface = surface.sides [side];
@@ -198,7 +202,7 @@ void bake_cube_geometry(
198
202
199
203
void VoxelBlockyModelCube::bake (BakedData &baked_data, bool bake_tangents, MaterialIndexer &materials) const {
200
204
baked_data.clear ();
201
- bake_cube_geometry (*this , baked_data, _atlas_size_in_tiles, bake_tangents);
205
+ bake_cube_geometry (*this , baked_data, _atlas_size_in_tiles, materials, bake_tangents);
202
206
VoxelBlockyModel::bake (baked_data, bake_tangents, materials);
203
207
}
204
208
@@ -211,7 +215,9 @@ Ref<Mesh> VoxelBlockyModelCube::get_preview_mesh() const {
211
215
212
216
VoxelBlockyModel::BakedData baked_data;
213
217
baked_data.color = get_color ();
214
- bake_cube_geometry (*this , baked_data, _atlas_size_in_tiles, bake_tangents);
218
+ StdVector<Ref<Material>> materials;
219
+ MaterialIndexer material_indexer{ materials };
220
+ bake_cube_geometry (*this , baked_data, _atlas_size_in_tiles, material_indexer, bake_tangents);
215
221
216
222
Ref<Mesh> mesh = make_mesh_from_baked_data (baked_data, bake_tangents);
217
223
0 commit comments