向Blender场景中的对象添加“属性”

时间:2018-10-10 17:03:38

标签: blender

我主要是从Quake的Radiant开始进入Blender。我正在尝试研究它是否适合我替换关卡编辑器的需求。考虑到这一点,这是我的问题:

用于创建和存储一组预制“实体”对象(例如医疗包,弹药拾取器和“可移动”对象)以使其具有一组可以在Blender中更改的“属性”的最佳方法是什么?

我已经找到了此页面,但是我仍然迷失于如何在每个对象的基础上集成它们并达到期望的结果: https://docs.blender.org/manual/en/dev/editors/properties_editor.html

注意:使用Blender游戏引擎并不是我的目标-只需将值附加到东西上,以导出到我自己的引擎即可。

Edit1:找到了一篇讨论该主题的文章,尽管它似乎已经过时了: https://www.gamasutra.com/blogs/IwanGabovitch/20120524/171032/Using_Blender_3D_as_a_3d_map_editor_rather_than_programming_your_own_from_scratch.php

示例:

// entity 105
{
"inv_item" "2"
"inv_name" "#str_02917"
"classname" "item_medkit"
"name" "item_medkit_11"
"origin" "-150 2322 72"
"triggerFirst" "1"
"triggersize" "40"
"rotation" "0.224951 0.97437 0 -0.97437 0.224951 0 0 0 1"
}

enter image description here

2 个答案:

答案 0 :(得分:1)

虽然我们可以手动将custom properties添加到任何对象,但是它们会添加到特定对象,因此对于每个对象都是唯一的。

集成新属性的更好方法是使用bpy.props,可以将这些属性添加到Blender中的对象类中,这意味着每个对象将具有相同的可用属性。

您可以设置custom panel来编辑属性,例如simple example。属性和面板以及对象导出器都可以在an addon中定义,您可以在启动时启用它,以便每次运行Blender时都可用。插件还使您可以更轻松地与他人共享游戏编辑器。

答案 1 :(得分:0)

我发现的链接似乎是最好的选择,并且具有最大的灵活性。 Super Tux Kart插件的源代码可作为出色的参考实现:

https://sourceforge.net/p/supertuxkart/code/HEAD/tree/media/trunk/blender_26/