Голосование

Нужны ли "ноды" для POV-Ray?

Да
0 (0%)
Нет
0 (0%)
Не понимаю вопрос
0 (0%)

Проголосовало пользователей: 0

Автор Тема: Povray-3.7: Неофициальный экспортёр  (Прочитано 121827 раз)

Оффлайн LanuHum

  • Житель
Re: Povray-3.7: Неофициальный экспортёр
« Ответ #60 : 05 Июнь 2014, 13:30:54 »
Разобрался с созданием нодов. :)
Разобраться бы теперь, как эти узлы распутывать :-\
На панели материалов теперь появилась кнопка.
Old Demon, в твоём избирательном бюллетене нет пункта: "Категорически против Povray" ;D

[вложение удалено Администратором]
« Последнее редактирование: 05 Июнь 2014, 13:37:50 от LanuHum »

Оффлайн LanuHum

  • Житель
Re: Povray-3.7: Неофициальный экспортёр
« Ответ #61 : 05 Июнь 2014, 17:27:24 »
Развиваю дальше:
Допустим - я "новоюзер -художник"и включаю POV-Ray на панели переключения рендерера. Что бы хотелось мне видеть в первую очередь?
1. дружественный и внятный интерфейс (ничего страшного, что на английском)
2. просмотр изменения материалов в режиме реального времени
3. рендер в окне, без запуска основной оконной оболочки Pov-Ray
4. стабильную работу без вылетов и ошибок (это самый раздражающий фактор)
5. желательно, реалтаймовое превью в 3D окне  (ну мода пошла, да и удобно это очень , на самом деле)
... остальное - это второстепенные вещи...
Да, и мне нафиг не хочется знать ( в начале ознакомления с инструментом), куда там писать какие пути, чтоб оно заработало :) Да это все так "капризно", но таких пользователей большинство... И тебе,увы, придется писать под их виденье, если ты действительно хочешь развития проекта, да еще и в замен благодарности получать "тонны критики" :)... В основном "Суслик" поэтому и популярен стал: благодаря интерактивности и простоте использования,но он встроенный рендер... твоя задача даже сложнее.

Спорить не буду, но просто расскажу, как это вижу я.
Есть очень популярный "суслик" с дружественным интерфейсом, часами считающий, и есть совсем непопулярный поврей, считающий, как минимум, в разы быстрей. Я выбираю Поврей, изучаю его, изучаю питон и пишу экспортёр, потому что я хочу иметь этот инструмент у себя. Мне говорят, что есть ленивые и хотят всё на блюдечке. Я для таких ничего делать не хочу, и спасибо мне ихнее не требуется. Что значит: "если ты, действительно хочешь развития проекта"? По, моему, ты не о развитии, а о популярности. Хочу ли я стать звездой, сделать поврей популярным, быть в центре внимания, до смерти отвечать на вопросы новичков? Этого я не хочу. Но развивать я развиваю, уже семнадцатый раз повторяю, в меру своих возможностей.
Если кто-то увидит, что я уже сделал, и не сочтёт за огромный труд дописать несколько строчек, чтобы прикрутить фишки требующие знаний программиста - это будет замечательно.
Я не считаю, что реально желающий сделать анимацию, чтобы успеть до смерти, выберет суслика со своим навороченным интерфейсом. Реальный чел скажет, лучше пусть без модного
реалтаймового превью в 3D окне. Найди мне статью, где пишется, как средствами питона это делается.
Читая тебя, у меня складывается твоя позиция так: "Если ты хочешь развития проекта, то учи С++, один перегони суслика доступностью..."
Ты уже тогда прямо напиши: Если ты LanuHum хочешь развития проекта, то иди отсюда, учись, пиши, создай полноценный релиз, а как закончишь - приходи, начнём развивать проект.

