Автор Тема: Модификаторы объектов на python.  (Прочитано 6926 раз)

Оффлайн -andrey-

  • Житель
Re: Модификаторы объектов на python.
« Ответ #15 : 28 Октябрь 2016, 19:35:25 »
... вот массив (список) всех вершин меша Cube (кубика по умолчанию)  ...
Код: python
import bpy
vs=[v.co for v in bpy.data.meshes['Cube'].vertices]
print(vs)
спасибо.
я так понимаю он запишется в список? как таковой массив не объявляется в phython?ну и так хорошо, а как поверхности?
vs=[v.co for v in bpy.data.meshes['Cube'].surface]?
алгоритмы я конечно тут и буду выкладывать, разработать хороший способ и алгоритм - далеко не плёвое дело, и потребуются подсказки по возможностям среды. список вершин конечно надо, но надо и поверхности и к ним вершины. потом я узнаю что может python, это на киберфоруме, а разрабатывать буду тут.

Оффлайн sungreen

  • ...
  • Житель
  • Kostroma mon amour
    • sungreen.github.io
Re: Модификаторы объектов на python.
« Ответ #16 : 28 Октябрь 2016, 19:40:59 »
... а чтобы ты хотел видеть в surface? ...

... в понятиях меша это коллекции вершин, ребер, полигонов https://www.blender.org/api/blender_python_api_2_78a_release/bpy.types.Mesh.html#bpy.types.Mesh

... в предыдущем сообщении привёл пример с вершинами, можешь попробовать с другими коллекциями:
    Mesh.vertices (3 points in space)
    Mesh.edges (reference 2 vertices)
    Mesh.loops (reference a single vertex and edge)
    Mesh.polygons: (reference a range of loops)
Для Кота

Оффлайн LanuHum

  • Житель
Re: Модификаторы объектов на python.
« Ответ #17 : 28 Октябрь 2016, 19:50:34 »
... вот массив (список) всех вершин меша Cube (кубика по умолчанию)  ...
Код: python
import bpy
vs=[v.co for v in bpy.data.meshes['Cube'].vertices]
print(vs)
спасибо.
я так понимаю он запишется в список? как таковой массив не объявляется в phython?ну и так хорошо, а как поверхности?
vs=[v.co for v in bpy.data.meshes['Cube'].surface]?
алгоритмы я конечно тут и буду выкладывать, разработать хороший способ и алгоритм - далеко не плёвое дело, и потребуются подсказки по возможностям среды. список вершин конечно надо, но надо и поверхности и к ним вершины. потом я узнаю что может python, это на киберфоруме, а разрабатывать буду тут.
С поверхностями начнутся проблемы. Полигоны есть.  bpy.data.meshes['Cube'].polygons.  У полигонов есть индексы вершин, согласно которых можно определить координаты вершин полигона, но использовать это, практически, можно в нескольких процентах из 100. В остальных случаях нужно то высчитывать tessfaces, то обращаться к модулю bmesh, то и то, и другое одновременно.

Оффлайн -andrey-

  • Житель
Re: Модификаторы объектов на python.
« Ответ #18 : 28 Октябрь 2016, 20:29:23 »
Ну если есть индексы вершин, то где-то по этим индексам можно узнать их координаты?

Оффлайн -andrey-

  • Житель
Re: Модификаторы объектов на python.
« Ответ #19 : 28 Октябрь 2016, 21:08:23 »
нужно просто где-то брать информацию о полигонах и их вершинах. это пока всё что нужно.

Оффлайн LanuHum

  • Житель
Re: Модификаторы объектов на python.
« Ответ #20 : 28 Октябрь 2016, 21:29:18 »
Ну если есть индексы вершин, то где-то по этим индексам можно узнать их координаты?
Ни где-то, а из созданного ранее списка вершин vs.

Код
faces_with_coords = []
for p in bpy.data.meshes['Cube'].polygons:
    face_with_coords = []
    for v in p.vertices:
        face_with_coords.append(vs[v][:])
    faces_with_coords.append(face_with_coords)

 :)


Оффлайн -andrey-

  • Житель
Re: Модификаторы объектов на python.
« Ответ #21 : 28 Октябрь 2016, 21:35:00 »
Спасибо. Я пока книг накачал по скриптингу, надо почитать, ознакомиться.

Оффлайн -andrey-

  • Житель
Re: Модификаторы объектов на python.
« Ответ #22 : 30 Октябрь 2016, 13:50:16 »
Подскажите пожалуйста, как получить информацию о выделенных в режиме редактирования компонентах объекта.

