gpt4 book ai didi

python - 用于原始 blender 导出器的 blender python 脚本

转载 作者:太空宇宙 更新时间:2023-11-03 19:24:07 25 4
gpt4 key购买 nike

我正在尝试编写一个非常基本的导出到 blender (从原始形状)脚本。我必须以不同的角度和位置绘制圆柱体。我有偏移位置和尺寸的信息。

import bpy
import bgl
from mathutils import *
from math import *

material = bpy.data.materials.new('red')
material.diffuse_color = (1.0,0.0,0.0)


def draw_cylinder(name,material,radius,depth,location,rotation,offsetPosition,offsetAngle):

bgl.glRotatef(*offsetAngle[:4])
bgl.glTranslatef(*offsetPosition[:3])

bpy.ops.mesh.primitive_cylinder_add(radius=radius, depth=depth, location=location, rotation=rotation)

Cylinder = bpy.context.active_object
Cylinder.name = name
Cylinder.active_material = material

bgl.glTranslatef(*[i*-1 for i in offsetPosition[:3]])
bgl.glRotatef(*[i*-1 for i in offsetAngle[:4]])

return Cylinder

cmpt = draw_cylinder('first',material,radius=1,depth=2,location=(-1,0,0),rotation=(pi/2,0,0),offsetPosition=(10,2,7),offsetAngle=(pi/2,0,1,0))

这不会在 (9,2,7) 处绘制圆柱体 [也不会沿 y 轴旋转] 我哪里错了?我该如何纠正这个问题。非常感谢您的帮助。

编辑:使用 Blender 版本 2.60(python 交互式控制台 3.2.2)输出显示圆柱体,位于 (-1,0,0)。我期望/需要它位于 (9,2,7) (location+offsetPosition)

最佳答案

在函数draw_cylind中,您需要将两个向量相加:

pos = (
location[0]+offsetPosition[0],
location[1]+offsetPosition[2],
location[1]+offsetPosition[2],
)

然后

bpy.ops.mesh.primitive_cylinder_add(radius=radius, depth=depth, location=pos, rotation=rotation)

[编辑]如果您需要更复杂的操作,请查看 mathutils library .

关于python - 用于原始 blender 导出器的 blender python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8819325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com