Indigo 0.7F exporter here! Features added/Comments welcome!
Posted: Sun Jan 14, 2007 6:32 pm
Hello everyone, I'm new. I have started using blender and indigo at around the same time and started with indigo 5t7. I have enjoyed seeing the progress made with all three programs, that is, blender, indigo, and the exporter. Now 3d graphic is a hobby of mine (I have a nice scene I have made but have not currently let it render long enough to post it) and its been awhile since I felt able to contribute to something. So I thought now is the time.
If you haven't seen my post in the other thread, I reported that I was working on the exporter for 07 and I'd like to join the team. I think if we get organized we can solve different problems and the same problems together. I think organized is the best way. That way we don't each write our own exporters and it ends in confusion for everyone trying to figure it all out. I know it will likely be a forum type of teamwork, since we are all over the world and when some people are sleeping some are awake and so on. So a sort of tag-your-it type of meetings we could have over the course of some days where some things can be brought to attention then worked on for awhile, tested, and posted.
This script was based on the 'current dev version' from the wiki page listed from the download/exporter section. I think it is the same as exporter 6t6 b1. I have tried to test it to make sure it was working okay before I post an update, but it can still be buggy. Some code may have been deleted by accident or for a reason.
I have changed many things and right now much may break if you click the wrong button. I'm quite nervous my hands are shaking. This has been a big project for me over the last few days so I hope everyone can play around with it and enjoy it for what it is.
Here's my known changelog, things that I thought were too little to list / or forgot to list are not listed:
fixed = using rotation matrix that Zuegs posted (I modified scale variable) *Thanks Zuegs*
fixed = some default options reset to settings listed in indigo 0.7 inifile
optimized = geometry
bugfix = ignores faceless objects
added = support for large meshes
added = primitive support (rectangle light, sphere, plane) *Thanks to Kram1032 for the info*
added = new light power system for all emitters
added = halt time, image save time, num threads, updated gui
added = SSS dermis/epidermis/Henyey Greenstein support
added = phong material / blend material support
added = autofocus feature
added = bloom setting to camera
added = normal smoothing (to use: press the set smooth button from edit menu for each desired mesh)
Thanks to all for providing fixes in the forum and I have adapted the ones I saw into the script. Thanks for testing, reporting bugs, helping solve bugs, new ideas for script and stuff like that. Please feel free to let me know if your code is in there but no credit comment is near it. I have done my best to add credit and add fixes as fast as possible so I was able to provide something for you to try. So check it out, read it and learn it if you want. Most of it is easier than it looks to understand.
Feedback is welcome! & comments....More than anything else, enjoy using it and have fun! Thanks!
Edit: I would like to say thank you to everyone that used and tested this exporter. This script is no longer being developed by me. I have now moved to version 08 of exporter. Version 1.21 fixes major bug. Version 1.20 Finally finished cleaning/merging extra code created for large mesh support. Version 1.18 maintenance release. Version 1.17, mainly a maintenance release. I'm not sure how 6t6 exporter handled layers...but since I know they are useful I wanted to have a look at what I could code that might be helpful. Now it is set so that an object viewable in layer 7 when you render layer 5 will be ignored and an object viewable in more than one layers only exports once.
----------
Version 1.14: bug fix for camera *Thanks Scorpius*, removed MLT button from GUI
----------
New release for Indigo 07T7. The script graduated from beta stage and is moving on to a simple version numbering system. Bug fixes for primitives, they no longer crash the exporter when you forget to apply a material on them. (instead they receive default values) If you want to set up a mirror now just ignore setting a exponent and push the RayMirror button and it will apply a 1 million exponent value. Save IGI, Display Period, Polarisation, and Super Sample Factor are all in the GUI now. Minimum seconds for display or save are now raised to 30 seconds. With saving igi files and using bloom I think it is better to raise these values to slower intervals. Enjoy!
----------
I am thinking of slowing down work now to get ready to enjoy the spring season.
Fixed separate materials feature. *Thanks locke* Added support for large meshes. Put fresnel scale back into phong material. *Thanks Fip 2*
-sorted white balance from blue to red based on temperature
-saved tonemapping settings while working with a scene
-removed inverted colors from henyey greenstein (no longer absorbs)
-removed global color gamma exponent
-removed global texture exponent
-removed medium name tag .medial
-removed multiplier from rgb emitter, 0-1 works fine with new light power system
-removed confirmation menu from exiting exporter, now just exits when you push ESC
-increased image save time range to 15 (900 seconds) minutes from 10 (600 seconds)
-added per-texture exponent set by texture/map to/col slider (just above nor) - result is col*10 or .1 = 1
-changed absorption/scattering rgb values, now show up exactly inverted from what you entered
-added absorb/scatter rgb/uniform multiplier 1000
*To use absorb multiplier: if RayMirror rayMirr slider is > 0 use *1000 multiplier, else use value according to directions
*To use scatter multiplier: if RayMirror Fresnel slider is > 0 use *1000 multiplier, else use value according to directions
**RayMirror does not have to be activated to use the RayMirr or Fresnel slider multipliers
See above for features / below for directions. Enjoy!
This script requires Blender 2.43 and Indigo 0.7 Final to work. Only mesh objects are supported.
"Note: for people wanting to use multiple hardness/exponent levels of .nk materials, just add numbers to the end like .nk1 .nk2 and the exporter code takes care of the rest *brought to my attention by Phil, thanks Phil!, solved also by Zuegs! Thanks to both of you. I just found this out myself while testing, looking for a fix for something that was already done. Interesting, I am embarassed!"
Directions/news you can use:
Variables that will still cause memory errors: You can still have memory errors from what I can see. These will happen because there are still some variables in mesh data: - signs that follow vertex pos or normals tags, uv mapped meshes, and layout/type of the mesh. If you have any memory errors and want to let me know please report to me the last few lines of the Blender console error message and line that created the error. Include also the type of mesh (sphere, hand made house, big monster, etc) that caused the error if you know which mesh it is, if it is uv mapped, and the size of the mesh (verts/faces). From here, I should be able to split the mesh into more pieces or alter these functions to fix the problem. Thanks!
From Zuegs: @Mute:
ensure every objects scale is equal for all 3 directions X,Y,Z - all uneqal scaling should be applied to the mesh (not the object) - use Ctrl-A to apply objects asymmetric transformations to the underlying mesh in your case
hope it help, regards, zuegs
From Zuegs: You can use Alt - D in blender or duplicate linked to activate instancing.
Primitives: You must scale sphere primitive in object mode only. Any scaling to it in edit mode will result in errors.
* .rlight to mesh name enables rectangle light, this is a blackbody light using the new light power system, width and height adjusted by adding to mesh name, for example cube.rlight.width.height where width and height are integers
* .plane to mesh name enables plane, <dist> tags are adjusted by adding to mesh name, for example wall.plane.dist where dist is an integer, normal tags are fixed values, must edit in XML
* .sphere to mesh name enables sphere
(all other options not marked as fixed, are set as usual)
(I recommend that you use a mesh uvsphere for .sphere, mesh plane for .plane, and mesh cube [or plane maybe, I did not test?] for .rlight when you use the primitives.) *Thanks zsouthboy for mesh info*
Blend material:
* material name needs .blend.a.b where .blend sends it to exporter as a material blend, a and b is the blended materials which can be any name you see fit but you will probably notice that you need to keep name fairly short or you will run out of space
* first material (a) color is defined by color RGB
* second material (b) color is defined by specRGB
* translucency == 1 = use null_material for .a material else rgb
* alpha < 1 = use null_material for .b material else rgb
* ambient == blend_factor value
Emitter settings:
* hard = power drawn value
* spec = overall luminous efficacy value (spec*100)
Bump map <b> tags: set by nor slider, result is (nor/10), so .1 gets exported as .01
Medium Settings:
* IOR = ior from blender
* cauchy b coeff = filter from blender
* absorption spectrum <rgb> = set with colors
* precedence = specular (*10) so .2 spec gets less pecedence than .3 specular
* translucency == 0 `glossy_transparent tags where hardness *10 sets exponent, else specular tags
* Ray Transparent button must be enabled for SSS/medium
* reflection (the one above spec) > 0 *set absorbtion coefficient uniform tag/value (reflection*10), else use rgb diffuse color sliders
* dermis / epidermis, see below
Dermis:
* add .der to material name to enable, for example skin.der
* hemoglobin_fraction set by SpecTransP slider
Epidermis:
* add .epi to material name to enable, for example skin.epi
* melanin_fraction set by Ref slider (right above spec and hard sliders)
* melanin_type_blend set by Alpha slider
SSS settings:
ambient = 1 `SSS on, else SSS off
specTransparent > 0 *sets scattering coefficient uniform tags/value (spectransp*10) else rgb, which is set by spec color sliders
fresnelTrans == 0 *sets phase function uniform tag, else use henyey greenstein tag
alpha < 1 *sets g_spectrum uniform tags/value (alpha*10), else use rgb mirror color sliders
Camera settings:
Camera DOF and lens set in Blender under editing menu for camera.
Render size:
Render window size and % percent buttons to alter size are now adjusted from Blender's Render window. (25 50 75 100%, buttons near Render button)
*Thanks for comments/testing!
If you haven't seen my post in the other thread, I reported that I was working on the exporter for 07 and I'd like to join the team. I think if we get organized we can solve different problems and the same problems together. I think organized is the best way. That way we don't each write our own exporters and it ends in confusion for everyone trying to figure it all out. I know it will likely be a forum type of teamwork, since we are all over the world and when some people are sleeping some are awake and so on. So a sort of tag-your-it type of meetings we could have over the course of some days where some things can be brought to attention then worked on for awhile, tested, and posted.
This script was based on the 'current dev version' from the wiki page listed from the download/exporter section. I think it is the same as exporter 6t6 b1. I have tried to test it to make sure it was working okay before I post an update, but it can still be buggy. Some code may have been deleted by accident or for a reason.
I have changed many things and right now much may break if you click the wrong button. I'm quite nervous my hands are shaking. This has been a big project for me over the last few days so I hope everyone can play around with it and enjoy it for what it is.
Here's my known changelog, things that I thought were too little to list / or forgot to list are not listed:
fixed = using rotation matrix that Zuegs posted (I modified scale variable) *Thanks Zuegs*
fixed = some default options reset to settings listed in indigo 0.7 inifile
optimized = geometry
bugfix = ignores faceless objects
added = support for large meshes
added = primitive support (rectangle light, sphere, plane) *Thanks to Kram1032 for the info*
added = new light power system for all emitters
added = halt time, image save time, num threads, updated gui
added = SSS dermis/epidermis/Henyey Greenstein support
added = phong material / blend material support
added = autofocus feature
added = bloom setting to camera
added = normal smoothing (to use: press the set smooth button from edit menu for each desired mesh)
Thanks to all for providing fixes in the forum and I have adapted the ones I saw into the script. Thanks for testing, reporting bugs, helping solve bugs, new ideas for script and stuff like that. Please feel free to let me know if your code is in there but no credit comment is near it. I have done my best to add credit and add fixes as fast as possible so I was able to provide something for you to try. So check it out, read it and learn it if you want. Most of it is easier than it looks to understand.
Feedback is welcome! & comments....More than anything else, enjoy using it and have fun! Thanks!
Edit: I would like to say thank you to everyone that used and tested this exporter. This script is no longer being developed by me. I have now moved to version 08 of exporter. Version 1.21 fixes major bug. Version 1.20 Finally finished cleaning/merging extra code created for large mesh support. Version 1.18 maintenance release. Version 1.17, mainly a maintenance release. I'm not sure how 6t6 exporter handled layers...but since I know they are useful I wanted to have a look at what I could code that might be helpful. Now it is set so that an object viewable in layer 7 when you render layer 5 will be ignored and an object viewable in more than one layers only exports once.
----------
Version 1.14: bug fix for camera *Thanks Scorpius*, removed MLT button from GUI
----------
New release for Indigo 07T7. The script graduated from beta stage and is moving on to a simple version numbering system. Bug fixes for primitives, they no longer crash the exporter when you forget to apply a material on them. (instead they receive default values) If you want to set up a mirror now just ignore setting a exponent and push the RayMirror button and it will apply a 1 million exponent value. Save IGI, Display Period, Polarisation, and Super Sample Factor are all in the GUI now. Minimum seconds for display or save are now raised to 30 seconds. With saving igi files and using bloom I think it is better to raise these values to slower intervals. Enjoy!
----------
I am thinking of slowing down work now to get ready to enjoy the spring season.
Fixed separate materials feature. *Thanks locke* Added support for large meshes. Put fresnel scale back into phong material. *Thanks Fip 2*
-sorted white balance from blue to red based on temperature
-saved tonemapping settings while working with a scene
-removed inverted colors from henyey greenstein (no longer absorbs)
-removed global color gamma exponent
-removed global texture exponent
-removed medium name tag .medial
-removed multiplier from rgb emitter, 0-1 works fine with new light power system
-removed confirmation menu from exiting exporter, now just exits when you push ESC
-increased image save time range to 15 (900 seconds) minutes from 10 (600 seconds)
-added per-texture exponent set by texture/map to/col slider (just above nor) - result is col*10 or .1 = 1
-changed absorption/scattering rgb values, now show up exactly inverted from what you entered
-added absorb/scatter rgb/uniform multiplier 1000
*To use absorb multiplier: if RayMirror rayMirr slider is > 0 use *1000 multiplier, else use value according to directions
*To use scatter multiplier: if RayMirror Fresnel slider is > 0 use *1000 multiplier, else use value according to directions
**RayMirror does not have to be activated to use the RayMirr or Fresnel slider multipliers
See above for features / below for directions. Enjoy!
This script requires Blender 2.43 and Indigo 0.7 Final to work. Only mesh objects are supported.
"Note: for people wanting to use multiple hardness/exponent levels of .nk materials, just add numbers to the end like .nk1 .nk2 and the exporter code takes care of the rest *brought to my attention by Phil, thanks Phil!, solved also by Zuegs! Thanks to both of you. I just found this out myself while testing, looking for a fix for something that was already done. Interesting, I am embarassed!"
Directions/news you can use:
Variables that will still cause memory errors: You can still have memory errors from what I can see. These will happen because there are still some variables in mesh data: - signs that follow vertex pos or normals tags, uv mapped meshes, and layout/type of the mesh. If you have any memory errors and want to let me know please report to me the last few lines of the Blender console error message and line that created the error. Include also the type of mesh (sphere, hand made house, big monster, etc) that caused the error if you know which mesh it is, if it is uv mapped, and the size of the mesh (verts/faces). From here, I should be able to split the mesh into more pieces or alter these functions to fix the problem. Thanks!
From Zuegs: @Mute:
ensure every objects scale is equal for all 3 directions X,Y,Z - all uneqal scaling should be applied to the mesh (not the object) - use Ctrl-A to apply objects asymmetric transformations to the underlying mesh in your case
hope it help, regards, zuegs
From Zuegs: You can use Alt - D in blender or duplicate linked to activate instancing.
Primitives: You must scale sphere primitive in object mode only. Any scaling to it in edit mode will result in errors.
* .rlight to mesh name enables rectangle light, this is a blackbody light using the new light power system, width and height adjusted by adding to mesh name, for example cube.rlight.width.height where width and height are integers
* .plane to mesh name enables plane, <dist> tags are adjusted by adding to mesh name, for example wall.plane.dist where dist is an integer, normal tags are fixed values, must edit in XML
* .sphere to mesh name enables sphere
(all other options not marked as fixed, are set as usual)
(I recommend that you use a mesh uvsphere for .sphere, mesh plane for .plane, and mesh cube [or plane maybe, I did not test?] for .rlight when you use the primitives.) *Thanks zsouthboy for mesh info*
Blend material:
* material name needs .blend.a.b where .blend sends it to exporter as a material blend, a and b is the blended materials which can be any name you see fit but you will probably notice that you need to keep name fairly short or you will run out of space
* first material (a) color is defined by color RGB
* second material (b) color is defined by specRGB
* translucency == 1 = use null_material for .a material else rgb
* alpha < 1 = use null_material for .b material else rgb
* ambient == blend_factor value
Emitter settings:
* hard = power drawn value
* spec = overall luminous efficacy value (spec*100)
Bump map <b> tags: set by nor slider, result is (nor/10), so .1 gets exported as .01
Medium Settings:
* IOR = ior from blender
* cauchy b coeff = filter from blender
* absorption spectrum <rgb> = set with colors
* precedence = specular (*10) so .2 spec gets less pecedence than .3 specular
* translucency == 0 `glossy_transparent tags where hardness *10 sets exponent, else specular tags
* Ray Transparent button must be enabled for SSS/medium
* reflection (the one above spec) > 0 *set absorbtion coefficient uniform tag/value (reflection*10), else use rgb diffuse color sliders
* dermis / epidermis, see below
Dermis:
* add .der to material name to enable, for example skin.der
* hemoglobin_fraction set by SpecTransP slider
Epidermis:
* add .epi to material name to enable, for example skin.epi
* melanin_fraction set by Ref slider (right above spec and hard sliders)
* melanin_type_blend set by Alpha slider
SSS settings:
ambient = 1 `SSS on, else SSS off
specTransparent > 0 *sets scattering coefficient uniform tags/value (spectransp*10) else rgb, which is set by spec color sliders
fresnelTrans == 0 *sets phase function uniform tag, else use henyey greenstein tag
alpha < 1 *sets g_spectrum uniform tags/value (alpha*10), else use rgb mirror color sliders
Camera settings:
Camera DOF and lens set in Blender under editing menu for camera.
Render size:
Render window size and % percent buttons to alter size are now adjusted from Blender's Render window. (25 50 75 100%, buttons near Render button)
*Thanks for comments/testing!