All About Oceans

   This month's 3D work has been entirely focused on oceans. Aside from being useful as a backdrop for the naval fighter plane I've been building for practice, oceans will also be used quite a lot in the planetary graphics for Orion Skies. As such, I wanted to take the time to really do them well.


First Ocean

  When it comes to oceans, Blender is really nice in that it has a built-in ocean simulation system; however, its default operation is very limited in scale.

   Several months ago, I used it to create a basic ocean; that ocean worked well-enough to do some practice images, but it was also quite limited in a number of ways.

   That ocean was a 1-kilometer-by-1-kilometer square, with "frozen" waves that can't move. In order to make it look halfway decent, I had to carefully position it in front of the camera for every image I rendered, being careful to rotate the ocean to line an edge up with the horizon.

In this render, I forgot to manually rotate the ocean to match the camera position. Oops!


Large Animated Ocean

   To improve the ocean, I went through Dylan Neill's "Large Ocean Tutorial", which uses a clever setup to expand Blender's ocean simulator. It showed me how to create a circular ocean 8 kilometers across, with moving waves. This was a complete game-changer compared to what I had before!

 The 8-kilometer ocean from the "Large Ocean" tutorial.


Infinite Ocean

   There were limits to the "Large Ocean Tutorial" approach:

  1. Each second of wave movement required hundreds of megabytes of hard drive storage to map out, so long animations aren't always practical.
  2. Additionally, the ocean is only 8 kilometers across; when you have a high-speed aircraft or spacecraft, 8 kilometers runs out very quickly!

   So I did some research and some experimentation, and learned how to "loop" the wave motion indefinitely, with random variations. This enabled the ocean to be used in videos of any length.

   I also learned how to keep the wave pattern fixed in place, while simultaneously linking the ocean-surface object to the camera's location; this essentially enabled the ocean to perpetually generate itself in front of the camera, no matter how far the camera travels.

   Between those two updates, the ocean was now infinite in time and space, which was a huge milestone.

A demonstration of the "infinite ocean".


High-Altitude Views

   Although the ocean object could move to generate ocean in front of the camera, it was still only 8 kilometers across, which wasn't nearly large enough for long-distance views from high altitudes. So I did a little research on the plane I've been practicing with, the FJ-2 Fury. Its maximum flight altitude is 14.3 kilometers. So I wondered what would happen if I put the camera up that high?

   I used a "horizon calculator" to find the distance one can see from 15 kilometers up, which is roughly 450 kilometers. I scaled the ocean up to 1000 kilometers across, or 500 kilometers in any direction. I also used a "curvature calculator" to find how far down the Earth curves at that distance, and applied that curve to this new massive ocean.

   With the ocean this size, Blender's editor interface really struggled to display or edit it correctly. I held my breath and hit the "Render" button... and it rendered just fine! The total render time was actually the same as the 8-kilometer version. Interesting.

   However, from 15 kilometers up, there were two remaining problems:

  1. It no longer looked plausibly like an actual ocean of water. I did some work on this, but I think part of the problem is it's missing some atmospheric effects that you see at those distances. I'll work on clouds + atmospherics next, and then I'll revisit this if it's still looking bad.
  2. The waves were very obviously tiled in straight lines, so I spent some time researching and experimenting with different ways to disrupt the uniform, linear wave layout.

   After having done some work to address #1 and #2 above, I'm pretty happy with the ocean. I'm sure I'll want to make additional improvements in the future, but this seems like a strong start. :)

A view with the camera quickly rising from the ocean's surface to 15 kilometers up.


Next Steps

   Now that I have a nice ocean, I want to spend some time seriously learning how to do good clouds, and related atmospheric effects like fog. Then I'll play with a few different compositional setups. After that, I'll work on making a revised version of the FJ-2 Fury– improving the detail, realism, and level of accuracy.

   Overall, I'm (increasingly loosely) following a curriculum outlined by "Blender Guru", a 3D artist who has created a number of high-quality tutorials. Here's where I'm at along this path:

    🟢 Donut Tutorial / Intro to Blender
    🟢 Chair Tutorial / Modeling
    🟢 Lighting

    🟢 Principled Shader / Materials

    🟢 Anvil Tutorial / Texturing
    🟡 Improved Environment + Composition
    ⚪ Improved Fury + Aesthetics
    ⚪ Aircraft Carrier + Animation

 

Practice Gallery

    Here are some practice renders I've created since the last update. In these, I was working on making a basic ocean that looks good, and then working on removing various limitations of scale:

















Comments

Popular posts from this blog

All About rEV: Expanded

2022 Review, and a Look Forward

The World of Orion Skies