Digital Art Zone

 
   
1 of 5
1
Scripted multipass render to add outlines?
Posted: 11 September 2012 10:22 AM   [ Ignore ]   [ # 3 ]
Addict
Avatar
RankRankRankRank
Total Posts:  2826
Joined  2007-12-25

Thank you!

I will make this an open, documented script if I can get it working. I’m at work right now, but I hope to be able to work on this tonight.

 Signature 

Shop Zigraphix @ DAZ3D

Profile
 
 
Posted: 12 September 2012 06:21 PM   [ Ignore ]   [ # 4 ]
Addict
Avatar
RankRankRankRank
Total Posts:  2826
Joined  2007-12-25
ketthrove - 10 September 2012 03:02 PM

1.  For this you want to:
  a. Get the Materials from the node
  b. Find the property (findProperty should work for this)
  c. Set the value of the property (setColorValue() is probably what you want unless
  you changed the property to a float property in which case SetValue is what you want)

Ok. In the OutlineGlobals sample script, which I’m working from, there’s a loop in the function function addOutLineIDsToMaterialsProperties() that starts

for( var 0oShape.getNumMaterials(); += ){
     
var oMaterial oShape.getMaterial(k);
     if( 
oMaterial ){
      
var oColorIDProp oMaterial.findPropertyg_sOUTLINE_COLOR_ID_PROPERTY_NAME );
  ... 

How do I format the color value here, where I’ve entered XXXX?

oColorIDProp.setColorValue(g_sOUTLINE_COLOR_ID_PROPERTY_NAMEXXXX); 

I want to manipulate this value with i, so it will change per object in the scene. But I’ve tried a couple of different values and generally the scene turns out all black or the render crashes.

 

 Signature 

Shop Zigraphix @ DAZ3D

Profile
 
 
Posted: 13 September 2012 06:46 AM   [ Ignore ]   [ # 5 ]
Administrator
Avatar
RankRankRankRank
Total Posts:  14256
Joined  2003-10-09

setColorValue takes first a colour, or a time and then a colour, as far as i can see - it looks as if you are passing a string, then trying to add a colour value. I think you want to just put a randomised or procedurally generated colour value in there, with not other values.

 Signature 

DAZ Studio Frequently Asked Questions

Index of free DAZ Studio scripts and plugins list

Profile
 
 
Posted: 13 September 2012 01:26 PM   [ Ignore ]   [ # 6 ]
Addict
Avatar
RankRankRankRank
Total Posts:  2826
Joined  2007-12-25

Should the color value be in hexidecimal format, e.g. #FFFFFF? Quotes, no quotes? Or do I need to construct a value from an RGB triplet?

 Signature 

Shop Zigraphix @ DAZ3D

Profile
 
 
Posted: 13 September 2012 01:34 PM   [ Ignore ]   [ # 7 ]
Administrator
Avatar
RankRankRankRank
Total Posts:  14256
Joined  2003-10-09

As I recall you need to construct from a triplet. - new DzColor( r , g, b) I think, though I know it took a bit of fiddling to get it right.

 Signature 

DAZ Studio Frequently Asked Questions

Index of free DAZ Studio scripts and plugins list

Profile
 
 
Posted: 13 September 2012 06:38 PM   [ Ignore ]   [ # 8 ]
Addict
Avatar
RankRankRankRank
Total Posts:  2826
Joined  2007-12-25

The DAZ Script 2 reference (.../Program Files/DAZ 3D/DAZStudio3/docs/DAZScript/class_color.html) has the constructor as just “Color”, so would I do something like this?

var TheColor Color(rgb); // where r, g, and b are defined integers 0-255
oColorIDProp.setColorValue(TheColor); 

Sorry if these are dumb questions, I’m just having a lot of trouble wrapping my head around this scripting language, especially with changes that still don’t seem to be documented yet….

 Signature 

Shop Zigraphix @ DAZ3D

Profile
 
 
Posted: 14 September 2012 05:04 AM   [ Ignore ]   [ # 9 ]
Administrator
Avatar
RankRankRankRank
Total Posts:  14256
Joined  2003-10-09

That looks right, yes. As I said, it took me a couple of attempts to make it work and it was answering a forum question rather than a script of my own so I don’t have it to refer to.

 Signature 

DAZ Studio Frequently Asked Questions

Index of free DAZ Studio scripts and plugins list

Profile
 
 
Posted: 14 September 2012 08:09 AM   [ Ignore ]   [ # 10 ]
Addict
Avatar
RankRankRankRank
Total Posts:  2826
Joined  2007-12-25

Ok, I’ll play around with it tonight (I’m at work right now) and post my findings. Thanks for the help!

 Signature 

Shop Zigraphix @ DAZ3D

Profile
 
 
Posted: 15 September 2012 07:56 PM   [ Ignore ]   [ # 11 ]
Addict
Avatar
RankRankRankRank
Total Posts:  2826
Joined  2007-12-25

Ok, I’ve pretty much got the unique ColorID part working. The modification to the function addOutLineIDsToMaterialsProperties looks like this:

...
       
oColorIDProp.setPath"Outline" );
       var 
iColor i*19+16;
       var 
jColor j*19+16;
       var 
kColor k*19+16;
       if (
iColor 255{iColor -= 255;}
       
if (jColor 255{jColor -= 255;}
       
if (kColor 255{kColor -= 255;}
       
var TheColor Color(iColorjColorkColor); // where r, g, and b are defined integers 0-255
       
oColorIDProp.setColorValue(TheColor);
... 

I’ve attached sample images of the default 3Delight render, the render produced by the Scripted Renderer, which creates an image of flat colors using the ColorIDs, the outline file using ColorIDs, and the outline file using Normals. I still don’t know if using the ColorIDs would be all that helpful, but it might add some enhancement over just Normals. Anyway, I’m happy to have figured out how to get this working, whether or not I end up using it.

One thing that still confuses me is that the cube, a DS primitive, doesn’t seem to get a ColorID other than (0,0,0), even though I’ve deliberately set the starting point of all ColorID components above 0. Is a DS primitive not a regular node/shape in the scene tree?

Image Attachments
spuggles3Delight.pngspugglesColorID.pngOutline_Frm0_ColorID.pngOutline_Frm0_Normal.png
 Signature 

Shop Zigraphix @ DAZ3D

Profile
 
 
Posted: 16 September 2012 06:44 PM   [ Ignore ]   [ # 12 ]
Addict
Avatar
RankRankRankRank
Total Posts:  2826
Joined  2007-12-25

Progress. I had to switch out the display setup to render the outline images as jpg rather than tif in OutlineRenderScript.dsa, because I couldn’t figure out how to multiply tif images with the regular render to get the outlines, but this is what I have now… first I have to switch to scripted 3Delight and pick the outline script I want to use, render, then switch back to regular 3Delight and render again with my custom camera to pick up the pre-named image and combine it with the regular render.

So next up, I need to figure out how to get a normal render, rather than the color ID render, in the OutlineRenderScript.dsa script. And then I need a script that pulls in the custom camera and alters the Render Engine to Scripted 3Delight and selects my script. Getting closer! Thanks to everyone who has helped. :)

Image Attachments
outline_test_render.png
 Signature 

Shop Zigraphix @ DAZ3D

Profile
 
 
Posted: 17 September 2012 01:38 PM   [ Ignore ]   [ # 13 ]
Active Member
Avatar
RankRank
Total Posts:  818
Joined  2007-01-08

WOW!!! That outline-only picture looks *great*! Congratulations!!!

Profile
 
 
Posted: 18 September 2012 06:56 AM   [ Ignore ]   [ # 14 ]
Addict
Avatar
RankRankRankRank
Total Posts:  2826
Joined  2007-12-25

Wit ‘till you see it combined with my sketch camera. wink

 Signature 

Shop Zigraphix @ DAZ3D

Profile
 
 
Posted: 18 September 2012 10:15 PM   [ Ignore ]   [ # 15 ]
Member
Rank
Total Posts:  121
Joined  2004-10-23
zigraphix - 16 September 2012 06:44 PM

Progress. I had to switch out the display setup to render the outline images as jpg rather than tif in OutlineRenderScript.dsa, because I couldn’t figure out how to multiply tif images with the regular render to get the outlines, but this is what I have now… first I have to switch to scripted 3Delight and pick the outline script I want to use, render, then switch back to regular 3Delight and render again with my custom camera to pick up the pre-named image and combine it with the regular render.

So next up, I need to figure out how to get a normal render, rather than the color ID render, in the OutlineRenderScript.dsa script. And then I need a script that pulls in the custom camera and alters the Render Engine to Scripted 3Delight and selects my script. Getting closer! Thanks to everyone who has helped. smile

I use a loader script to swap out the 3Delight for my own. This opens the door for tons more addons and render engines.

 

Image Attachments
NewD2ODemo.jpg
Profile
 
 
Posted: 19 September 2012 06:06 AM   [ Ignore ]   [ # 16 ]
Addict
Avatar
RankRankRankRank
Total Posts:  2826
Joined  2007-12-25

Yes, that’s the kind of script I had in mind. Is there a reference example you can point me to?

(Octane, eh? I should look into that sometime….)

 Signature 

Shop Zigraphix @ DAZ3D

Profile
 
 
Posted: 23 September 2012 08:46 PM   [ Ignore ]   [ # 17 ]
Member
Rank
Total Posts:  121
Joined  2004-10-23

Works great for DS4.5 too

Image Attachments
Newoctane4.5_.jpg
Profile
 
 
   
1 of 5
1