Libove Blog

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

#

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


#

Result of some recreational graphics programming:

  • Can load OBJs
  • Flat rendering and controllable camera
  • using #winit and #wgpu in #rust

a low poly iso sphere with random colors