如何解决在VS Code中加载Blender Addon会出现“未命名模块...”错误
我正在尝试使用VS Code和出色的Blender addon来启动旧的Addon。我的文件结构如下:
- __ init__.py#主初始化
- bnr /
- misc /
- 操作员/
- 面板/
- 属性/
- __ init__.py#空初始化
现在,当我尝试通过发出命令Blender: Build and Start
启动插件时,在控制台ModuleNotFoundError: No module named 'bnr.operators'
中收到以下错误,该错误由__init__.py
文件中的这一行引起:
from bnr.operators.load_nodes import NODE_EDITOR_OP_LoadNodes
我猜我还没有设置一些重要的设置,但是我不知道哪个设置。我的__init__.py
文件和设置如下:
__init__.py
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License,or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTIBILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not,see <http://www.gnu.org/licenses/>.
bl_info = {
"name": "Node Renderer","author": "xxx","description": "An Addon for Blender that can automatically vary a set of node parameters based on user defined criteria and render each variation.","blender": (2,80,0),"version": (0,1),"location": "Node Editor Toolbar under Render","category": "Node",# Used for filtering in the addons panel
}
import bpy
from bpy.props import PointerProperty,BoolProperty,BoolVectorProperty
from bnr.operators.load_nodes import NODE_EDITOR_OP_LoadNodes
from bnr.operators.parameter_setup import (
NODE_EDITOR_OP_SaveParameterSetup,NODE_EDITOR_OP_LoadParameterSetup,NODE_EDITOR_OP_LoadDefaultParameters
)
from bnr.operators.render import NODE_OP_Render
from bnr.panels.nodes_panel import NODE_EDITOR_PT_NodesPanel
from bnr.panels.settings_panel import NODE_EDITOR_PT_SettingsPanel
from bnr.properties.properties import (
PG_PublicProps,PG_InternalProps,PG_ParameterEliminationProperties
)
from bnr.properties.socket_props import (
FLOAT_SOCKET_PG_UserProperties,FLOAT_FACTOR_SOCKET_PG_UserProperties,FLOAT_VECTOR_SOCKET_PG_UserProperties,COLOR_SOCKET_PG_UserProperties,)
from bnr.operators.eliminate_parameters import NODE_OP_EliminateParameters
panels = (
NODE_EDITOR_PT_SettingsPanel,NODE_EDITOR_PT_NodesPanel,)
operators = (
NODE_OP_Render,NODE_EDITOR_OP_LoadNodes,NODE_EDITOR_OP_SaveParameterSetup,NODE_EDITOR_OP_LoadDefaultParameters,NODE_OP_EliminateParameters,)
properties = (
PG_PublicProps,PG_ParameterEliminationProperties,FLOAT_SOCKET_PG_UserProperties,)
VEC_TYPES = (bpy.types.NodeSocketVectorXYZ,bpy.types.NodeSocketVector,bpy.types.NodeSocketVectorAcceleration,bpy.types.NodeSocketVectorDirection,bpy.types.NodeSocketVectorTranslation,bpy.types.NodeSocketVectorEuler)
def register():
for c in (*properties,*operators,*panels):
bpy.utils.register_class(c)
# Register the properties on the scene object so it is accessible everywhere
bpy.types.Scene.props = PointerProperty(type=PG_PublicProps)
# Register our internal props on the Scene object
bpy.types.Scene.internal_props = PointerProperty(type=PG_InternalProps)
# Register internal properties for parameter elimination
bpy.types.Scene.pe_props = PointerProperty(type=PG_ParameterEliminationProperties)
# Register boolean property on the node type
bpy.types.Node.node_enabled = BoolProperty(default=False)
bpy.types.Node.node_show = BoolProperty(default=False)
# Register boolean property on the NodeSocket type
bpy.types.NodeSocketStandard.input_enabled = BoolProperty(default=False)
bpy.types.NodeSocketStandard.input_show = BoolProperty(default=False)
bpy.types.NodeSocketFloat.user_props = PointerProperty(type=FLOAT_SOCKET_PG_UserProperties)
bpy.types.NodeSocketFloatFactor.user_props = PointerProperty(type=FLOAT_FACTOR_SOCKET_PG_UserProperties)
bpy.types.NodeSocketColor.user_props = PointerProperty(type=COLOR_SOCKET_PG_UserProperties)
# Override input_enabled for vector types (as we keep x,y and z as separate inputs)
bpy.types.NodeSocketColor.subinput_enabled = BoolVectorProperty(default=(False,False,False))
# Register user props on vector types
for t in VEC_TYPES:
default_min = FLOAT_VECTOR_SOCKET_PG_UserProperties.bl_rna.properties["user_min"]
default_max = FLOAT_VECTOR_SOCKET_PG_UserProperties.bl_rna.properties["user_max"]
subtype = t.bl_rna.properties["default_value"].subtype
subtype = subtype if len(subtype) > 0 else "NONE"
VectorPropertyType = type(
"FLOAT_VECTOR_SOCKET_PG_UserProperties",(bpy.types.PropertyGroup,),{
"user_min": bpy.props.FloatVectorProperty(
name=default_min.name,default=default_min.default_array,description=default_min.description,subtype=subtype),"user_max": bpy.props.FloatVectorProperty(
name=default_max.name,default=default_max.default_array,description=default_max.description,subtype=subtype)
})
bpy.utils.register_class(VectorPropertyType)
t.user_props = PointerProperty(type=VectorPropertyType)
t.subinput_enabled = BoolVectorProperty(default=(False,False))
def unregister():
for c in (*properties,*panels):
bpy.utils.unregister_class(c)
del bpy.types.Scene.props
del bpy.types.Scene.internal_props
del bpy.types.Node.node_enabled
del bpy.types.Node.node_show
del bpy.types.NodeSocketStandard.input_enabled
del bpy.types.NodeSocketStandard.input_show
del bpy.types.NodeSocketFloat.user_props
for t in (*VEC_TYPES,bpy.types.NodeSocketColor):
del t.user_props
del t.subinput_enabled
用户设置JSON
{
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},"window.zoomLevel": 0,"C_Cpp.updateChannel": "Insiders","markdown-pdf.headerTemplate": "<div style=\"font-size: 9px; margin-left: auto; margin-right: 1cm; \"> <span class='date'></span></div>","blender.executables": [
{
"path": "c:\\Program Files\\Blender Foundation\\Blender 2.82\\blender.exe","name": "","isDebug": false
}
],"blender.addon.moduleName": "bnr","explorer.confirmDelete": false,"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。