gpt4 book ai didi

python - 我对 Blender 中的 Python 脚本有一个严重的问题

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

最近我开始主要使用 C++ 和 OpenGL 构建 3D 游戏引擎,但我想用 Python 编写一个脚本来将一些对象从实际场景导出到文件中。一切都成功了,除了我有一些关于 Python API 如何处理对象和不同类型的对象的问题?

代码:

for Lampa in Lamp.Get():          # In this case we are working with lamps
Lampatipus=Lampa.getType()
if Lampa.getParent()==Targy\ # Objects have parents in blender, but it shows error that lamps doesn't have functions like getParent()
and Lampatipus=="Lamp":

self.file.write(Lampa.getName())
self.file.write("\00")

# Lampa beallitasai

Lampa_alap_tomb=array('f', [\
Lampa.LocX, # Shows error message that lamps doesnt have position x...
Lampa.LocY,
Lampa.LocZ,
Lampa.R,
Lampa.G,
Lampa.B,
Lampa.getEnergy()/10.0,
Lampa.color[0],
Lampa.color[1],
Lampa.color[2],
Lampa.color[3]\
])
Lampa_alap_tomb.tofile(self.file)

# Another case:

for Lampa in Jelenet.objects: # In this case we are working with objects
Lampatipus=Lampa.getType()
if Lampa.getParent()==Targy\ # no problem here

self.file.write(Lampa.getName())
self.file.write("\00")

# Lampa beallitasai

Lampa_alap_tomb=array('f', [\
Lampa.LocX,
Lampa.LocY,
Lampa.LocZ,
Lampa.R, # Shows error message that objects doesnt have R (red component of color of a light)
Lampa.G,
Lampa.B,
Lampa.getEnergy()/10.0,
Lampa.color[0],
Lampa.color[1],
Lampa.color[2],
Lampa.color[3]\
])
Lampa_alap_tomb.tofile(self.file)

代码结束!!

例如,如果我想遍历所有灯并将它们的一些属性写入文件中(名称、颜色、父对象等),Python 不会将灯的某些属性识别为所使用的变量由不同的对象。如果我遍历每个对象并首先获取对象的类型(实际上是一盏灯),也会发生同样的事情,但控制台会显示一条错误消息,显示例如点半径或其他任何内容都不是“的属性” blender 对象”。在前面的例子中,我已经解释过Python并没有意识到“Blender Lamp”实际上是一个“Blender Object”,但是“Blender Lamp”也应该保留从“Blender Object”继承的原始属性,正如我认为的那样。因为在 Blender 中,无论对象具有什么类型,它都有位置旋转、缩放等。到目前为止,正如您所知,每个灯都有位置(就像对象一样)以及光属性(光颜色等)但是如果我愿意要获取 Blender 灯的位置,它不起作用,因为它表明这种灯不是一个对象,但在 Blender 中,灯也有位置和一切像普通对象一样。我也没有在 Blender 2.49 python api 文档中找到对灯光位置的引用。

请帮忙!提前致谢...

P。 S.对不起,英语我来自匈牙利,没有职业。以及我用匈牙利语写的一些变量,但我希望你理解这个问题。谢谢

最佳答案

你还在用2.49吗?它现在已经很老了,如果你不使用 2.49,那么 2.49 API 文档将不会有帮助,因为从 2.50 开始,一切都随着 python 改变了。如果您使用的是更新版本,那么您应该找到当前的 blender API documentation更有帮助。

使用最新版本的 blender ,以下内容应该会有所帮助 -

import bpy

for obj in bpy.context.scene.objects:
if obj.type == 'LAMP' and obj.parent == Targy:
print(obj.name)
print(obj.location.x)
print(obj.data.color.r)
print(obj.data.energy)

不要将 obj.colorobj.data.color 混淆。 obj.color 是一个对所有对象都可用的对象属性,但灯使用 obj.data.color 来表示它的光。

关于python - 我对 Blender 中的 Python 脚本有一个严重的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24841165/

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