The (software) engineer in me has found a need to specify what I'm doing:
Bat4Blender
Goal:
Using the Blender Application, to be able to produce .SC4Model files for rendered 3DModels, compliant with the parameters demanded by the SimCity4 application and with final outputs as produced by the gmax BAT tool.
Functional Specification v1.0 rivit
Art Features:
To take advantage of the Blender Application Rendering capabilities to produce art compatible with SimCity4
+ advanced application dependent rendering techniques
+ control of exposure, color gamut, shadows, etc etc
Legacy Compliance with SimCity4 and derived works
- produce Buildings/Props and Foundations
- SC4 Standard calibrations e.g. Sun and Shadows, Day, Night
- Maxis Variable Night i.e. Day with Night renders a blended overlay
- BAT4Max v6? fixed DarkNight (or a variable equivalent) Day and Night both fixed renders.
- MN is inconsistent with Maxis Night colors and should be dropped (is not functionally relevant if we can make a Variable Maxis night)
- High Definition renders of Zooms (3,4),5 in addition to Standard Rendering
Desirable
+ add support for baked textures for Automata
Technical Features:
Simple dedicated application Tool Panel which controls all aspects of the BAT production
should look/act like the gmax BAT panel
Setup/Manipulation of Camera, Lights for Day and Night(s).
Do we really need 6 cameras? or just camera settings according to Day/Night/zoom/view/resolution/renderstyle
Produce automatic LODs of models for zooms (3,4),5 - preferably close-fitting accurate shells
Support manually created LODs
Legacy Compliance with SimCity4: must produce like outputs from gmax BAT.
Support for randomised or manually entered GID
To Produce Render and Package a .SC4Model file comprising
4 Views and 5 zooms of each Model, Day and optionally Night
Correctly TGI numbered components
up to 64 panels per Model view at max zoom (SD or HD)
FSH of the rendered model - DXT1 for Day, DXT3 for Night
S3D files of the segments of the rendered LODs of the model
Thumbnail Images
Desirable:
+ Add support for exporting (s3d) of Automata and their Textures (DXT3)
Notes:
This custom application for Blender v2.8 and following, is largely a porting operation from gmax BAT scripts, with all internal gmax program/function references taken up by Blender/Python equivalents. The gmax Scripts comprise 7000 lines of code - even at only at 5 min per line (understand, translate, test) this is 600 hours of code translation.
There is a large language difference between gmax script (BASIC-like) and Python, although functionally the latter is likely to be richer given the age of gmax. The current scripts are very bound to gmax, rambling, untyped, not fully qualified and hence ambiguous to some extent - I have started (20% in) to port these (original gmax BAT) to VB.NET so that they can be at least checked for completeness by compilation. This allows me to separate script-only code from internal gmax functions which need to find Blender equivalents. Eventually it gives me a baseline protoype app shell independent of gmax which should make it easier to subsequently recode into Python (by someone who can). (Needs someone who knows the Blender API well)
However, since we need to make such a large transition in code, we are not obliged to keep all features or methods applied in gmax, nor even functional constraints as long as we produce Simcity4 compliant outputs. Hence simplification should be a catch-cry wherever we can. Also newer techniques now exist for some things e.g. Does anyone use the old nightlighting techniques in gmax BAT? Making detailed LODs automatically should be easy nowadays with Shell Mesh functions. We should take advantage of this if we can. (Needs someone who knows Blender well)
Also, I'm not sure that all of the "parameters" of BAT are in the scripts - where are the art things actually defined? Documented? There are some things done outside of the script by MAXIS code I think - not clear yet.
It's a project, Jim, but not as we know it
It's a big project however you look at it. If it is to succeed in a useful timeframe it will need a lot of interaction and communication and a team of about 10 (not necessarily concurrently), split into
Art/Technical types,
Blender/Max types,
Python/BASIC types,
Experimental/Structural types,
Starter/Finisher types.
Document/Test types
There needs to be a lead on Art, one on Technical and one on Prototyping/Testing.
And Someone in charge of the charge.
The work should proceed from the Art (Blender) towards the production of Correct Render and LOD, the technical from outputs backwards (from SC4) to there. This allows for a synch point. There is an overlap where technical control of the app is needed to produce the art - Menus, Rigs, Command Buttons etc. hence coordination will be necessary. We will have to bootstrap up from Prototyping to Structured development - its a LEGO challenge.
This is a project equivalent in complexity to a NAM release that revises legacy with something new (think Flex replacing Puzzle Pieces) - will need the same dedication, perserverance and patience - is it worth doing? or are we too late? can we get this sort of team to stick? can we find enough of the right talent? real volunteers?
please discuss and refine (what is missing?, what can we drop?). I will collate specification items.