Рендер в окне, без запуска основной оконной оболочки Pov-Ray...Да, такого ещё даже Саттва к люксу ни сделал, хотя он программист и работает в целом коллективе разработчиков.
Просмотр изменения материалов в режиме реального времени...С++ знать надо, libPNG и все формулы, по которым рисуются паттерны. И, что там видно в реальном времени? Какой шарик стал? Игрушки это.
« Последнее редактирование: 05 Июнь 2014, 17:29:56 от LanuHum »

Оффлайн LanuHum

  • Житель
Re: Povray-3.7: Неофициальный экспортёр
« Ответ #62 : 05 Июнь 2014, 17:58:02 »
Old Demon, найдёшь специалиста, который изменит этот файл в исходниках поврея?
https://github.com/POV-Ray/povray/blob/3.7-stable/unix/disp_sdl.cpp
Здесь как раз зарыта тайна просмотра рендера в окне блендера для линукса.
В каком-то другом файле, наверное, зарыто для Widows
Здесь на основании просчёта формируется изображение в окне SDL.
Пусть исправят, чтоб могло транслировать для окна Блендера, напишут код экспорта. Я воткну .dll и .so в экспортёр, как это делает Яфарай, Люкс и прочие.
Я на С/C++ могу только...да, ничего я не могу...В Qt-Creator могу натыкать, чтоб оно мне mainwindow создало на C++ :) :) :)
« Последнее редактирование: 06 Июнь 2014, 13:32:21 от LanuHum »

Оффлайн LanuHum

  • Житель
Re: Povray-3.7: Неофициальный экспортёр
« Ответ #63 : 05 Июнь 2014, 19:05:37 »
Цитировать
Как завершу, тогда и пообщаемся по поводу твоего экспортера...
Удачи!
А я пока с нодами буду разбираться. Уже написал нод Pattern. Осталось Layered, и можно будет выпадающий список типов материала выбросить и разбираться с распутыванием этих самых узлов для передачи в Поврей.. В общих чертах, вроде, разобрался, но самое страшное впереди :)


[вложение удалено Администратором]

Оффлайн sungreen

  • ...
  • Житель
  • Kostroma mon amour
    • sungreen.github.io
Re: Povray-3.7: Неофициальный экспортёр
« Ответ #64 : 05 Июнь 2014, 22:03:59 »
>> Уже написал нод Pattern.
... можешь показать код со своими комментариями? ...
Для Кота

Оффлайн LanuHum

  • Житель
Re: Povray-3.7: Неофициальный экспортёр
« Ответ #65 : 05 Июнь 2014, 23:19:32 »
Цитировать
можешь показать код со своими комментариями?
Конечно могу.
Чтобы можно было на ходу добавлять необходимое количество блоков в узле, в первую очередь необходимо создать коллекцию, привязав её к самому ноду.
Для этого создаём класс

Код
from bpy.props import CollectionProperty
from bpy.types import PropertyGroup
class PovrayNode(PropertyGroup):
    color_stop = FloatProperty(
            name="Stop",
            description="",
            min=0.0,max=1.0,default=0.0)
    material_name = StringProperty(
            name="Material",
            description="")

и регистрируем его, привязав к bpy.types.Node, назвав pov, создав тем самым коллекцию при ноде :
Код
def register():
    bpy.types.Node.pov = CollectionProperty(type=PovrayNode)

Далее, создаём оператор, который будет пополнять коллекцию блоков нода:

Код
class NodePropAdd(Operator):
    bl_idname = "node.propadd"
    bl_label = "Add material"

    def execute(self, context):
        node=context.node
        index=-1
        for i in range(0,len(node.pov)):
            index+=1
        block=node.pov.add()
        block.index=index+1
        return {'FINISHED'}

Теперь пишем код самого нода:

