Автор Тема: Дисскуция вне темы  (Прочитано 6377 раз)

Оффлайн LanuHum

  • Житель
Re: Дисскуция вне темы
« Ответ #30 : 13 Ноябрь 2016, 20:23:25 »
... но неужели ты всерьёз считаешь, что Блендер должен выглядеть так?
Нет. На самом деле я хочу, чтобы блендер выглядел вот так:

Не правда ли, чем-то отдалённо напоминает прайсовскую гуёвину. В майке только стандартное меню, а у Прайса вкладки блокнота, слева на панели одни иконки...

Оффлайн LanuHum

  • Житель
Re: Дисскуция вне темы
« Ответ #31 : 13 Ноябрь 2016, 21:06:00 »
Про материалы у Прайса тоже отсюда:

Оффлайн Samovar

  • Житель
Re: Дисскуция вне темы
« Ответ #32 : 13 Ноябрь 2016, 21:24:14 »
Цитировать
Нет. На самом деле я хочу...
...хоти :) или приобрети Maya и не выпендривайся...

Оффлайн LanuHum

  • Житель
Re: Дисскуция вне темы
« Ответ #33 : 13 Ноябрь 2016, 21:29:19 »
Цитировать
Нет. На самом деле я хочу...
...хоти :) или приобрети Maya и не выпендривайся...
Есть третий вариант: написать собственную гуёвину для модуля bpy, используя как и Майя пикутю :)

Оффлайн Samovar

  • Житель
Re: Дисскуция вне темы
« Ответ #34 : 13 Ноябрь 2016, 21:41:19 »
Цитировать
Нет. На самом деле я хочу...
...хоти :) или приобрети Maya и не выпендривайся...
Есть третий вариант: написать собственную гуёвину для модуля bpy, используя как и Майя пикутю :)
Дык, фперёд и с песней, мечтатель :)
Лично меня текущий интерфейс Блендера устраивает почти на 100%, и я действительно считаю  его изначальную гибкость одним из наилучших решений... хотя и он не без изъянов, конечно.

Оффлайн LanuHum

  • Житель
Re: Дисскуция вне темы
« Ответ #35 : 13 Ноябрь 2016, 21:55:50 »
Лично меня текущий интерфейс Блендера устраивает почти на 100%, и я действительно считаю  его изначальную гибкость одним из наилучших решений... хотя и он не без изъянов, конечно.
Меня он также устраивает почти на 100% , но я не буду возражать, если он в будущем станет ещё удобнее. :)
Про новый виджет я спрашивал у sungreen, но Python API Блендера позволяет создать любой мыслимый и немыслимый виджет для аддона, используя pyside. Тут только одна проблема - официальный Блендер собирается с использованием libpng12, а это значит, что пользователь  не сможет моим аддоном пользоваться, ибо Qt использует libpng16, как и Блендер из реп Магеи/Росы. То есть я могу написать сам для себя, и за это меня будут обзывать жадиной-говядиной. :)

Оффлайн Samovar

  • Житель
Re: Дисскуция вне темы
« Ответ #36 : 13 Ноябрь 2016, 22:54:57 »
Лично меня текущий интерфейс Блендера устраивает почти на 100%, и я действительно считаю  его изначальную гибкость одним из наилучших решений... хотя и он не без изъянов, конечно.
Меня он также устраивает почти на 100% , но я не буду возражать, если он в будущем станет ещё удобнее. :)
Про новый виджет я спрашивал у sungreen, но Python API Блендера позволяет создать любой мыслимый и немыслимый виджет для аддона, используя pyside. Тут только одна проблема - официальный Блендер собирается с использованием libpng12, а это значит, что пользователь  не сможет моим аддоном пользоваться, ибо Qt использует libpng16, как и Блендер из реп Магеи/Росы. То есть я могу написать сам для себя, и за это меня будут обзывать жадиной-говядиной. :)
libpng12,libpng16.. что за бред? Ты действительно решил врубится в программирование, или зависишь от сторонних библиотек?

mr.A

  • Гость
