... но неужели ты всерьёз считаешь, что Блендер должен выглядеть так?
Нет. На самом деле я хочу...
ЦитироватьНет. На самом деле я хочу......хоти или приобрети Maya и не выпендривайся...
Цитата: Samovar от 13 Ноябрь 2016, 21:24:14ЦитироватьНет. На самом деле я хочу......хоти или приобрети Maya и не выпендривайся...Есть третий вариант: написать собственную гуёвину для модуля bpy, используя как и Майя пикутю
Лично меня текущий интерфейс Блендера устраивает почти на 100%, и я действительно считаю его изначальную гибкость одним из наилучших решений... хотя и он не без изъянов, конечно.
Цитата: Samovar от 13 Ноябрь 2016, 21:41:19Лично меня текущий интерфейс Блендера устраивает почти на 100%, и я действительно считаю его изначальную гибкость одним из наилучших решений... хотя и он не без изъянов, конечно.Меня он также устраивает почти на 100% , но я не буду возражать, если он в будущем станет ещё удобнее. Про новый виджет я спрашивал у sungreen, но Python API Блендера позволяет создать любой мыслимый и немыслимый виджет для аддона, используя pyside. Тут только одна проблема - официальный Блендер собирается с использованием libpng12, а это значит, что пользователь не сможет моим аддоном пользоваться, ибо Qt использует libpng16, как и Блендер из реп Магеи/Росы. То есть я могу написать сам для себя, и за это меня будут обзывать жадиной-говядиной.
Не совсем понимаю почему LanuHum упомянул PySide. Разве его можно как-то использовать для аддонов блендера? Ему видней - я аддоны не разрабатывал (не шарю, а мнение имею, да ), но попытаюсь объяснить как сам понял.PySide — привязка языка Python к инструментарию Qt, который(Qt) конкретно в системе LanuHum собран с libpng16. Значит аддон(с PySide) будет работать в Магеи/Росе в которых блендер собран с libpng16, а с блендером с оффсайта не будет потому что там он собран с libpng12. Для других ОС нужно будет пересобирать блендер с libpng16. Или же можно использовать для разработки аддона инструментарий PySide/Qt с libpng12, если такой есть в какой-то системе. LanuHum систему менять не будет. Хотя можно в виртуалке же собирать что угодно в любой системе.Я например так и не смог понять почему у меня сегфолтится рандомно lmms на любых нативно установленных линукс системах. Загрузил винду, а при необходимости поконпелять в линуксе - запускаю Virtual Box с нужным линуксом. Но однако я могу быть в корне не прав про libpng, ждем LanuHum
libpng12,libpng16.. что за бред? Ты действительно решил врубится в программирование, или зависишь от сторонних библиотек?
bl_info = { "name": "Rainbow", "author": "Lanuhum", "version": (0, 0, 1), "blender": (2, 73, 0), "location": "Render Panel", "description": "", "warning": "", "wiki_url": "", "category": "Render",}import bpyimport sysfrom PyQt4 import QtCore, QtGuiclass 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()
Не я завишу, а Блендер зависит от сторонних библиотек. Он просто начинает материться на несоответствие используемых библиотек, и, может просто улетать в небытие.
Благодарю за пояснения, mr.A! ЦитироватьНе я завишу, а Блендер зависит от сторонних библиотек. Он просто начинает материться на несоответствие используемых библиотек, и, может просто улетать в небытие.Но мне непонятно, почему надо именно в формате .png значки (иконки) интерфейса рисовать, и использовать для этого библиотеки типа libpng№Х для своих дополнений? Один хрен, они в память загружаются в распакованном виде. Иных вариантов нет?
bl_info = { "name": "Rainbow", "author": "Lanuhum", "version": (0, 0, 1), "blender": (2, 73, 0), "location": "Render Panel", "description": "", "warning": "", "wiki_url": "", "category": "Render",}import bpyimport sys#from PyQt4 import QtCore, QtGuifrom PyQt5 import QtCore, QtGui, QtWidgetsclass 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()