3

我按照这本电子书 Programming Add-Ons for Blender 2.5中的说明设置开发环境。

目前我尝试调试一个名为 Bloop 的已安装附加组件,尽管它似乎可以工作,但 Eclipse 仍然显示许多错误消息,例如:

class Mapping(object):

    def __init__(self, joint=None, id=None, bone=None, other=None):
        ...
        self.bone_matrix = bpy.bloop.armature.matrix_world.inverted() * self.bone.bone.matrix_local.inverted()
                               ^^^^
                               ErrorMsg: Undefined variable from import: bloop

外部库配置如下:

在此处输入图像描述

Blenders 版本是 2.67,插件是为 2.59 开发的。我完全没有在搅拌机中使用 Python 的经验。

另一种类型的错误是:

Unresolved import: MappingSet   bloop.py

from .mapping_set import MappingSet

MappingSet 与尝试导入的 bloop.py 位于同一文件夹中。

项目结构如下(我没有源文件夹,因为我想就地编辑)

在此处输入图像描述

我究竟做错了什么?

至少抑制错误消息的解决方法是在这些行的末尾使用#@UnresolvedImport 和#@UndefinedVariable。

4

1 回答 1

1

我设置了不同的调试,但仍然基于 lux-render 教程。

首先,创建一个 .py 文件,我们将其命名为 debug.py,其中将包含一个函数,我们稍后将调用该函数来设置调试。将此文件放在与__init__.py模块主文件相同的文件夹中。根据 lux-renderer 教程,添加以下代码,更新 PYDEV_SOURCE_DIR。

import sys

def startdebug():
    try:
        # set the PYDEV_SOURCE_DIR correctly before using the debugger
        PYDEV_SOURCE_DIR = 'C:\Program Files\eclipse\plugins\org.python.pydev.debug_2.5.0.2012040618\pysrc'

        # test if PYDEV_SOURCE_DIR already in sys.path, otherwise append it
        if sys.path.count(PYDEV_SOURCE_DIR) < 1:
            sys.path.append(PYDEV_SOURCE_DIR)

        # import pydevd module
        import pydevd

        # set debugging enabled
        pydevd.settrace(None, True, True, 5678, False, False)
    except:
        pass

设置 PYDEV_SOURCE_DIR 时,请确保将其指向 org.python.pydev.debug_xxxxx。还有另一个与此类似的文件夹。为确保您拥有正确的文件夹,它将包含一个 /pysrc 文件夹。

现在在您的 main__init__.py中,这必须在任何其他导入语句之前才能正常工作。直接在 bl_info 部分下添加以下内容,因为奇怪的是搅拌器会自行解析。

DEBUGGING = True
if(DEBUGGING):
    import debug
    debug.startdebug()

将它放在这里可以避免像 lux-render 教程那样添加每个文件的跟踪。

  1. 在附加组件文件夹中的版本中添加一些断点,
  2. 切换到调试视角,
  3. 启动 Eclipses 调试服务器,
  4. 启动搅拌机
  5. 运行脚本,它将到达断点。

我发现人们遇到的常见问题:

  • 指向错误的pydev调试文件夹的路径,确保有一个/pysrc文件夹
  • 当 Pydev 更新时,更新 PYDEV_SOURCE_DIR 因为 debug_xxxxx 将发生变化
  • 没有运行 Eclipse 服务器,
  • 在文件的本地副本而不是 blender 附加目录中的版本上设置断点
  • 保存脚本并不意味着 Blender 会重新加载它、使用 imp、禁用/重新启用插件或重新启动 Blender。

有很好的说明设置搅拌机和 Eclipse 以进行调试。 http://wiki.blender.org/index.php/User:Z0r/PyDevAndProfiling

虽然这适用于搅拌机游戏引擎,但其中大部分适用于普通搅拌机。希望这有帮助!

编辑:我删除它是因为我觉得这不能回答你的问题。但是,既然你坚持了,那就是在这里。

于 2014-07-25T16:46:27.527 回答