Re: Дисскуция вне темы
« Ответ #37 : 14 Ноябрь 2016, 11:21:31 »
Действительно, может сложности какие-то? Идёшь на http://www.libpng.org/pub/png/libpng.html от них на https://sourceforge.net/projects/libpng/files/  и там пожалуйста, какую хочешь libpng10, libpng12, libpng14, libpng15, libpng16, libpng17
Позже: Аа, понял про Qt.

Оффлайн Samovar

  • Житель
Re: Дисскуция вне темы
« Ответ #38 : 14 Ноябрь 2016, 12:27:01 »
Хрен его знает, чего  вы там про QT какое-то обсуждаете. Это библиотека над библиотекой?... у Блендера интерфейс свои - независимый от ОСей,  потому, что писан на API OpenGL... а эта хрень - OpenGL, сами знаете, что везде работает, т.к. есть драйвера под эту библиотеку на всех ОСях... или я не вполне шарю как работают оси-клоны Unix. mr.A, объясни пожалуйста, или ссылки дай для ознакомления.
« Последнее редактирование: 14 Ноябрь 2016, 12:50:39 от Samovar »

mr.A

  • Гость
Re: Дисскуция вне темы
« Ответ #39 : 14 Ноябрь 2016, 14:44:50 »
Не совсем понимаю почему LanuHum упомянул PySide. Разве его можно как-то использовать для аддонов блендера? Ему видней - я аддоны не разрабатывал (не шарю, а мнение имею, да :D), но попытаюсь объяснить как сам понял.
PySide — привязка языка Python к инструментарию Qt, который(Qt) конкретно в системе LanuHum собран с libpng16.
Значит аддон(с PySide) будет работать в Магеи/Росе в которых блендер  собран с libpng16, а с блендером с оффсайта не будет потому что там он собран с libpng12. Для других ОС нужно будет пересобирать блендер с libpng16. Или же можно использовать для разработки аддона  инструментарий PySide/Qt с libpng12, если такой есть в какой-то системе.
LanuHum систему менять не будет. Хотя можно в виртуалке же собирать что угодно в любой системе.

Я например так и не смог понять почему у меня сегфолтится рандомно lmms на любых нативно установленных линукс системах. Загрузил винду, а при необходимости поконпелять в линуксе - запускаю Virtual Box с нужным линуксом.
Но однако я могу быть в корне не прав про libpng, ждем LanuHum

Оффлайн LanuHum

  • Житель
Re: Дисскуция вне темы
« Ответ #40 : 14 Ноябрь 2016, 17:27:51 »
Не совсем понимаю почему LanuHum упомянул PySide. Разве его можно как-то использовать для аддонов блендера? Ему видней - я аддоны не разрабатывал (не шарю, а мнение имею, да :D), но попытаюсь объяснить как сам понял.
PySide — привязка языка Python к инструментарию Qt, который(Qt) конкретно в системе LanuHum собран с libpng16.
Значит аддон(с PySide) будет работать в Магеи/Росе в которых блендер  собран с libpng16, а с блендером с оффсайта не будет потому что там он собран с libpng12. Для других ОС нужно будет пересобирать блендер с libpng16. Или же можно использовать для разработки аддона  инструментарий PySide/Qt с libpng12, если такой есть в какой-то системе.
LanuHum систему менять не будет. Хотя можно в виртуалке же собирать что угодно в любой системе.

Я например так и не смог понять почему у меня сегфолтится рандомно lmms на любых нативно установленных линукс системах. Загрузил винду, а при необходимости поконпелять в линуксе - запускаю Virtual Box с нужным линуксом.
Но однако я могу быть в корне не прав про libpng, ждем LanuHum
Именно, PySide, как и PyQt можно использовать для создания аддонов, ибо Qt позволяет синхронизировать события.
http://blender.stackexchange.com/questions/8327/has-anyone-hooked-up-pyside-to-blender
Жмёшь кнопку в Блендере, появляется окно Qt в немодальном режиме. Ты будешь двигать слайдер в окне Qt - события сразу же передаются Блендеру. Если есть какая-то функция, например, перемещения, то двигая слайдер в Qt, ты сможешь перемещать объект в Блендере.

