As I have been working on my living room exercise, I have been dividing up the 3D models and their associated .hdr textures, .mat files, and .cal files in a way that I can reuse again in other projects. I would like to share these with the community, but in order to best share, I would like to organise it in the best way for others. If I just sent a bunch of files, it may not be easy to reuse.
Here is an example of a typical project, with one reusable asset I have called
lib/ # dir to hold all scene assets lib/cool_chair/ # holds a single asset lib/cool_chair/obj/ # holds all "objects", e.g. rtm, obj, oct, or source files such as blend files lib/cool_chair/obj/cool_chair.blend # the source file, if anybody wants to tweak lib/cool_chair/obj/cool_chair.obj # the baked geometry lib/cool_chair/obj/cool_chair.rad # radiance mesh primitive, in this case lib/cool_chair/tex/ # holds all hdr texture files if any lib/cool_chair/tex/leather.hdr # an example texture lib/cool_chair/cal/ # holds all cal files if any lib/cool_chair/ies/ # holds all ies files if any lib/cool_chair/mat/ # holds one or more mat files for the object lib/cool_chair/mat/cool_chair.mat # material file lib/cool_chair/Makefile # provides "make lib" which builds necessary rtm, oct, or whatever files so we don't check these into version control lib/cool_chair/README.md # asset readme file lib/cool_chair/LICENSE # asset license file README.md # project description Makefile # will provide "make render", which will build everything and start rendering scene.rif # rad input scene.rad # this is the main scene file, everything is linked from here LICENSE # project license file
If I wanted to use
cool_chair in my project, I would copy it into my
lib/ dir as shown above, and then add add to
In this case, we have used the OOTB obj file provided by the asset in
lib/cool_chair/obj/cool_chair.obj. It is possible to customise or re-export the asset object files, or whatever if you need. If
cool_chair comes in different shades of leather, its
Makefile could build things diferently depending on multiple material files in its
mat/ directory. If the asset is a particle which needs generation (e.g. grass / leaves / bricks), its Makefile can allow for that by allowing you to generate your own object in its
This organisation method isolates each asset into its own directory in the
lib/ folder. That directory can be copy and pasted verbatim to another project’s
lib/ folder and it will retain all licensing information, original geometry source files, material files, and so on. It can be loaded it as a git submodule. You can create branches for modifications.
I find this workflow seems to scale when you have many complex objects in the scene, as it is is grouped primarily by object, not filetype. It also means that without even rendering, anybody looking at the project knows what’s in my scene.
As for the naming of
cool_chair itself, I am currently unsure of the best approach, but I am researching building classification systems and integration with things like IFC, OmniClass, Uniformat, etc, as most Radiance assets I assume would be building object or building entourage.
I would be happy to share my assets in this structure, but would like community feedback and to know what other workflows you’ve developed to know how I can best share assets.