So I can create a world with python with New()
and I can get a list of worlds linked to a scene with Get()
But…
1/ How do I find out which world is used when I render the scene?
2/ How do I change/swap the world used?
So I can create a world with python with New()
and I can get a list of worlds linked to a scene with Get()
But…
1/ How do I find out which world is used when I render the scene?
2/ How do I change/swap the world used?
That’s exactly what I’ve been trying to find out for my G Buffer script:
https://blenderartists.org/forum/viewtopic.php?t=26324
No one has offered an answer either here or at .org and I can’t find anything in the API docs. It would be very irriating if this was not possible…
I want a world with a black sky to use in a
specular render pass. I make the world but
I can’t get it into the scene or the rendercontext
or whatever.
I screwed around for an hour this morning
with print dir(*) on everything in sight
but I can’t see anything that might work.
I suppose I could workaround using the
render context
or the backbuffer
or deleting/unlinking all the worlds.
But it’s annoying having a hole in the API like that.
Say why don’t you add that into your script –
Production/Specular/Reflexion passes.
I was going to set the specular values to 0 on the materials
and set the NoSpecular flag on all the lamps to do the
production pass.
---------------------------here’s the code for the specular pass----------------------
import Blender
#lamps = [obj for obj in Blender.Object.Get() if obj.getType() == "Lamp"]
meshes = [obj for obj in Blender.Object.Get() if obj.getType() == "Mesh"]
allMats ={}
for mesh in meshes:
for mat in mesh.data.materials:
allMats[mat.name] = mat
#save color settings
colors = {}
for n,mat in allMats.items():
colors[mat] = (mat.R,mat.G, mat.B)
#paint it black
for n,mat in allMats.items():
mat.R= mat.B =mat.G = 0
myScene =Blender.Scene.GetCurrent()
mySettings = myScene.getRenderingContext()
myDir = mySettings.getRenderPath()
mySettings.setRenderPath(myDir+"spec")
mySettings.renderAnim()
mySettings.setRenderPath(myDir)
#restore colors
for mat,col in colors.items():
mat.R, mat.G, mat.B = col