混合器脚本错误纹理添加

2024-06-26 10:32:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个python脚本,可以自动向DAE模型添加纹理。在

用法:blender--background--python脚本.py

此脚本错误地显示了纹理:

import bpy
from math import pi
from mathutils import Quaternion

myscale = 0.1;
daepath = "input.dae"

bpy.ops.wm.read_factory_settings(use_empty=True)

# Import Dae
bpy.ops.wm.collada_import(filepath=daepath)

# Rotate
bpy.ops.transform.rotate(value=-pi/2, constraint_axis=(False, True, True))
bpy.ops.transform.resize(value=(myscale, myscale, myscale))

# Change to orthographic view and switch to topview
bpy.context.screen.areas[2].type = 'VIEW_3D'
rv3d = bpy.context.screen.areas[2].spaces[0].region_3d
rv3d.view_rotation = Quaternion((1.0, 0.0, 0.0, 0.0))
rv3d.view_perspective = "ORTHO"
rv3d.view_distance += 1000.0

# Unwrap
bpy.ops.object.mode_set(mode = 'EDIT')
bpy.ops.mesh.select_all(action = 'SELECT')
for oWindow in bpy.context.window_manager.windows:
    oScreen = oWindow.screen
    for oArea in oScreen.areas:
        if oArea.type == 'VIEW_3D':  
            for oRegion in oArea.regions:
                if oRegion.type == 'WINDOW':
                    override = {'window': oWindow, 'screen': oScreen, 'area': oArea, 'region': oRegion, 'scene': bpy.context.scene, 'edit_object': bpy.context.edit_object, 'active_object': bpy.context.active_object, 'selected_objects': bpy.context.selected_objects}
                    bpy.ops.uv.project_from_view(override , camera_bounds=False, correct_aspect=True, scale_to_bounds=True)
bpy.ops.object.mode_set(mode = 'OBJECT')

# Add Texture
imgpath = "input.jpg"
img = bpy.data.images.load(filepath=imgpath)
mat = bpy.data.materials['m0DefaultMaterial']
mat.diffuse_intensity = 1.0
mat.specular_intensity = 0.0
tex = bpy.data.textures.new("SomeName", 'IMAGE')
tex.image = img
slot = mat.texture_slots.add()
slot.texture = tex

# Save Dae
bpy.ops.wm.collada_export(filepath="output.dae")

如果我将脚本分成两部分(在“展开”部分之前有一部分)并运行它们的in-Blender

  1. 打开应用程序
  2. 选择脚本模式
  3. 运行中打开.py文件

我得到了正确的结果。在

failure_correct

我正在寻找所有类似的问题,但我找不到这种脚本行为的原因。在

请告诉我,错误在哪里?在


Tags: inimport脚本viewtrueobjectmodecontext