BlenderCN论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2816|回复: 10

【节省GPU资源的脚本】像MODO那样显示

[复制链接]
发表于 2013-8-27 16:15:15 | 显示全部楼层 |阅读模式
本帖最后由 相当画家的色盲 于 2013-8-28 13:00 编辑

wire鎻掍欢.gif
很久以前用MODO,MODO的VIEWPORT里,你选中哪个物体,哪个物体就着色显示,其他都是线框,我觉得这样很好,大场景很爽快。
但是到了BLENDER没有这功能,所以一直想自己写一个但不会python,昨天没事研究下
(刚才又试了试,作为插件在BLENDER 2.68A官方版里竟然OK了)
用法1:把附件压缩包里的happy wire.py文件放到blender的addon目录,然后重开blender,插件里就有个叫happy wire的了,开启它后,在时间栏上面的VIEW里会出现一个新选项,按它,就启动了。按ESC退出这个功能。
用法1可能有问题,因为我不知道究竟怎么弄成插件…………胡乱弄

用法2:1 把下面代码复制到TEXT EDITOR里(你可能要新建一个TEXT),然后按RUN SCRIPT,然后就可以关掉TEXT EDITOR了。
           2 在时间栏上面那个VIEW里面会出现一个新选项,按它,就启动了。
           3 要退出这种显示状态时,按ESC即可。全部恢复为着色状态。




  1. bl_info = {"name":"Happy Wire","autor":"Frederick","version":(1,0),"blender":(2,6,8),"location":"View3D>Object>Happy Wire","description":"make your computer happy","warning":"","wiki_url":"","tracker_url":"","category":"Object"}

  2. import bpy

  3. class ModalTimerOperator(bpy.types.Operator):
  4.     """Let video card Happy"""
  5.     bl_idname = "wm.modal_timer_operator"
  6.     bl_label = "Make your computer Happy"
  7.     obj_now = bpy.context.active_object
  8.     _timer = None
  9.     def modal(self, context, event):
  10.         if event.type == 'ESC':
  11.             for obj in bpy.context.scene.objects:
  12.                         if obj.type == 'MESH':
  13.                             obj.draw_type = 'TEXTURED'
  14.             return self.cancel(context)
  15.         if event.type == 'TIMER':
  16.             # change BOUNDS OBJECTs
  17.             if self.obj_now:
  18.                 if self.obj_now != bpy.context.active_object:
  19.                     for obj in bpy.context.scene.objects:
  20.                         if obj.type == 'MESH':
  21.                             obj.draw_type = 'WIRE'
  22.                     self.obj_now = bpy.context.active_object
  23.                     self.obj_now.draw_type = 'TEXTURED'
  24.                
  25.         return {'PASS_THROUGH'}
  26.     def execute(self, context):
  27.         self._timer = context.window_manager.event_timer_add(0.1, context.window)
  28.         context.window_manager.modal_handler_add(self)
  29.         return {'RUNNING_MODAL'}
  30.     def cancel(self, context):
  31.         context.window_manager.event_timer_remove(self._timer)
  32.         return {'CANCELLED'}
  33. def add_object_button(self,context):
  34.     self.layout.operator(ModalTimerOperator.bl_idname,text=ModalTimerOperator.__doc__,icon="PLUGIN")
  35. def register():
  36.     bpy.utils.register_class(ModalTimerOperator)
  37.     bpy.types.VIEW3D_MT_view.append(add_object_button)
  38. def unregister():
  39.     bpy.utils.unregister_class(ModalTimerOperator)
  40.     bpy.types.VIEW3D_MT_view.remove(add_object_button)
  41. if __name__ == "__main__":
  42.     register()
  43.     # test call
  44.     #bpy.ops.wm.modal_timer_operator()
复制代码
happy wire.rar (875 Bytes, 下载次数: 637)
发表于 2013-8-27 16:39:36 | 显示全部楼层
沙发
回复 支持 反对

使用道具 举报

发表于 2013-8-27 16:48:23 | 显示全部楼层
顶顶顶顶
回复 支持 反对

使用道具 举报

发表于 2013-8-27 16:49:04 | 显示全部楼层
你可以把gif链接到BA论坛,我一直这么做的。

点评

果然可以!哈哈  详情 回复 发表于 2013-8-27 17:18
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-27 17:18:44 | 显示全部楼层
nirenyang 发表于 2013-8-27 16:49
你可以把gif链接到BA论坛,我一直这么做的。

果然可以!哈哈

点评

这功能很实用,应该去官方建议一下,变成官方功能…… 话说官方为何没“着色+ 线框”模式啊,几乎每个 3D 软件都有这个显示模式啊……  详情 回复 发表于 2013-8-28 18:38
回复 支持 反对

使用道具 举报

发表于 2013-8-27 17:20:25 | 显示全部楼层
感谢,又多了一个例子学习了
回复 支持 反对

使用道具 举报

发表于 2013-8-27 19:31:29 | 显示全部楼层
不错学习了
回复 支持 反对

使用道具 举报

发表于 2013-8-27 22:36:13 | 显示全部楼层
除了线框 一些多物件的地方是否 多个 bouding box 选项就更好了 。
改改就好了=-=
回复 支持 反对

使用道具 举报

发表于 2013-8-28 11:03:32 | 显示全部楼层
原的脚本果然不错,哈哈,学习了。
回复 支持 反对

使用道具 举报

发表于 2013-8-28 11:17:09 | 显示全部楼层
注册成插件出错用这个方法
obj_now = "bpy.context.active_object"
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Blender最新中文教学视频|Blender头条|小黑屋|手机版|Archiver|Blender中国 ( 蜀ICP备17002929号 )360网站安全检测平台

GMT+8, 2019-12-11 16:09 , Processed in 0.028055 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表