blender脚本更改显示物体名称样式

本文介绍如何在Blender中自定义显示物体名称,通过编写Python脚本实现名称放大和颜色调整。首先开启开发选项和Python工具提示,安装view3d插件,然后在文本编辑器中编写并运行脚本。代码利用bpy_extras.view3d_utils将3D坐标转换为2D坐标,并在视图中绘制物体名称。最终结果是高亮且易于阅读的物体名称。适用于Blender初学者提升界面交互体验。
摘要由CSDN通过智能技术生成

主要参考这位大佬的文章改写的。
物体名称显示可以在属性栏那里,物体属性->视图显示->勾选“名称”,就可以显示名称,但是名称显示太小看不清楚,颜色也是黑的,于是瞎折腾就有了以下这些操作。
作为新手先多说下blender配置,不然,没法调出来执行,熟悉的可以跳过

界面配置

以本人blender 2.92为例,先打开配置窗口,菜单“编辑”->“偏好设置”。

  1. 勾选“开发选项”,不然没法找到自己写的脚本插件
    勾选“python工具提示”,对写脚本很方便,鼠标放那,就会提示对应调用的API
    在这里插入图片描述

  2. 安装一个view3d插件,不然调用bpy_extras.view3d_utils会报错,没有这个模块
    在这里插入图片描述

  3. 调出文本编辑界面
    在这里插入图片描述
    先多拉出来一个界面,在左上角下拉选中“文本编辑器”图标切换到文本编辑界面

显示物体名称

参考大佬的代码,主要是先获取将物体的location从3D坐标转化为viewport显示界面的2d坐标,用bpy_extras.view3d_utils.location_3d_to_region_2d函数。再调用bpy.types.SpaceView3D.draw_handler_add画出来。
具体代码如下:

import bpy
import bgl
import blf
import bpy_extras
from bpy_extras import view3d_utils

class show_name_tool(bpy.types.Operator):
    bl_idname = "show.largername"
    bl_label = "larger name"
    bl_description = "display additional information in the 3D viewport"
    bl_options = {"REGISTER", "UNDO"}
    
    def show_name(self, context):
        rgb_label = (1, 1.0, 1.0, 1.0)
        font_size = 16
        font_id = 0
        list_obj = bpy.data.objects
        for ob in list_obj:
            if ob.show_name:
                #ob = context.object
                v = self.gl_pts(context, ob.location)
                bgl.glClearColor(*rgb_label)
                if v:
                    blf.color(font_id, rgb_label[0], rgb_label[1], rgb_label[2], rgb_label[3])
                    blf.size(font_id, font_size, 72)
                    blf.position(font_id, v[0], v[1], 0)
                    blf.draw(font_id, ob.name)
            
    def gl_pts(self, context, v):
        return bpy_extras.view3d_utils.location_3d_to_region_2d(context.region, context.space_data.region_3d, v)
    
    def execute(self, context):
        bpy.types.SpaceView3D.draw_handler_add(self.show_name, (context,), 'WINDOW', 'POST_PIXEL')
        
        return {'FINISHED'}
    
def register():
    bpy.utils.register_class(show_name_tool)
    
def unregister():
    bpy.utils.unregister_class(show_name_tool)
    
if __name__ == '__main__':
    register()

手动运行

  1. 点击在这里插入图片描述文本编辑这个图标,快捷键alt+p,安装这个自己写的插件。再空格调出搜索界面在这里插入图片描述
    或者在菜单栏,“编辑”->“操作搜索”或“菜单搜索”也可以调出这个界面。然后搜索bl_label 对应的值,这里是larger name。就可以运行插件了。
  2. 查看运行结果是否正常,可以在菜单栏,“窗口”->“切换系统控制台”,查看运行结果
    在这里插入图片描述
  3. 代码添加了条件,需要显示的物体,勾选显示物体名称,才会显示改变改变样式的名称
    在这里插入图片描述
    自己可以把相关代码删除。
  4. 鼠标选择下物体,才会切换显示效果。应该还可以优化下,不用点击的呀!
    具体显示的效果:
    在这里插入图片描述
    脚本新手可以查看官方教程,网上大多贴的也是官方的教程
    官方脚本简介
    官方脚本API
    引用的大佬文章
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值