Exploring the intersection of learning, video games, and archaeological visualization.
Screenshot Friday! May 11th
This piece attaches to the rudder, giving leverage to rotate it. Although the color has faded from the original, it has traces of red, yellow, and black paint!
To avoid a spooky ghost crew, I modeled a man and woman with the same topology optimized for animation. After initial studies in muscular structure and proportion, I dove into ZBrush. I blocked out the body with ZSpheres and refined it with Dynamesh. Between ZRemesher and classic arm-wrestling with Maya LT, I reduced the poly count down to about 10K quads for one character. Depending on performance, I might reduce it further in the future. Because I approached modeling with the end goal of real-time animation, I wanted to create the best topology possible for smooth and clean deformation. Each model since my first has been an experiment in topology, and I have used that experience with prior characters to create the current body. Body Topology The knees and elbows both have an extra edge loop on the outside corner of the joint. Since these areas deform intensely, the extra geometry distributes weighting across the area and retains volume...
OceanConstructor Developer controlled settings As I dove into ocean simulation, I remembered a joke we used to tell in undergrad computer science classes. “We’re just coming up with increasingly complicated ways of being lazy.” To avoid the tedium of manually animating water, I coded a model based on Gerstner waves. Detailed in Mark Finch’s Nvidia’s GPU Gems chapter ( linked here and below ), Gerstner waves determine the horizontal and vertical shift of a point in space as a wave passes. Summing the displacement of several varied waves produces a naturalistic undulation. My current system in the Unreal Engine consists of three elements—a Blueprints ‘OceanConstructor’, a shader, and a C++ ‘OceanManager.’ The OceanConstructor class generates a dynamic material instance of the ocean shader, allowing for definition of parameters at runtime. The developer chooses the number of waves to sum, the general wind direction, wave steepness, varia...
When it comes to game development, the precursor of a sailboat is a sailcube! For buoyancy, I place a series of ‘test buoys’ around an object. Each frame the object checks if those points are above or below water. If significantly above, it applies gravity, and if significantly below, it applies upwards buoyancy. If somewhat above or somewhat below, it applies a smaller force. The result is an object that bobs and tilts with the water. Simple buoyancy When I implement the full ships, I will need to optimize each for the right balance of weight and ‘floatiness’. This ultimately depends on the shape, mass, test buoy positions, and dampening. I currently have an issue where the buoys do not account for horizontal displacement of the waves when determining if they are above or below water on steep waves, resulting in a momentarily floating ship or a ship that takes a little too long to rise with a wave. I will test how significant ...
Comments
Post a Comment