Оффлайн sungreen

  • ...
  • Житель
  • Kostroma mon amour
    • sungreen.github.io
Re: Модификаторы объектов на python.
« Ответ #23 : 30 Октябрь 2016, 17:18:59 »
... у выделенных "компонентах объекта" обычно присутствует свойство select и его значение True ...
например
для вершин полисетки: https://www.blender.org/api/blender_python_api_current/bpy.types.MeshVertex.html#bpy.types.MeshVertex.select
для ребер полисетки: https://www.blender.org/api/blender_python_api_current/bpy.types.MeshEdge.html#bpy.types.MeshEdge.select
...
Для Кота

Оффлайн -andrey-

  • Житель
Re: Модификаторы объектов на python.
« Ответ #24 : 30 Октябрь 2016, 20:30:24 »
Проблема такая, вот код
Код
import bpy


class Instrument(bpy.types.Panel):
    """Creates a Panel in the Object properties window"""
    bl_label = "Hello World Panel"
    bl_idname = "OBJECT_PT_hello"
    bl_space_type = 'PROPERTIES'
    bl_region_type = 'WINDOW'
    bl_context = "object"

    def draw(self, context):
        layout = self.layout

        obj = context.object

        row = layout.row()
        row.label(text="Hello world!", icon='WORLD_DATA')

        row = layout.row()
        row.label(text="Active object is: " + obj.name)
        row = layout.row()
        row.prop(obj, "name")

        row = layout.row()
        row.operator("mesh.primitive_cube_add")


def register():
    bpy.utils.register_class(Instrument)


def unregister():
    bpy.utils.unregister_class(Instrument)


if __name__ == "__main__":
    register()
работает, но как только я меняю строки по этому уроку
http://blender3d.com.ua/sozdaniye-dopolneniya-addona-dlya-blender/
на
Код
class Instrument(bpy.types.Panel):
    """Creates a Panel in the Object properties window"""
    bl_label = "Hello World Panel"
    bl_space_type = 'VIEW 3D'
    bl_region_type = 'TOOLS'
то перестает работать и выдает ошибку с текстом
Цитировать
Python script fail, look in the console for now...

Оффлайн sungreen

  • ...
  • Житель
  • Kostroma mon amour
    • sungreen.github.io
Re: Модификаторы объектов на python.
« Ответ #25 : 30 Октябрь 2016, 20:40:29 »
>> Python script fail, look in the console for now...
... так и что же написано в консоле? ...
Для Кота

Оффлайн -andrey-

  • Житель
Re: Модификаторы объектов на python.
« Ответ #26 : 30 Октябрь 2016, 20:56:17 »
Цитировать
PYTHON INTERACTIVE CONSOLE 3.5.1 (default, Feb 17 2016, 17:09:19) [MSC v.1800 64 bit (AMD64)]

Command History:     Up/Down Arrow
Cursor:              Left/Right Home/End
Remove:              Backspace/Delete
Execute:             Enter
Autocomplete:        Ctrl-Space
Zoom:                Ctrl +/-, Ctrl-Wheel
Builtin Modules:     bpy, bpy.data, bpy.ops, bpy.props, bpy.types, bpy.context, bpy.utils, bgl, blf, mathutils
Convenience Imports: from mathutils import *; from math import *
Convenience Variables: C = bpy.context, D = bpy.data

>>>

Оффлайн sungreen

  • ...
  • Житель
  • Kostroma mon amour
    • sungreen.github.io
Re: Модификаторы объектов на python.
« Ответ #27 : 30 Октябрь 2016, 20:58:39 »
... тебе нужно запустить blender из консоли, открыть в нем свой проект и запустить скрипт ...
... после того как проскочит сообщение об ошибке, посмотреть его содержание и принести сюда ...
Для Кота

Оффлайн -andrey-

  • Житель
Re: Модификаторы объектов на python.
« Ответ #28 : 30 Октябрь 2016, 21:00:16 »
я не умею блендер из консоли запускать  :-\  . ОС windows. сейчас почитаю как запускать.

Оффлайн LanuHum

  • Житель
Re: Модификаторы объектов на python.
« Ответ #29 : 30 Октябрь 2016, 21:09:09 »

    bl_space_type = 'VIEW 3D'

VIEW_3D пропущена чёрточка :)

 


Яметрика

* По форуму

* Рекламный блок

* Последние вложения

1 (1).png
Скачано: 68
Автор: LEXA ANЭGROWND
blender.png
Скачано: 78
Автор: ipv2007
4.png
Скачано: 100
Автор: hiroyukiss
2.png
Скачано: 122
Автор: hiroyukiss

Скачано: 112
Автор: Dilifa12