Libove Blog

Personal Blog about anything - mostly programming, cooking and random thoughts

#

Added walls to the room and removed the pillars in the room itself. These can still be placed in the data structure but my random generator isn't using them at the moment. The geometry is now mostly done for my purposes. The next step will be tooling to create and edit rooms manually.

#gamedev #rust #geometry


#

I've found a simple way to create UVs for my ceiling geometry, built from Bezier triangles.

For each triangle I compute a LookAt matrix with the normal of the triangle as the view direction. For the up vector I use one edge of the triangle. The UV coordinates can then be calculated by applying this matrix to each sampled points and discarding the Z component.

let mut ps = [
    self.room.surface_point(*face, 0.0, 0.0, 1.0),
    self.room.surface_point(*face, 1.0, 0.0, 0.0),
    self.room.surface_point(*face, 0.0, 1.0, 0.0),
];
ps.sort_by(|x, y| x.y.partial_cmp(&y.y).unwrap());

let v1 = ps[1] - ps[0];
let v2 = ps[2] - ps[0];
let n1 = v1.cross(&v2);

let lt = Matrix3::look_to_rh(n1.normalize().into(), v1.normalize().into());

3D Scene with UV debug textures

#gamedev #geometry #uv


#

UV coordinates on pillars and floor working. I've tinkered with UVs for the ceiling surfaces but have not found a solution yet. There are always discontinuities. The ceiling is created with quadratic Bezier triangles.

Any tips would be appreciated.

#3d #graphics #gamedev #geometry #uv

3D rendering of a room with UV debug texture. The ceiling surfaces are still gray.


#

Cleaned up everything a bit and added a floor. All still in debug colors. Next will be to create proper UV coordinates to enable texturing.

#rust #wgpu

Debug rendering of a room with arched ceiling.




#

I've tried to come up with my own parametric surface description but failed. Today I've looked up and implemented Bézier triangle. No I can sample the surface I want to have. Next I will have to do create an actual geometry out of this.

3d visualization of Bézier triangles sampled.



#

Combined the Delaunay triangulation with the Bezier curves to create the "walls" of a room. Next step will be figuring out how to create surfaces between curves.

#geometry #rust

Screenshot of a 3D mesh with bezier curves sticking out


#

Can now show nodes and edges. Started work on Bézier curves.

Time to binge watch Freya Holmér to fresh up my knowledge :D

3D scene showing nodes and edges