Вопросы по написанию плагинов

Список разделов Blender 3D Плагины

Описание: Обсуждение расширений для Blender
Модератор: exooman

Сообщение #81 Pavel » 10.04.2020, 13:00

Как с помощью питона в 2.82 сохранить результат рендера в папку (результат рендера одного кадра)?
Вот я вызываю рендер кадра:
Код: Выделить всё
bpy.ops.render.render(animation=False)
А как найти среди изображений именно результат рендера и сохранить его? По имени искать - не вариант, так как имя может быть любым.

Добавлено спустя 17 минут:
Вопрос закрыт.
Pavel M
Аватара
Сообщения: 1100

Сообщение #82 Pavel » 01.05.2020, 20:56

Возможно ли изменить заголовок окна? Например, окно редактора нодов NODE_HT_header. Просто я добавил новый тип окна нодов и мне нужно, чтобы в моём окне по другому выглядело меню. Я хочу его полностью удалить и добавить новое. И я хочу удалить для своего окна функции привязки к сетке и кнопку для создания нового блока данных дерева нодов. Просто моя нодовая система будет полностью кастомной. Она будет иметь уникальные ноды, вроде этих:
Изображение

Мне все стандартные функции редактора нодов не нужны. В общем нужно удалить всё, но не затрагивая стандартные нодовые системы. В идеале мне нужно в функцию отрисовки заголовка на лету добавить в начало этот код:
Код: Выделить всё
snode = context.space_data
if snode.tree_type == 'MyNodeTree':
    return
Pavel M
Аватара
Сообщения: 1100

Сообщение #83 ZiCVIZ » 07.05.2020, 09:35

Приветствую

не могу создать список по типа этого в UI->VIEW_3D
может кто-нибудь подскажет код ?

вот сама панель ... содержит список всех текстур в бленд файле


Изображение
ZiCVIZ M
Сообщения: 7

Сообщение #84 Pavel » 07.05.2020, 12:23

ZiCVIZ, я пока не знаю, как сделать список с возможностью удалять и создавать изображения, но знаю, как создать обычный список:
Изображение

Код: Выделить всё
import bpy


def draw(self, context):
    self.layout.prop_search(context.object, 'image', bpy.data, 'images', text='')


bpy.types.Object.image = bpy.props.StringProperty()
bpy.types.VIEW3D_HT_header.append(draw)
Pavel M
Аватара
Сообщения: 1100

Сообщение #85 mac7 » 07.05.2020, 16:16

Pavel писал(а):, я пока не знаю, как сделать список с возможностью удалять и создавать изображения,
через self.layout.template_ID
mac7 M
Аватара
Откуда: Луцьк
Сообщения: 315

Сообщение #86 Pavel » 07.05.2020, 17:04

mac7, а что писать вместо параметров data и property?:
UILayout.template_ID

Чтобы получить список всех изображений. Я смотрел исходники интерфейса и там используется такой код:
Код: Выделить всё
template_ID(bpy.context.space_data, 'image')

Но как получить такой же выпадающий список в 3д окне, если bpy.context.space_data для 3д окна не имеет атрибута image?
Pavel M
Аватара
Сообщения: 1100

Сообщение #87 mac7 » 07.05.2020, 23:20

Pavel писал(а): bpy.context.space_data
- это просто параметр с типом Image в окне, такой же, как в любом другом объекте, например в ноде Image Texture итд., соответственно, что тебе нужно? получить доступ до параметра c типом Image (ты же планируешь те картинки как-то использовать, а не просто смотреть, например присваивать объектам, стучи туда) если хочешь просто смотреть)) ни на что не влиять, тогда создай свой параметр с типом Image, например в пропс в сцене.
mac7 M
Аватара
Откуда: Луцьк
Сообщения: 315

Сообщение #88 ZiCVIZ » 08.05.2020, 06:51

Не мне не надо добовлять или удалять
мне просто нужен список всех текстур ... но только тех которые находятся на диске а не созданные в нутри блендера (+NEW)

и чтобы при выборе текстуры он передовал в переменную\ые имя файла и путь
ZiCVIZ M
Сообщения: 7

Сообщение #89 mac7 » 08.05.2020, 10:31

ZiCVIZ, python - работа с файлами ;)
или можешь подсмотреть у других addon texture library
mac7 M
Аватара
Откуда: Луцьк
Сообщения: 315

Сообщение #90 ZiCVIZ » 08.05.2020, 11:27

