as some of you might have noticed, I'm back at development. My central motivation since last year was to finally develope a stable and reliable SDK release.
With this motivation in mind, among others, I've focussed on Static Meshes (SM) first, since most people would benefit from it.
The new SM System that is currently being developed and now considered final was completely rewritten and is enterily different from the old system back in 2013/14.
While trying to develope a new mesh system from scratch I completely turned the SDK's structure upside down and also implemented an Unreal Engine 4 inspired actor component system. It really was the next logical step I had to take that even turned out to simplify further development once it was stable.
Why am I posting this?
- Providing a preview of the new system's capabilities and reliability, and discussing the new system as a whole
- I kindly ask for 2-3 testers soon, that'll play around with static meshes and report ANY bug/inconvenience they possibly still encounter then
Of all times - Why right now?
- I want a stable, reliable, efficient and rather final release after all these years
- Some others and me are working on an indie game/TC that is based on the SDK
- Alternative and efficient way of rendering 3D models with minimum (or almost none) reprocessing, using the standard Mesh and LOD Mesh format
- Show/Hide/Render toggle and Detail Level options for Editor and Game
- Wireframe, zone-color poly, unlit texture poly and lit texture poly and vertex lighting only rendering
- Vertex Buffer accelerated data management and rendering: Minimizes reprocessing, accelerates lighting and allows for hundreds of static meshes to be displayed in a single scene by distributing data of a prototype among actors with the same mesh
- 3 x 2 lighting models: Poly Flat Shaded, Vertex Flat Shaded and Gouraud Shaded Lighting - /w additional choice of Light Hit Point: Per Vertex or Per Location
- sopisticated Vertex lighting system: filter static and dynamic lights, how and when and IF they're updated (allows from full dynamic to full static lighting and everything in between)
- Global or Skin-based lighting options
- in-Actor component loading: quickly change the appearance of your current static mesh actor by simply loading a component as the actor's new default component
- Multiskin support, /w Default skin support, U/V scaling, mirror U/V
- Complex Material and Detail Texture support /w LODs
- Box, Sphere, Brush per-poly and (probably) kDOP auto collision
- Drawscale, Drawscale3D, Brightness (even overbrightening), custom dynamic Color support (even blended with dynamic lighting) - I'm also working on vertex color painting (see blow: Editor tools)
- Two-sided lighting support (for translucent meshes)
- 3D Mirror Axis support
- LOD Support in subclass sdkLODStaticMesh
- Group/Merge/Split support for complex structures (houses, bridges, trees.. you get the idea)
- RenderVisibility, MainUpdateVisibility, VertexFrameUpdateVisibility, TexUpdateVisibility and LightUpdateVisibility to tweak reprocessing for both Editor and Game based in the standardized struct FVisibilityCheckTemplate, /w the following options: Line Check, Radius Check, Distance Check, Zone Check, Volume Check, Tag Check and FOV Check
- Copy/Paste/Duplicate support
- Vector and Rotation gizmo Editor widgets
- Component analysis features: debugging/logging - Does my Mesh have relevant flags for rendering? Which components are there in the map? Which components are associated with my mesh? How many lights does it have? etc.
- Other minor options: Indicate relevant lights, Vertex/Poly count info, display Vertices, display Vertex Normals, max Lights, rebuild light (Component) list
- Implemented - Component System: as said above, was a logical and crucial step in making things possible and even easier to implement than without
- Implemented - Vertex Buffer: manages 3D data in the background and accelerates overall rendering and lighting
- Implemented - Vector/Rotation gizmos: displays current rotation and vector orientation planes as editor widgets when selected
- Implemented - Static Mesh Lights: a subclass of standard light component used to correctly buffer and display smooth vertex lighting - users can even readout vertex light data on Unreal Script level..
- Implemented - Brush Painter: paint multiple static mesh instance on your map (for vegetation, walls etc.)
- Implemented - Line Painter: paint static meshes along drawn lines similar to spline meshes (for fences, walls, roads, pipes etc.)
- WIP - New Mover system, with unlimited interpolation node movement (instead of keyframe based limitations)
- Planned - Vertex Color Painter: directly paint a custom color on the polys of your mesh to customize the skin(s)
Future Development Perspective
Advancements in the component and static mesh system allowed for further advanced 3D systems:
- WIP - Procedural Meshes and Dynamic Fluid Surfaces
- WIP - Terrain rendering and in-Editor creation/manipulation
What's still missing?
- Unsure - Static & dynamic shadow casting
- Unsure - Support for Decals/Texture projection