Что касается libpng. Я не знаю, зачем и почему оффициальный Блендер собирается с древней 12 версией, но это создаёт ни только проблему использования Qt, но и Yafaray, например. Если захочешь дома собрать Блендер с 12 версией, то, скорей всего, это закончится крахом. Разработчики умышленно руками вносят изменения в конфиги перед сборкой официальной версии.

Цитировать
libpng12,libpng16.. что за бред? Ты действительно решил врубится в программирование, или зависишь от сторонних библиотек?
Не я завишу, а Блендер зависит от сторонних библиотек. Он просто начинает материться на несоответствие используемых библиотек, и, может просто улетать в небытие.

Оффлайн LanuHum

  • Житель
Re: Дисскуция вне темы
« Ответ #41 : 14 Ноябрь 2016, 19:33:35 »
mr.A, вот, если тебе интересно, аддон, использующий Qt. Он ничего ни делает, а только запускает окошко, если нажать кнопку "Rainbow" , которая появится над кнопками основного рендера. Возможно, он даже заработает с другой libpng, но это будет только до тех пор, пока в твоём коде не появятся картинки: иконки и прочее, на что требуется задействование libpng.
Аддон после размещения его в папке addons можно найти там где и все аддоны во вкладке Рендер.
Код
bl_info = {
    "name": "Rainbow",
    "author": "Lanuhum",
    "version": (0, 0, 1),
    "blender": (2, 73, 0),
    "location": "Render Panel",
    "description": "",
    "warning": "",
    "wiki_url": "",
    "category": "Render",
}

import bpy
import sys

from PyQt4 import QtCore, QtGui

class Qt_window(QtGui.QMainWindow):
    def __init__(self):       
        super(Qt_window, self).__init__()
        self.setWindowTitle("Rainbow")
        self.resize(600, 400)
        self.show()

class Rainbow(bpy.types.Operator):
    bl_idname = "render.rainbow"
    bl_label = "Rainbow"
    _timer = None
    _window = None

    def modal(self, context, event):
        if event.type == 'TIMER':
            self._event_loop.processEvents()
            self._application.sendPostedEvents(None, 0)
        return {'PASS_THROUGH'}

    def execute(self, context):
        self._application = QtGui.QApplication.instance()
        if self._application is None:
            self._application = QtGui.QApplication(['blender'])
        self._event_loop = QtCore.QEventLoop()
        self.window = Qt_window()
        self._timer = context.window_manager.event_timer_add(0.1, context.window)
        context.window_manager.modal_handler_add(self)
        return {'RUNNING_MODAL'}

def menu_func_rainbow(self, context):
    self.layout.operator("render.rainbow")

def register():
    bpy.utils.register_class(Rainbow)
    bpy.types.RENDER_PT_render.prepend(menu_func_rainbow)

def unregister():
    bpy.utils.unregister_class(Rainbow)
    bpy.types.RENDER_PT_render.remove(menu_func_rainbow)

if __name__ == "__main__":
    register()

Оффлайн Samovar

  • Житель
Re: Дисскуция вне темы
« Ответ #42 : 15 Ноябрь 2016, 07:54:16 »
Благодарю за пояснения, mr.A
Цитировать
Не я завишу, а Блендер зависит от сторонних библиотек. Он просто начинает материться на несоответствие используемых библиотек, и, может просто улетать в небытие.
Но мне непонятно, почему надо именно в формате .png значки (иконки) интерфейса рисовать, и использовать для этого библиотеки типа libpng№Х для своих дополнений? Один хрен, они в память загружаются в распакованном виде. Иных вариантов нет?

Оффлайн LanuHum

  • Житель
