Skip to content
Gavin-Sears edited this page Dec 22, 2025 · 5 revisions

Goal: Finalize Geometry/ Coloring & Simple Animation

Grass, Egeria Densa, Barclaya Longfolia, driftwood, and simple sand floor created. Plants "sway" and users can use the GUI to change height, density, spacing of plants.

PNG image

create_ring(), fill_ring_pole() (& fill_ring_fan()), extrude_ring(), CatmullRom Splines (SplineVec3), and create_ring_spline() implemented. Final result is function that takes in spline for scale and position, outputs manifold mesh of extruded rings, with poles used to fill ends.

create_ring_spline-wireframe

Next steps for Week 2:

  • Add noise function to map where plants appear in the tank.
  • Ensure plants don't drift outside of the tank "wall"
  • Ensure elements in tank don't intersect with each other (realism!)
  • Add fish house element and update simple sand floor to be a sand -> gravel slider.
  • Continue developing tools to create fish geometry

Milestone 1: Implementation part 1 (due 11/12)

Becca's Reflection:

So far, I’ve focused on getting the core pieces in place, even if the visuals are still a bit rough:

  • Tank + camera
  • Orbit camera with zoom, damping, and reset.
  • Responsive canvas that resizes with the window.

Procedural tank floor

  • WebGL floor mesh with heightfield “sand” noise.
  • The floor exposes its params (amp / scale / yOffset) so other systems can sit nicely on top of it.

Plant system

  • Instanced grass blades with per-instance base position, height, phase, sway amplitude, and hue.
  • Additional plant layers blocked out: egeria and barclaya, each with their own regenerate() and parameter sliders.

Decorations (first pass)

  • Driftwood generators that respect the collision grid.

What’s still very WIP:

  • The shaders are mostly utilitarian right now—lighting and fog work, but the materials are flat.
  • Interaction is minimal (mostly camera + parameter sliders).

What’s giving me trouble?

  • Balancing collision spacing vs. density: if I’m too strict, the tank feels empty; if I’m too loose, objects intersect.
  • Designing APIs for each layer so it can share state (tank bounds, floor offset, collision info) without everything becoming spaghetti.

Gavin's Reflection

So far, I have:

  • developed basic tools needed to procedurally model fish
  • created a catalog of drawings of fish body parts/anatomy

What’s giving me trouble?

  • Fish geometry will be much more time consuming than originally planned

How should I Change my approach?

  • Simplify/downgrade planned variety
  • Accept that my progress may not be as visible until later on in the project
fish-swimming.mp4

Clone this wiki locally