Я пытаюсь установить фон World Texture в Blender 2.49.
Я сделал текстуру:
import Blender
from Blender import *
import bpy
world = World.GetCurrent()
worldTex = Texture.New('worldTex')
worldTex.setType('Image')
worldIm = Image.Load('//blender_scene/tex/bg 001.jpg')
worldIm.source = Image.Sources.SEQUENCE
worldTex.setImage(worldIm)
Когда я пытаюсь применить к миру, это будет бросать и ошибочно, потому что по умолчанию world.textures содержит кортеж None. поэтому это не сработает:
world.textures[0].tex = worldTex
Я сделал материал, чтобы получить экземпляр MTex:
worldMat = Material.New('WorldMat')
worldMat.setTexture(worldTex)
Если я попытаюсь установить первую текстуру:
world.textures[0] = worldMat.textures[0]
Это вызовет ошибку, поскольку я не могу присвоить значение уже инициализированному кортежу.
Если я попытаюсь заменить его:
world.textures = worldMat.textures
Я получаю еще одну ошибку:
TypeError: expected tuple or list containing world MTex objects and NONE
Объекты 'world MTex заставили меня немного подумать. Есть ли еще какой-то объект MTex? мировой MTex? Где он определяется, как я могу создать экземпляр?
Или, как говорится в заголовке... как установить текстуру в мир?
Спасибо
Blender 2.5x имеет гораздо лучший API Python. Я действительно рекомендую прочесть это видео из PyCon от Кристофера Уэббера.
Настройка текстуры в API 2.5x:
import bpy
# create new clouds texture
bpy.ops.texture.new()
t = bpy.data.textures[-1]
# set World texture
w = bpy.data.world['World']
slot = w.texture_slots.add()
slot.texture = t
slot.use_map_horizon = True