Я может не правильно выразился
мне не надо их загружать ... мне надо создать список уже существующих
ZiCVIZ M
Сообщения: 7

Сообщение #91 Pavel » 08.05.2020, 11:44

ZiCVIZ, я не знаю, как отфильтровать список текстур так, чтобы были видны только те текстуры, которые являются внешними (которые не созданы внутри блендера):
Код: Выделить всё
import bpy


def update(self, context):
    image = bpy.data.images.get(self.image)
    if image:
        self.image_file_name = image.name
        self.image_file_path = image.filepath
        print(self.image_file_name)
        print(self.image_file_path)
        print(79 * '#')


def draw(self, context):
    self.layout.prop_search(context.scene, 'image', bpy.data, 'images', text='')


bpy.types.Scene.image = bpy.props.StringProperty(update=update)
bpy.types.Scene.image_file_name = bpy.props.StringProperty()
bpy.types.Scene.image_file_path = bpy.props.StringProperty()
bpy.types.VIEW3D_HT_header.append(draw)
Pavel M
Аватара
Сообщения: 1100

Сообщение #92 ZiCVIZ » 08.05.2020, 11:55

Жаль но это же не список
Мне нужно в интерфейсе создать список
в UI->View3D
ZiCVIZ M
Сообщения: 7

Сообщение #93 Pavel » 08.05.2020, 14:25

ZiCVIZ, а что ты подразумеваешь под списком? Я создал выпадающий список:
Изображение

Выбираешь нужное изображение и в консоль пишется информация о пути к файлу и имя изображения.

Переместил его в VIEW_3D > UI:
Код: Выделить всё
import bpy


def update(self, context):
    image = bpy.data.images.get(self.image)
    if image:
        self.image_file_name = image.name
        self.image_file_path = image.filepath
        print(self.image_file_name)
        print(self.image_file_path)
        print(79 * '#')


class TestPanel(bpy.types.Panel):
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_category = 'Test'
    bl_label = 'Test'

    def draw(self, context):
        self.layout.prop_search(context.scene, 'image', bpy.data, 'images', text='')


bpy.types.Scene.image = bpy.props.StringProperty(update=update)
bpy.types.Scene.image_file_name = bpy.props.StringProperty()
bpy.types.Scene.image_file_path = bpy.props.StringProperty()
bpy.utils.register_class(TestPanel)
Pavel M
Аватара
Сообщения: 1100

Сообщение #94 ZiCVIZ » 08.05.2020, 17:57

Спасибо огромное то что нужно
у меня оказывается VS Code глючит и отказывается просто скрипты запускать
ему нужно было создать файл __init__.py и вкрутить описания аддона тогда запускает

кто кстати чем пользуется для написания скриптов\аддонов под блендер ?
ZiCVIZ M
Сообщения: 7

Сообщение #95 Pavel » 08.05.2020, 19:10

ZiCVIZ, можно для теста не переименовывать файл и не добавлять bl_info. И запускать не с помощью VS Code, а с помощью блендера. Я когда писал этот скрипт, запускал его в Text Editor с помощью Alt+P.

Для написания аддонов я использую Notepad++. Привык к нему, на другие редакторы пока нет желания переходить.
Pavel M
Аватара
Сообщения: 1100

Сообщение #96 mac7 » 08.05.2020, 21:32

Pavel, постав VS Code и расширение Blender Development, перезагружать в блендере аддон можно одной, командой, +лог с блендера дублируется в консоль VS Code итд.
mac7 M
Аватара
Откуда: Луцьк
Сообщения: 315

Сообщение #97 Pavel » 08.05.2020, 21:37

mac7, попробую. Правда привыкать придётся долго. Я с notepad++ много лет.
Pavel M
Аватара
Сообщения: 1100

Сообщение #98 mac7 » 08.05.2020, 23:07

Pavel,
phpBB [media]
mac7 M
Аватара
Откуда: Луцьк
Сообщения: 315

Сообщение #99 Korchy » 08.05.2020, 23:34

В VSCode как-то странновато работает линтер под питон. PyCarm лучше по моему опыту.
Korchy M
Аватара
Сообщения: 2808



Сообщение #100 ZiCVIZ » 09.05.2020, 01:55

А вот как заставить пайчарм автоматом исполнять код в блендере ?
ZiCVIZ M
Сообщения: 7

Пред.След.

Вернуться в Плагины

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 2 гостя

cron