Blender > BLENDERMETRY (Блендерметрия)
Blender и национальная безопасность
(1/1)
sungreen:
Всем нам в той или иной степени приходилось пользоваться скриптами в blender, различнымы дополнениями (addons).
Но бывает так, что их не хватает для достижения желаемого эффекта.
На мой взгляд знание кода и умение читать код уже пользительно, а если освоить и его написание, то совсем хорошо.
Поэтому попробую собрать здесь некоторые фрагменты, которые помогут сбросить часть рутины и сделать моделинг еще более приятным.
Через Blender API можно получить доступ и управлять как моделью так и самим интерфейсом программы.
Например, включение русификации интерфейса blender можно выполнить скриптом
--- Код: (Python) ---import bpy
bpy.context.user_preferences.system.use_international_fonts=True
bpy.context.user_preferences.system.language='RUSSIAN'
bpy.context.user_preferences.system.use_translate_interface=True
bpy.context.user_preferences.system.use_translate_tooltips=True
--- Конец кода ---
А следующий пример кода выводит структуру нашего меша.
--- Код: (Python) ---import bpy
for obj in bpy.data.objects:
print(obj.name)
if "Cube" in bpy.data.meshes:
mesh = bpy.data.meshes["Cube"]
dir(mesh)
print("\nVetices list:",len(mesh.vertices))
for v in mesh.vertices:
print(v.index,v.co)
print("\nEdge sctruct:",len(mesh.edges))
for e in mesh.edges:
print("\nedge:",e.index)
for ne in e.vertices:
print(ne,end=' ')
print("\nFace sctruct",len(mesh.faces))
for f in mesh.faces:
print("\nface:",f.index)
for nf in f.vertices:
print(nf,end=' ')
print("\nPolygons sctruct",len(mesh.polygons))
for p in mesh.polygons:
print("\npolygons:",p.index)
for np in p.vertices:
print(np,end=' ')
--- Конец кода ---
Поскольку код ничего не делает кроме как просто выводит структуру меша Cube. Как видно наш куб состоит из 8 вершин, 12 ребер и 6 полигонов.
Каждая вершина описана тройкой координат, ребро - парой вершин, а полигон - списков вершин.
--- Цитировать ---Camera
Cube
Lamp
Vetices list: 8
0 <Vector (1.0000, 1.0000, -1.0000)>
1 <Vector (1.0000, -1.0000, -1.0000)>
2 <Vector (-1.0000, -1.0000, -1.0000)>
3 <Vector (-1.0000, 1.0000, -1.0000)>
4 <Vector (1.0000, 1.0000, 1.0000)>
5 <Vector (1.0000, -1.0000, 1.0000)>
6 <Vector (-1.0000, -1.0000, 1.0000)>
7 <Vector (-1.0000, 1.0000, 1.0000)>
Edge sctruct: 12
edge: 0
0 1
edge: 1
0 3
edge: 2
0 4
edge: 3
1 2
edge: 4
1 5
edge: 5
2 3
edge: 6
2 6
edge: 7
3 7
edge: 8
4 5
edge: 9
4 7
edge: 10
5 6
edge: 11
6 7
Face sctruct 0
Polygons sctruct 6
polygons: 0
0 1 2 3
polygons: 1
4 7 6 5
polygons: 2
0 4 5 1
polygons: 3
1 5 6 2
polygons: 4
2 6 7 3
polygons: 5
--- Конец цитаты ---
[вложение удалено Администратором]
sungreen:
... для тех, кому хочется переключать интерфейс с русского на английский по горячей клавише, посвящается ...
... работает по ALT+R когда мышка на меню/панеле, но можно поправить код на своё усмотрение ...
--- Код: ---import bpy
bl_info = {
"name": "toggle language interface",
"description": "toggle between interface",
"author": "blender-3d.ru",
"version": (1, 0),
"category": "User Interface"
}
class WM_OT_toggle_language(bpy.types.Operator):
bl_idname = "wm.toggle_language"
bl_label = "Toggle Language"
@classmethod
def poll(cls, context):
return context.active_object
def execute(self, context):
if bpy.context.user_preferences.system.language!='ru_RU':
bpy.context.user_preferences.system.language='ru_RU'
else:
bpy.context.user_preferences.system.language='en_US'
bpy.context.user_preferences.system.use_international_fonts=True
bpy.context.user_preferences.system.use_translate_interface=True
bpy.context.user_preferences.system.use_translate_tooltips=True
return {'FINISHED'}
def register():
bpy.utils.register_class(WM_OT_toggle_language)
kc = bpy.context.window_manager.keyconfigs.addon
if kc:
km = kc.keymaps.new(name="Window", space_type="EMPTY")
kmi = km.keymap_items.new('wm.toggle_language', 'R', 'PRESS', alt=True)
def unregister():
bpy.utils.unregister_class(WM_OT_toggle_language)
kc = bpy.context.window_manager.keyconfigs.addon
if kc:
km = kc.keymaps["Window"]
for kmi in km.keymap_items:
if kmi.idname == 'wm.toggle_language':
km.keymap_items.remove(kmi)
break
if __name__ == "__main__":
register()
--- Конец кода ---
[вложение удалено Администратором]
bdancer:
А зачем poll на context.active_object?
Samovar:
--- Цитировать ---... для тех, кому хочется переключать интерфейс с русского на английский по горячей клавише, посвящается ...
... работает по ALT+R когда мышка на меню/панеле, но можно поправить код на своё усмотрение ...
--- Конец цитаты ---
Спасибо, полезная утилита! Поставил на F9.
Навигация
Перейти к полной версии