Код
class PatternNode(Node, PovrayTreeNode):
    '''Pattern node'''
    bl_idname = 'PatternNode'
    bl_label = 'Pattern'
    bl_icon = 'SOUND'

    simple_material = bpy.props.StringProperty(name="Material")

    def init(self, context):

        self.outputs.new('NodeSocketString', "Output")

    def copy(self, node):
        pass

    def free(self):
        pass

    def draw_buttons(self, context, layout): # функция отрисовки нода
        for block in self.pov: # по блоку в коллекции нода, который у нас self
            if block:
                clm=layout.column(align=True) # Связываем align=True, чтобы блоки отделялись друг от друга визуально
                clm.prop(block,"color_stop",slider=True)
                clm.prop_search(block, "material_name",context.blend_data,"materials",text="")
        layout.operator("node.propadd") # Добавляем кнопку оператора.
    def draw_buttons_ext(self, context, layout): # рисуем дубль на панели N
        for block in self.pov:
            if block:
                row=layout.row(align=True)
                row.prop(block,"color_stop",slider=True)
                row.prop_search(block, "material_name",context.blend_data,"materials",text="")
        layout.operator("node.propadd")
    def draw_label(self):
        return "Pattern"

« Последнее редактирование: 05 Июнь 2014, 23:26:33 от LanuHum »

Оффлайн sungreen

  • ...
  • Житель
  • Kostroma mon amour
    • sungreen.github.io
Re: Povray-3.7: Неофициальный экспортёр
« Ответ #66 : 06 Июнь 2014, 04:08:35 »
.... извини, что паразитирую, но можешь подумать на тему "создание узла для описания isosurface"? ...
Для Кота

Оффлайн LanuHum

  • Житель
