Display World background en code

Posté par tsurubaso le 15/9/2018 9:11:31
Bonjour à tous et toutes,

je suis ravi de remettre les pieds virtuellement ici.

Le Clan, m'a indirectement aidé bien des fois.

Et c'est avec ma connaissance acquise par l'aide de tous ici,

que j'ai pu mettre en place quelques lignes de code que nous

utilisons tous les jours au Boulot.

Je vis toujours au Japon, j'ai du changé de job trois fois depuis mon dernier post sur le forum mais bon....

Donc...

Je suis photographe et je fais des images HDRI pour le travail.

Des 360 degres.

Et en ce moment je m'amuse avec un bout de code.

L'objectif est en utilisant Python de créer des "world background" avec une image 360.

Je sais pas encore ce que je vais en faire, mais c'est l'autochallenge du moment.

Donc là je bute sur deux points.

Mais voici le code fait d'emprunts de ci et de là.





import bpy

#mettre en place Cycle et le node tree

scn = bpy.context.scene
scn.render.engine = 'CYCLES'
scn.world.use_nodes = True
wd = scn.world

# effacer tout ce qui traine, et vlan
OBJJ= bpy.ops.object
OBJJ.select_by_type(extend=False, type='MESH')
OBJJ.delete()
OBJJ.select_by_type(extend=False, type='LAMP')
OBJJ.delete()

#creer une texture y mettre l'image, connectrer tout ça.

bpy.ops.texture.new()
nt = bpy.data.worlds[wd.name].node_tree
#désolé pour le naming, c'est de l'emprunt
gradNode = nt.nodes.new(type="ShaderNodeTexEnvironment")
  

backNode = nt.nodes['Background']
gradNode.location.x = backNode.location.x-300
gradNode.location.y = backNode.location.y

gradColOut = gradNode.outputs['Color']
backColIn = backNode.inputs['Color']
nt.links.new(gradColOut, backColIn)

mat = bpy.data.materials['Material']
tex = bpy.data.textures.new("SomeName", 'IMAGE')
slot = mat.texture_slots.add()
slot.texture = tex

#Une image sur mon PC, ref
bpy.ops.image.open(filepath="C:\\IMG_3015.JPG", directory="C:\\", files=[{"name":"IMG_3015.JPG", "name":"IMG_3015.JPG"}], relative_path=True, show_multiview=False)




Tout marche bien mais
1)
Je n'arrive pas à rendre actif le World bacground (Display)
j'ai essayé
bpy.types.SpaceView3D.show_world
bpy.context.space_data.show_world = True Mais bon là c'est logique.
il doit surement y avoir quelque chose avec

bpy.data.screens['Scripting']. mais je n'arrive pas à trouver la suite

2)
Il faut que je rende active mon image, pour qu'elle soit visible. Mais bon chaque jour suffit sa peine.

Post un peu long, désolé.

Je vous remercie d'avance de l'aide que vous pourrez m'apporter,

tsurubaso

Cette contribution était de : http://blenderclan.tuxfamily.org/html/newbb/viewtopic.php?forum=2&topic_id=48558&post_id=573517