Re: Дисскуция вне темы
« Ответ #43 : 15 Ноябрь 2016, 16:41:50 »
Благодарю за пояснения, mr.A
Цитировать
Не я завишу, а Блендер зависит от сторонних библиотек. Он просто начинает материться на несоответствие используемых библиотек, и, может просто улетать в небытие.
Но мне непонятно, почему надо именно в формате .png значки (иконки) интерфейса рисовать, и использовать для этого библиотеки типа libpng№Х для своих дополнений? Один хрен, они в память загружаются в распакованном виде. Иных вариантов нет?
Дело в том, что ни всё ты загружаешь сам. Многие виджеты Qt уже включают в себя иконки, например, диалоговые окна, в том числе выбор файлов. Кроме того, отказ от png может свести на нет саму идею расширения возможностей Блендера с помощью Qt. Часть возможности расширения как раз может быть связана с альфа-каналами, с конвертацией векторных изображений, использующих прозрачность и так далее. Но, вопрос больше к разработчикам Блендера: зачем они вводят ограничение, если исходный код Блендера, доступный к скачиванию, работает с нужными библиотеками и не ограничивает пользователя? Назло разработчикам Яфарай? :)

mr.A

  • Гость
Re: Дисскуция вне темы
« Ответ #44 : 16 Ноябрь 2016, 13:36:53 »
LanuHum, интересно получается. Вот, я запустил в Windows 10. Python 3.5.2. Qt 5.7. Небходимо отключить комплектный с блендером(для виндовс) питон переименовав папку C:\Program Files\Blender Foundation\Blender\2.78\python на любое имя.  Немного изменил твое дополнение под Qt5, может напутал что. Добавил кнопку с png-картинкой. Всё отлично работает. Вообще без понятия какие тут версии png используются во всех компонентах.
Клёво! Можно интересные дополнения писать. Уметь бы только..  :)
Код: python
bl_info = {
    "name": "Rainbow",
    "author": "Lanuhum",
    "version": (0, 0, 1),
    "blender": (2, 73, 0),
    "location": "Render Panel",
    "description": "",
    "warning": "",
    "wiki_url": "",
    "category": "Render",
}

import bpy
import sys

#from PyQt4 import QtCore, QtGui
from PyQt5 import QtCore, QtGui, QtWidgets

class Qt_window(QtWidgets.QMainWindow):
    def __init__(self):
        super(Qt_window, self).__init__()

        #self.setGeometry(300, 300, 600, 600)  # x, y, w, h
        self.resize(600, 600)
        #self.move(300, 300)

        self.setWindowTitle("My First Qt App")

        # Add a label with tooltip
        label = QtWidgets.QLabel("Hello World!", self)
        label.setToolTip("This is a <b>QLabel</b> widget with Tooltip")
        label.resize(label.sizeHint())
        label.move(80, 50)

        # Add a toolButton  with png
        toolButton = QtWidgets.QToolButton(self);
        toolButton.setGeometry(QtCore.QRect(60, 150, 200, 200))
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap("D:/pictures/smile.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        toolButton.setIcon(icon);
        toolButton.setIconSize(QtCore.QSize(200, 200));

        # Show window
        self.show()


class Rainbow(bpy.types.Operator):
    bl_idname = "render.rainbow"
    bl_label = "Rainbow"
    _timer = None
    _window = None

    def modal(self, context, event):
        if event.type == 'TIMER':
            self._event_loop.processEvents()
            self._application.sendPostedEvents(None, 0)
        return {'PASS_THROUGH'}

    def execute(self, context):
        self._application = QtWidgets.QApplication.instance()
        if self._application is None:
            self._application = QtWidgets.QApplication(['blender'])
        self._event_loop = QtCore.QEventLoop()
        self.window = Qt_window()
        self._timer = context.window_manager.event_timer_add(0.1, context.window)
        context.window_manager.modal_handler_add(self)
        return {'RUNNING_MODAL'}

def menu_func_rainbow(self, context):
    self.layout.operator("render.rainbow")

def register():
    bpy.utils.register_class(Rainbow)
    bpy.types.RENDER_PT_render.prepend(menu_func_rainbow)

def unregister():
    bpy.utils.unregister_class(Rainbow)
    bpy.types.RENDER_PT_render.remove(menu_func_rainbow)

if __name__ == "__main__":
    register()

 


Яметрика

* По форуму

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

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

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

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