Re: Povray-3.7: Неофициальный экспортёр
« Ответ #67 : 06 Июнь 2014, 09:30:53 »
Цитировать
извини, что паразитирую, но можешь подумать на тему "создание узла для описания isosurface"?
Я не вижу необходимости в создании узла. Эти объекты описываются стандартно:
Код
isosurface{ //-------------------------
  function {
   (1+0.002)
    - pow( 0.002, ( sqrt(x*x+y*y)-0.5))
    - pow( 0.008, ( abs(x*0.7)+abs(z*0.7)-0.5))
    - pow( 0.002,( sqrt( y*y+z*z )-0.5))
    - f_noise3d( x*3, y*3, z*3 )
  }
  contained_by{ box{<-2,-1.5,-1.5>,<2,1.5,1.5>}}
  threshold 0
  accuracy 0.003
  max_gradient 5

 
Код
isosurface{ //-------------------------
  function{ f_flange_cover( x,y,z,
       0.004, // spikiness,
       10,    // inverse size,
       0.53,  // flange, (1 = off)
       1   )  // threshold
  }
  contained_by {sphere {0,1.5}}
  threshold 0.01
  accuracy 0.00001
  max_gradient 5

В зависимости от того, куда мы хотим contained_by создаём либо куб, либо сферу и записываем объект как isosurface.  Для isosurface создаём блок крутилок на панели object и всё. Сегодня я от нодов отдохну, пожалуй, к вечеру покажу, как я это вижу, встроив isosurface в простом варианте.  Но, дописывать буду в Питере, так как поврей имеет functions.inc, где куча уже готовых функций с описанием каждой. Я планировал встроить эти описания в код не как всплывающие подсказки, ибо это очень неудобно, когда текст многострочный. Но вручную там долго калякать, нужно написать несколько скриптов для автоматизации создания этой части интерфейса. Кое что для этого я уже сделал, но со мной этого нет.

Кстати, здесь вот очень много туториалов также и по данной теме:
http://www.f-lohmueller.de/pov_tut/all_shapes/shapes900e.htm
« Последнее редактирование: 06 Июнь 2014, 09:43:02 от LanuHum »

Оффлайн LanuHum

  • Житель
Re: Povray-3.7: Неофициальный экспортёр
« Ответ #68 : 06 Июнь 2014, 10:24:09 »

« Последнее редактирование: 06 Июнь 2014, 12:59:38 от LanuHum »

Оффлайн LanuHum

  • Житель
Re: Povray-3.7: Неофициальный экспортёр
« Ответ #69 : 06 Июнь 2014, 13:48:43 »
Есть начало для isosurface. Пока столкнулся с задачей, котрую нужно решить в первую очередь.
Для того, чтоб объект на моём скриншоте имел форму как объект на вышеуказанном образце из туториала, я должен увеличить размер contained_by, а масштаб самого объекта уменьшить, чтобы isosurface находился в пределах куба в окне блендера. Если этого ни сделать, то трудно будет манипулировать, не представляя реального масштаба.

[вложение удалено Администратором]

Оффлайн LanuHum

  • Житель
Re: Povray-3.7: Неофициальный экспортёр
« Ответ #70 : 06 Июнь 2014, 18:52:29 »
По-моему, я пытаюсь изобрести колесо. Isosurface - это всё же текст, математическое выражение, и его лучше всего создавать в текстовом редакторе.
Вот такой вариант предоставляет возможность либо создавать isosurface в редакторе Блендера, либо загрузить текст из файла.
Обновление здесь:
https://github.com/Lanuhum/BlendPov-alternative

[вложение удалено Администратором]

Оффлайн sungreen

  • ...
  • Житель
  • Kostroma mon amour
    • sungreen.github.io
Re: Povray-3.7: Неофициальный экспортёр
« Ответ #71 : 06 Июнь 2014, 19:50:21 »
Код
camera { location  <3, 0, -3> look_at <0, 0, 0>}

sky_sphere { pigment {
    function{abs(y)}
    color_map { [0.0 color blue 0.6] [1.0 color rgb 1] }
  }
}

light_source {<-100,200,-100> colour rgb 1}

// ----------------------------------------

#declare R = 1.0;

isosurface {
  function { y*y + z*z - R*R }
        accuracy 0.001
        max_gradient 2.4
        contained_by{sphere{0,2}}
        pigment {rgb .9}
        finish {phong 0.5 phong_size 10}
}

sphere {0,2 pigment {rgbt <1,0,0,0.9>}}

... попробовал взять из примера функцию ...
... добавил текстовый блок, вставил текст функции   function { y*y + z*z - R*R } и указал текстовый блок в качестве источника для isosurface  ...
... но как быть с декларациями типа R? ...
... можешь организовать нечто подобное OSL узла, для которого задавать входные/выходные параметры? ...
Для Кота

Оффлайн LanuHum

  • Житель
Re: Povray-3.7: Неофициальный экспортёр
« Ответ #72 : 06 Июнь 2014, 20:20:07 »
Цитировать
но как быть с декларациями типа R?
Пиши первой строчкой:
#declare R = 5; // точка с запятой обязательны!

Или сразу пиши 5 вместо R. Я не знаком с OSL, и не понимаю проблемы. Ты хочешь скопировать текст, а потом что-то там вытягивать из узлов вместо того, чтобы просто сразу здесь же изменить значение? В чём удобство, ведь текст всё-равно писать?
Цитировать
sky_sphere { pigment {
    function{abs(y)}
Не встречал ещё таких примеров для небесной сферы. Доберусь, может, когда-нибудь. В текстурах я прикрутил имеющиеся в подключаемых файлах функции. Здесь автоматически появляется столько крутилок, сколько требуется для корректировки

[вложение удалено Администратором]

Оффлайн LanuHum

  • Житель
Re: Povray-3.7: Неофициальный экспортёр
« Ответ #73 : 06 Июнь 2014, 20:23:12 »
Таким же макаром можно организовать и пресеты для isosurface. Все эти функции можно использовать для создания объектов.

Оффлайн sungreen

  • ...
  • Житель
  • Kostroma mon amour
    • sungreen.github.io
Re: Povray-3.7: Неофициальный экспортёр
« Ответ #74 : 06 Июнь 2014, 20:28:48 »
... ok, в выходные посмотрю более подробно тему isosurface ...
Для Кота

 


Яметрика

* По форуму

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

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

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

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