Здравствуйте Леонид, рад приветствовать на нашем сайте. Тему прикрепил, чтобы на виду былаЗдравствуйте. Спасибо за дружественный приём.
Здавствуй LanuHum! :)
Я рад тебя "видеть", жду с нетерпением твою работу, многое мне не понятно, и я надеюсь что с твоей помощью дело сдвинется с мёртвой точки! (У меня :D :D :D) Как раз что касается Povray в Линуксе...
Mageia... :( :( :( (и когда я себе комп сменю...)Уже 14.04 используется. Не устанавливается на твой старый комп? Ну, не знаю...поврей любит очень много ядер. :)
Со скрипом и бубном поставил на Убунту 12.04, поглядим что дальше будет :D :D :D
Да, это неофициальный экспортёр. За базу я взял более года назад официальную версию, очень много я там изменил, но ещё оставил имена разработчиков, ибо есть их тут доля. Со временем я ничего не оставлю от их кода.
... это неофициальный экспортёр? тестовые сцены есть? ...
PermissionError: [Errno 13] Permission denied: '/home/leonid'
POV-Ray 3.7: Cannot create scenes directory: '/home/leonid/blender/povwip27/'
Попробовал, не идёт... :(
Терминал даёт такое сообщение:КодPermissionError: [Errno 13] Permission denied: '/home/leonid'
POV-Ray 3.7: Cannot create scenes directory: '/home/leonid/blender/povwip27/'
почему он в '/home/leonid' пытается войти? :D
LanuHum, если вы действительно всерьёз занялись коннектором к Pov Ray, то только успехов вам, в этом нелегком деле! Знаю, что официальный заглох, поэтому вся надежда на ваш энтузиазм. Надеюсь, ваш проект будет жив и обрастет пользователями, последователями и продолжателями. (Да, забыл добавить, и пофиг на самом деле, на каком сайте это происходит ;), всерьёз интересующиеся по любому подтянутся)...Old Demon, со мной можно на ты, не знаю, как с Вами. Я занимаюсь этим уже больше года,и, мне, конечно, не хватает помощников, хотя бы для тестов. Хотя, знаний не хватает порой, и не мешало бы с кем-нибудь проконсультироваться по python API, но, нет с кем. То, что официальный заглох, не совсем так. В версии блендера 27 официальный аддон пополнился кодом, который разработчики заимствовали у меня, на что я им дал полное согласие. Упомянуть моё имя они отказались по причине, что код им пришлось трансформировать по науке. Я же - любитель, пишу экспортёр без соблюдений законов программирования, которые мне, собственно, и неизвестны даже. Мне главное, чтоб работало, а ни чтоб было правильно написано. Но, действительно, энтузиазм у разработчиков официальной версии отсутствует.
Изменил, теперь выдаёт пстое окно...Поищу причину, пока не могу сообразить...
Делаю свою сцену с кубиком - картинка выходит .
Приготовил первый файл для знакомства с интерфейсом и пробы своего компьютера.
В сцене можно увидеть, как настраивается лампа для мягких теней, как устанавливаются параметры фотонов во вкладке рендер, параметры фотонов во вкладках объект, параметры материалов и как назначаются текстуры для цвета и для нормал. Смотрите внимательно. Блендеровский меш записан как повреевский примитив sphere - вкладка объект write as
На картинке во вложении видно, что у меня рендер прошёл за 12,5 минут
Архив с файлом во втором вложении
Parser Options
Input file: povwip27.pov
Remove bounds........On
Split unions.........Off
Library paths:
/usr/share/povray
/usr/share/povray/ini
/usr/share/povray/include
Clock value: 0.000 (Animation off)
Image Output Options
Image resolution.....800 by 600 (rows 1 to 600, columns 1 to 800).
Output file..........povwip27.png, 24 bpp PNG
Dithering............Off
Graphic display......On (gamma: sRGB)
Mosaic preview.......Off
Continued trace......Off
Information Output Options
All Streams to console..........On
Debug Stream to console.........On
Fatal Stream to console.........On
Render Stream to console........On
Statistics Stream to console....On
Warning Stream to console.......On
==== [Parsing...] ==========================================================
File 'povwip27.pov' line 72: Parse Error: Expected 'object or directive',
interior found instead
Fatal error in parser: Cannot parse input.
Render failed
Изменил, теперь выдаёт пустое окно...sandman, запусти блендер из консоли и покажи весь вывод после того, как выдаст пустое окно.
З.Ы. я за нестандартный подход всегда был... Много не обещаю, но чем смогу - помогу... Пока врубаюсь...Old Demon, спасибо. Жду вопросов, так будет легче скоординироваться. Ясное дело, что мой аддон - далёк от совершенства, ни все идеи ещё начали своё воплощение, но, я неплохо разобрался со структурой сцены поврея и могу спокойно продолжать работу над экспортёром.
... сыплется на фазе парсинга в 72 строке ...
#declare data_Cube_006_orig =
texture{Material_003_tex}
interior {
ior 1.340000
dispersion 1.000000
dispersion_samples 7
}
photons { refraction on target collect off }
}
***INITIALIZING***
Traceback (most recent call last):
File "/usr/share/blender/2.70/scripts/addons/render_povray/render.py", line 3142, in render
self._export(scene, povPath, renderImagePath)
File "/usr/share/blender/2.70/scripts/addons/render_povray/render.py", line 2968, in _export
write_pov(self._temp_file_in, scene, info_callback)
File "/usr/share/blender/2.70/scripts/addons/render_povray/render.py", line 2813, in write_pov
writeMaterial(material)
File "/usr/share/blender/2.70/scripts/addons/render_povray/render.py", line 993, in writeMaterial
if(t and t.use and validPath and
UnboundLocalError: local variable 'validPath' referenced before assignment
location: <unknown location>:-1
location: <unknown location>:-1
LanuHum, у меня под Win проблема. Твою сцену не тестировал, ограничился кубом по умолчанию... Где-то косяк при экспорте параметров камеры.Это не косяк. По умолчанию в настройках камеры включено architectural и установлен параметр manual correction of aspect ratio. Это была проверка туториала по настройке камеры отсюда:
if(t and t.use and validPath andЭто не мой код. Ты используешь официальный аддон, я посмотрел, это там 993 строчка if(t and t.use and validPath and
Вот... пробовал уже разные сборки блендера, не поиму, где я что наворотил...
***INITIALIZING***
Scene name: povwip27
Export path: /home/barrakuda/Projekte/bblender/povray/
Traceback (most recent call last):
File "/usr/share/blender/2.70/scripts/addons/render_povray/render.py", line 2173, in render
self._export(scene, povPath, renderImagePath)
File "/usr/share/blender/2.70/scripts/addons/render_povray/render.py", line 2063, in _export
write_pov(self._temp_file_in, scene, info_callback)
File "/usr/share/blender/2.70/scripts/addons/render_povray/render.py", line 1948, in write_pov
exportMeshes(scene,ob)
File "/usr/share/blender/2.70/scripts/addons/render_povray/render.py", line 1503, in exportMeshes
fileInc=open("%s/data_%s_dec.inc"%(scene.pov.scene_path,povName),'w')
PermissionError: [Errno 13] Permission denied: '///data_Cube_001_dec.inc'
location: <unknown location>:-1
location: <unknown location>:-1
PermissionError: [Errno 13] Permission denied: '///data_Cube_001_dec.inc'Что-то не везёт нам с тобой. У тебя, что ни шаг, то ошибка. :)
Scene name: povwip27У тебя почему-то не хочет создавать файл data_Cube_001_dec.inc, путь к которому не /home/barrakuda/Projekte/bblender/povray/, а /// - относительный.
Export path: /usr/
Traceback (most recent call last):
File "/home/leonid/blender/arch/blender-2.70a/2.70/scripts/addons/render_povray/render.py", line 2173, in render
self._export(scene, povPath, renderImagePath)
File "/home/leonid/blender/arch/blender-2.70a/2.70/scripts/addons/render_povray/render.py", line 2063, in _export
write_pov(self._temp_file_in, scene, info_callback)
File "/home/leonid/blender/arch/blender-2.70a/2.70/scripts/addons/render_povray/render.py", line 327, in write_pov
file = open(filename, "w")
PermissionError: [Errno 13] Permission denied: '/usr/povwip27.pov'
Получилось!!! :D :D :D
Правда дольше чем у тебя, всего два ядра...
Я забыл предупредить о том, что не нашёл, как использовать относительные пути к файлам.http://www.blender.org/documentation/blender_python_api_2_70_5/bpy.path.html -> bpy.path.abspath()
name=tex.pov.tex_image_path
name=name.split("/")
name=name[len(name)-1]
filename = os.path.basename(filepath)
lastItem = myList[-1]
http://www.blender.org/documentation/blender_python_api_2_70_5/bpy.path.html -> bpy.path.abspath()Андрей, здравствуй! Насколько мне известно, ты сейчас человек очень занятой, поэтому надежд на твои консультации у меня не имеется.
и подобное, заменяем на:Спасибо!
filename = os.path.basename(filepath)
Поэтому я хочу куда-нибудь вписать вот эту вот строчку:Это не очень хорошая практика, вернее, совсем не хорошая.
bpy.context.user_preferences.filepaths.use_relative_paths = 0
Хочу применить словарь для замены имён в юникоде на имена повреем читаемые.Для этого можно использовать bpy.path.clean_name() (http://www.blender.org/documentation/blender_python_api_2_70_5/bpy.path.html#bpy.path.clean_name).
Для этого можно использовать bpy.path.clean_name().Например, материал "Мокрый асфальт" как конвертировать в ASCII, чтобы потом можно было в файле .pov что-нибудь понять, если всё-таки появится желание что-нибудь понять?
Это не очень хорошая практика, вернее, совсем не хорошая.Плохо, что аддоны пишут все кому ни лень. Я эту практику увидел в аддоне mesh_fiber. Писал, вероятно, мастер, как и я. Он и не работает почти, этот fiber. :)
LanuHum, я бы хотел написать краткое руководство пользователя, когда дизайн коннектора будет завершен. Собственно, меня смущает размещение кнопок интерфейса... Возможно ли их приблизить к виду Blender Internal, для более простого понимания аналогий "кнопок" пользователями "во взаимосвязи"?
И еще несколько вопросов:1. Не знаю. Но, полагаю, что средствами питона этого сделать невозможно, пишутся библиотеки на С. Или нужно лезть в код поврея и заставлять его транслировать в читаемый питоном формат тайлы.
1. Как насчет рендера в самом Blender, без запуска оконной оболочки Pov-Ray?
2. Возможно ли сделать превью материалов?
3. Возможно ли сделать реалтайм рендер в 3D режиме? ( в официальной документации, вроде, сказано, что есть возможность "реалтайма")
4. Возможно ли графическое представление узлов текстур и материалов?
...
ну да... и че? я прокаженный теперь?Просто ты спросил про рендер в самом окне блендера, я подумал, что тебя уже достало закрывать это повреевское окно.
LanuHum, без обид, но та желаемая функциональность, которую я описал, думаю, гораздо важнее встроенного скриптового моделирования... Если ты действительно хочешь развивать проект для "простых людей"... А остальное - это на данном этапе лишнее, думаю...
Я понял, что наш разговор подобен разговору глухого со слепым... Пока устранюсь... Проекту- успешного развития!Неправильно понял, но...
Да никуда я не убежал :) Реалтайм это 10-е дело....Я разве не написал, что будем менять интерфейс?
Похорошему: хочетсо внятный дизайн интерфейса и стабильность (в широком смысле, не только программном), чтобы написать документацию для привлечения юзерофф... Ясно о чем я?
LanuHum, у меня тоже при рендере выходит отдельное окно, после окончания рендера это окно закрывается и картинка появляется в окне блендера. Со "встроенным" повреем такое не наблюдается. Хотя мне это и не мешает.Я специально искал решение для линукса, чтобы рендер можно было контролировать. Встроенный поврей не смог решить эту проблему и запретил открываться окну аргументом в команде запуска рендера. Это проблема примитивной библиотеки SDL, которая используется в линуксе для поврея. Я просто посчитал, что очень плохо, когда пользователь не может наблюдать процесс периодически. Процесс может быть несколько десятков минут, а пользователь и приблизительно не имеет понятия, что же у него там получается, может, где-то ошибся - остановить бы процесс, да исправить, ан нет такой возможности у пользователя официальной сборки.
LanuHum, да ты не серчай сильно :)... Вообще, я тоже затеял "недоброе дело" - перевод справки к POV-Ray. Думаю "устаканиться" к исходу этого лета, если все пойдет гладко... Потому и спрашивал....Нисколько я не серчаю. Давай вести конструктивный диалог. Возможно, ты видишь, то, чего я в упор не наблюдаю. Я тебя пытаю, а ты о чувствах: не сердись, не обижайся... :)
Конструктивно: я выше написал своё пожелание...Конечно, тогда лучше бы было прямо сюда выкладывать обновления по интерфейсу, минуя github, пока мы не придём к общему знаменателю.
Блин, но самое сложное в том, что надо знать, че эти кнопочки и крутилки в инерфейсе значят... Для меня - это проблемма, т.к. я очень мало знаю о PoV-Ray. Потому, занялся пока переводом... Не будем спешить...Мне тоже трудно объяснить, например, параметр brilliance. Фактически, если brilliance равен нулю, то на границе света - тени на объекте просматриваются тёмные треугольники - фейсы. При увеличении этого параметра граница выравнивается, треугольники исчезают.
Но, нафига блокам Diffuse, Specular и т.д. по списку галочки?Какой ты шустрый :)
Я - врубаться в суть рендера, чтоб понимать термины типа "brilliance", хотя бы ...На верхней картинке слева brilliance 0, в средине brilliance 2, справа brilliance 4. Specular у всех 0
пойми, что все это - суть одно и тоже, в разных вариантах и с кучей нюансовЕсли бы я также хорошо знал интернал, как ты. :(
Да и ваще ... тыж писал, что в отпуске, вроде?В отпуске. У сестры в гостях в Воронеже. А что тут делать, водку пить? Сестра с мужем на работе, моря тут нету...сижу за компом, отдыхаю от завода. Может, когда-нибудь Поврей мне кусок хлеба даст. :)
Иногда полезно "отойти", чтобы увидеть" произведение в целом"... Отдохни... Никуда оно не денется...
А в чем их различия?...В визуальном оформлении. Слайдеры внизу, как столбики термометра показывают насколько от предела установлена величина.
Еще вопрос: Убрать типы интернолавских материалов можно? (т.е.: Surface, Wire, Volume, Halo)Не нужно, их можно
... есть возможность задать через Blender isosurface? если да, то как это сделать? ...
... хочу попробовать сделать вот такое только в объеме http://blendersushi.blogspot.ru/2013/08/osl-clover-x-flower.html ...
Видать, здесь - "затык". Я имел ввиду , что типы материалов Pov-Ray туда переместить (которые у тебя вверху выпадающим списком выбираются). Не знаю, есть ли аналогии интернолавским. Озадачил... Если есть, то надо как-то дописать это дело... Если их нет, то ничего страшного...
На счет типов материалов: лучше тогда убрать интерналовские .... то есть, удалить вообще все эти кнопки, чтобы не было путаницы... Как видишь, все это вроде как мелочи... но они в итоге могут завести нового пользователя "в ступор", и "скажут ему" на подсознательном уровне, что что-то не так... недоделано...
Узлы- это круто! Если ты можешь это внедрить, то это будет большим плюсом к продвижению рендера в массы...Я могу, но терпения может не хватить. Плюну я на массы, на рендер... :)
Я на работе по 12 часов зарабатываю на квартиру. Какой свой сайт? Мне жить негде, я в общаге живу: на кровати клавиатура, мышка, сижу боком к монитору, по английски не бум-бум. Пишу же: делаю, что могу и, что в моих силах. :)ЦитироватьМожет, когда-нибудь Поврей мне кусок хлеба даст.Приведи код и интерфейс в порядок (более-менее), создай свой сайт. Обновляй коннектор, пиши уроки, собирай пожертвования от заинтересованных пользователей... Просто все... И даже проще - эта ниша, толком, не занята никем в русскоязычном сообществе. Развивай англоязычный вариант... Думаю, тебе не только спасибо скажут :)
одно не пойму: ты сочувствия ищешь или коннектор к рендеру пилишь в данной теме? Или все сразу?
но нафига ты об этом постоянно жалуешься?Ты реально не понимаешь, что у человека может не быть ни времени, ни возможности создавать свой сайт, писать уроки? Однако. Тяжёлый случай :) Я не жалуюсь, я объясняю, что у меня нету времени и обычных минимальных для того условий..
Развиваю дальше:
Допустим - я "новоюзер -художник"и включаю POV-Ray на панели переключения рендерера. Что бы хотелось мне видеть в первую очередь?
1. дружественный и внятный интерфейс (ничего страшного, что на английском)
2. просмотр изменения материалов в режиме реального времени
3. рендер в окне, без запуска основной оконной оболочки Pov-Ray
4. стабильную работу без вылетов и ошибок (это самый раздражающий фактор)
5. желательно, реалтаймовое превью в 3D окне (ну мода пошла, да и удобно это очень , на самом деле)
... остальное - это второстепенные вещи...
Да, и мне нафиг не хочется знать ( в начале ознакомления с инструментом), куда там писать какие пути, чтоб оно заработало :) Да это все так "капризно", но таких пользователей большинство... И тебе,увы, придется писать под их виденье, если ты действительно хочешь развития проекта, да еще и в замен благодарности получать "тонны критики" :)... В основном "Суслик" поэтому и популярен стал: благодаря интерактивности и простоте использования,но он встроенный рендер... твоя задача даже сложнее.
Как завершу, тогда и пообщаемся по поводу твоего экспортера...Удачи!
можешь показать код со своими комментариями?Конечно могу.
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="")
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"
извини, что паразитирую, но можешь подумать на тему "создание узла для описания 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
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>}}
но как быть с декларациями типа R?Пиши первой строчкой:
sky_sphere { pigment {Не встречал ещё таких примеров для небесной сферы. Доберусь, может, когда-нибудь. В текстурах я прикрутил имеющиеся в подключаемых файлах функции. Здесь автоматически появляется столько крутилок, сколько требуется для корректировки
function{abs(y)}
... если будет время посмотри можно ли положительную практику OSL узлов перенести для isosurface ...
... суть Ослика в Суслике задать характеристики поверхности, и в сам скрипт можно передавать параметры от других узлов ...
не хотел вносить недоразумений,Недоразумения я принимаю, как рабочую обстановку.
упрощает их связывание с другими узлами или заданию параметров по умолчаниюЭтот узел, другой, не важно. Я вижу смысл в узле, если без него не обойтись. Если я открою блендер, чтобы создать зелёный куб, зачем мне ноды? Я просто не понимаю. Почему нельзя просто, как сферу создать объект isosurface и присвоить ему зелёный материал? Я, именно, на это нацеливался, добавив в проект файл add_povray_shapes. В него я хотел перенести все повреевские объекты, в том числе и isosurface. Не клацать write as, а также, как сферу shift-A => povray shapes => isosurface. Подключил текст, настроил необходимое, всё. Открывай материал, присваивай. Сложно? Открывай редактор нодов, вяжи узлы из материалов.
>> Подключил текст, настроил необходимое, всё. Открывай материал, присваивай. Сложно?
... мне нужно долее детально погрузиться в тему ...
... к понедельнику дам ответ ...
... да и более того, нужно еще сделать так чтобы эта a и b могли изменяться во время анимации ...Хорошая подсказка. Проверил. Не анимируется color_stop. При чём, причина неизвестна. Другие мои коллекции позволяют анимировать свои элементы. Но, кривые не наблюдаются для визуального редактирования. Ой, ё-моё!
... вот аналог на картинке - есть узел R, свойство Value которого анимировано кривой и его значение передается другому узлу ...
... если будет нода isosurface с "крутилками" a и b, то им тоже можно будет передавать анимированные значения с других узлов? ...
а какой текст сообщения об ошибке? ...
... а получиться так же обработать isosurface? ...Так это ж как раз для 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>}}
accuracy 0.003
max_gradient 5
... покажешь готовый пример? ...Где? В блендере? Мне ж ни одна неделя понадобится, чтобы перенести всё, что я до сегодняшнего дня сделал на движок Cycles. :) :) :)
... дефолтный кубик не рендерит ...Так и должно было быть, если присутствовали слоты материалов. А, у дефолтного кубика есть материал. Но, я же писал: "Пока только запуск движка (render.engine)"
... как токарь токарю, сначала нужно подготовить оснастку, заточить инструмент, подобрать режимы резания ... ...
... пропиши общую архитектуру экспортера ...
или так
... мне бы сейчас хотелось:
1) иметь узел в который можно было бы положить целиком текст pov файла и чтобы рендер выдал картинку в Blender ...
2) иметь возможность разобрать в редакторе этот файл на составные текстовые узлы ...
3) иметь возможность передавать в составной текстовые узел параметры ...
итого: иметь возможность сделать декомпозицию pov файла с помощью текстовых узлов, которые при нажатии на будут собраны в один pov файл, этот файл обработан, результат отдан в Blender ...
... это будут одни голимые текстовые узлы с входными параметрами :) ...
И кто сможет этим пользоватся?Кто сможет, тот и воспользуется. Вовсе необязательно этот инструмент делать основным для всех пользователей.
Тогда нужно на форуме делать отдельный повторяющийся курс по "пониманию и написанию скриптов-текстовых блоков .pov"Old Demon, вроде как делает перевод документации Поврея.
... сейчас нужно чтобы заработал механизм сборки узлов в единый pov файл, нужны еще правила сборки и т.д. и т.п. ...Вовсе необязательно собирать единый файл. Почти каждый узел может быть записан в отдельный файл xxx.inc и подключен строкой #include "xxx.inc"
.. LanuHum, было бы не плохо если бы вместе с экспортёром выкладывались и тестовые blend файлы ...Дело здесь ни в файлах. После подключения аддонов необходимо один раз настроить блендер и сохранить startup файл
... мне не удалось добавить материал к дефолтному кубу - на вкладке материалов ничего нет ...
... сейчас даже сложно сказать насколько эти варианты будут юзабельны, но хотелось бы выбрать один раз тип рендер, настроить его и больше ничего не переключать ...Будем к этому идти, но, пока я не разобрался, как это реализовать. Может, наткнёшься на туторы по этой теме. Ещё раз объясняю проблему. OSL работает только в суслике, нод script можно сформировать только в суслике, а, чтобы запустить рендер povray клавишей (http://blender-3d.ru/forum/hotkey/f12.jpg) (http://"modules/sections/index.php?op=viewarticle&artid=24"), нужно переключиться на povray render. Если я изначально переназначу cycles на povray, не будет предпросмотра материалов.
"ноды"- это достаточно долгая и трудоёмкая задача...Я так не считаю. Мне сложней было прийти к тому, к чему я уже пришёл.
З.Ы. перевод идет, но со скрипом... в июле выложу частичныйЯ в августе выложу нормально функционирующую версию аддона, где в основе будет лежать редактор нодов cycles.
Заниматься надо концепцией "ядра"Отстал в развитии я. Что есть ядро и его концепция?
... мне кажется, что тот Код, который сейчас формируется по обработке нодов, будет трудномодифицируемым ...Мы же говорили о том, что инструменты могут быть различные. Создать несколько нодов, которые будут вязать фрагменты текстовых блоков - это просто, и я их сделаю. Другое дело, обеспечить юзабельность для пользователей, которые не желают ничего знать про текст, и, вообще, про то, как связан блендер с повреем. Что делать, если какому-нибудь юзеру, как, собственно, и мне самому, например, нужно создать материал, который в нодах выглядит так:
... поэтому, с некоторой опаской, но всё же реквестирую по вопросу текстовых узлов из поста http://blender-3d.ru/forum/index.php/topic,771.msg8186.html#msg8186 ...
... даже несмотря на то что это выглядит как паллиативное решение ...
>> Другое дело, обеспечить юзабельность для пользователей, которые не желают ничего знать про текст
... так ведь визуальных отличий на самом деле не так много будет ;) ...
... на самом деле практически всем узлам в суслике есть текстовые аналоги на ослике и при желании можно использовать скриптовые ноды-аналоги ...
... уточни о ком речь, ведь основной разработчик Cycles совсем недавно покинул проект и нужно время чтобы появилась замена ...Да, не нашёл я что-то. Ты мне ссылку давал на интервью с нашим парнем, который занимается разработкой Cycles, и, он как я ужасно недоволен сообществом.
... покажешь? это всё очень интересно ...Конечно же покажу. Скажу больше, все желающие будут этим пользоваться. Но, не сегодня. Чтобы показать, я должен уже иметь ноды, которые я пока размышляю. :)
if scene.name == 'preview':
self.render_preview(scene)
else:
self.render_scene(scene)
Вместо сравнения имени надо использовать свойство RenderEngine.is_preview.Да, это я уже нашёл, дописал. Не подчистил, правда.
... там же сбоку кнопочка есть "Update ...", вроде не напрягает нажать ...Нет, это не работает. В аддоне cycles написаны функции обновления этого узла, которые, как ты можешь догадаться, требуют обращения к CyclesRenderEngine.
import _cycles
>> Давайте советоваться.Николай, ё-моё! От тебя меньше всего ждал критики.
нихрена не пойму.... а ты похвалы ожидал чели?:)
... Моё мнение - ноды должны быть короче, а сокетов больше ...Хитрите, сударь. Я же тоже чуть-чуть умею в блендере работать, и, я не вижу никакого удобства вытягивать из меню каждый параметр и привязывать. Это больше уже на игру по сборке пазлов будет похоже, нежели на эффективную работу по текстурированию моделей.
... вообще не_сокетов не надо ...
Дык сам возьми и нарисуй несколько вариантов своего виденья... Тогда читатели оценят и выскажутсяВот нарисовал. Теперь объясните мне, чем ваша схема слева лучше моей схемы справа?
Лично меня устроил бы и один первый вариант, но с сокетами как на картинке ниже.Зачем они нужны в первом варианте? Просто, чтоб были? Это то, что в поврее называется finish. Здесь только параметры и никаких комбинаций, которыми можно бы было эти параметры заменить, подключая к сокету что-то. :)
Я пока еще не читал о материалах, и не понимаю как они взаимодействуют в POV-Ray. Возможно ли смешать несколько материалов, как в интернале?Для этого ж мы тут и нодами занимаемся! Какой смысл создавать ноды, если нечего смешивать?
...И не жди от меня полной документации скоро, сам изучай, если хочешь двигать свой экспортер быстрее...Мне твоя документация и нафиг не нужна. Ты б для ускорения меня лучше б спрашивал, что и как. :)
Видел в стандартном экспортере еще три типа материала: Pattern, Pigment Pattern и Layered. Замечательно было бы иих туда все тоже запихнуть... и текстурные паттерны и т.д и т.п.Для этого и переехали на ноды. Pigment Pattern может использовать готовые ноды, а вот Pattern и Layered просят нод script. Этим я, собственно, теперь и буду заниматься.
а вот Pattern и Layered просят нод script.Хотя и необязательно :)
... это "обратная связь"? в принципе можно делать множественную связь на один входной сокет ...Я не знаю, как делать множественную связь на входной сокет, но, собственно, в нашем случае, абсолютно, неважно, что есть входной, а, что есть выходной сокет.
import bpy
text=bpy.data.texts["Script"]
if text:
bpy.data.texts.remove(text)
text=bpy.data.texts.new("Script")
text.write('#include "stdosl.h"\n')
text.write('shader pattern(\n')
text.write(' color Value = 0.0,\n')
for i in range(0,8):
text.write(' float Color_stop_%s = 0.0,\n'%i)
text.write(' float Filter_%s = 0.0,\n'%i)
text.write(' color Color_%s = 0.0,\n'%i)
text.write('output color Color = 1){}\n')
tree=bpy.context.object.active_material.node_tree
rl = tree.nodes.new('ShaderNodeScript')
rl.location = 0,0
rl.mode="INTERNAL"
rl.script=bpy.data.texts["Script"]
rl.inputs["Value"].hide_value=True
Надеюсь, это тебе поможет внедрить экспорт волюметриков из блендера в POV-Ray.
... это как раз для тех случаев когда очередность определяется предопределенным значением параметра связанного узла ...Принадлежность того или иного материала определённому участку серого задаётся параметром, который в блендере в color ramp есть color stop.
... в случае pigment patterns для узла ITEM_MAP_BODY значением GRAY_VALUE связанных узлов ITEM_MAP_ENTRY ...
... насколько понял из http://www.povray.org/documentation/view/3.6.1/388/ ...
... но если будет управляющий узел "color ramp", то нельзя ли в ноде "pigment patterns" сделать стек сокетов в зависимости от количества "color stop"? то есть сколько в "color ramp" присутствует "color stop", то столько будет в ноде "pigment patterns" автоматически создано сокетов "shader" ...
... выглядит неплохо и очень даже юзабельно ...О.К.
По .df3 нашел это http://povray.tashcorp.net/tutorials/script_df3/
Внизу страницы можно скачать архив.
Using The Class
A quick example that creates a 10x10x10 voxel .df3 file and initializes all values to 10. Start python and do the following with df3.py in either your path or the current directory:
import df3
mydf3 = df3.df3(10,10,10)
for x in range(mydf3.sizeX()):
for y in range(mydf3.sizeY()):
for z in range(mydf3.sizeZ()):
mydf3.set(x, y, z, 10)
mydf3.exportDF3('out.df3')
Typing 'help(df3)' at the python prompt will give class information after df3 has been imported
... у меня нормально ссылка отработала ...Добрался и я до этого архива. Распаковал, запустил, создал temp.df3, отрендерил...и, ничего не понял
... нужен пример или возможность создавать файлы в Blender? ...Нужно разобраться со скриптом. Я так понимаю, в примере массив создаётся равномерно по трём осям. Чтобы задать неравномерность, нужно кумекать. Если учесть, что кто-то использует для этого слои картинки, как я где-то видел, то можно что-то представить. :)
есть ли возможность, "избавиться" от необходимости знания команд Python в Блендере для простых юзеров-не программеров, но чтобы у них появилась интуитивно понятная возможность программировать с помощью тех же узлов, как в проге примера ниже?Можно избавить юзера от необходимости знания команд, если знать, что юзер хочет.
Зачем оно надо:Для того, чтобы юзер смог сделать то, о чём ты пишешь, должен быть код в экспортёре, интерпретирующий фантазии юзера. У меня такого не будет в ближайшее время.
Допустим, вдруг юзер захочет анимацию замутить или рассчитать параметры с помощью какого-то математического выражения? Ты предлагаешь каждый параметр отдельно анимировать?
тогда я не пойму смысл всех этих твоих узлов... это типа для крутизны чели ? :))))Так с нодами удобней же назначать множественные материалы и текстуры. :)
...а ты предлагаешь всем врубаться в язык POV-Ray? или в Python? Нафига тогда эскпортер ваще писать?Ты терпение моё проверяешь? bdancer сразу к своему экспортёру ноды прикрутил? А может, он сначала ноды прикрутил, а потом экспортёр начал писать?
Ты че нить в художественных вещах понимаешь? Разбираешься в этой теме вообще? Дык вот и полегче тогда....А ты программируешь? Если да, то хотел бы я почитать, где ты на всеобщее обозрение освещаешь каждый свой шаг. Я б тебе тоже всякой чешуи там понаписал бы про устройство вселенной.
... даже без анимации в сокетах есть польза, пример - есть два узла с числовыми параметрами и нужно сделать так, чтобы эти параметры имели одинаковое значение, тогда линкуем сокеты этих параметры с узлом сокетом узла Value ...Читай выше, врубился я. Просто, у меня мысли в одну сторону работают, а объяснений выгоды от участников добиваюсь только гранатомётом. :)
sungreen, спасибо за перевод со стародемонического на ланухумскийВот вам за это:
Ты писал, что не дружишь с кодом... т.е. не понимаешь как кодируются цвет, нормали и простые параметры в Блендере. Изучи вопрос. Это тебе поможет меньше таких несуразностей постить
кроме чекбоксовРаз уж они анимируются в блендере, то кому-то обязательно захочется меня достать по этой теме. Сразу исключаю такой вариант. :)
Они не равны...
R= от 0 до 0.35
G= от 0 до 0.45
B= от 0 до 0.20
Итого в сумме BW = 1, если цвет RGB белый... Т.е. при конвертации в серые тона учитывается только светлота каждой из компонент RGB цвета...
<film height="540" width="960" />
<shader name="Material">
<diffuse_bsdf
Color="0.800000 0.800000 0.800000 1.000000 "
Normal="0.000000 0.000000 0.000000 "
Roughness="0.000000 "
name="Diffuse_BSDF" />
<tex_image
Alpha="0.000000 "
Color="0.000000 0.000000 0.000000 0.000000 "
Vector="0.000000 0.000000 0.000000 "
name="Image_Texture" />
<rgbtobw
Color="0.500000 0.500000 0.500000 1.000000 "
Val="0.000000 "
name="RGB_to_BW" />
<connect from="Diffuse_BSDF BSDF" to="output Surface" />
<connect from="Image_Texture Color" to="RGB_to_BW Color" />
<connect from="RGB_to_BW Val" to="Diffuse_BSDF Color" />
</shader>
<transform matrix="1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 ">
<state shader="Material">
<mesh P="1.0 0.9999999403953552 -1.0 1.0 -1.0 -1.0 -1.0000001192092896 -0.9999998211860657 -1.0 -0.9999996423721313 1.0000003576278687 -1.0 1.0000004768371582 0.999999463558197 1.0 0.9999993443489075 -1.0000005960464478 1.0 -1.0000003576278687 -0.9999996423721313 1.0 -0.9999999403953552 1.0 1.0" nverts="4 4 4 4 4 4 " verts="0 1 2 3 4 7 6 5 0 4 5 1 1 5 6 2 2 6 7 3 4 0 3 7 " />
</state>
</transform>
<transform matrix="-0.29086464643478394 -0.7711008191108704 0.5663931965827942 4.076245307922363 0.9551711678504944 -0.1998833566904068 0.21839119493961334 1.0054539442062378 -0.05518905818462372 0.6045247316360474 0.7946722507476807 5.903861999511719 0.0 0.0 0.0 1.0 "><light P="4.076245 1.005454 5.903862" /></transform>
<transform matrix="0.6858805418014526 -0.31737011671066284 0.6548618674278259 7.481131553649902 0.7276337742805481 0.31246861815452576 -0.6106656193733215 -6.5076398849487305 -0.010816780850291252 0.8953432440757751 0.4452453553676605 5.34366512298584 0.0 0.0 0.0 1.0 "><camera farclip="100.0" focaldistance="0.0" nearclip="0.10000000149011612" type="perspective" /></transform>
... возможно, что Cycles получает не так много инсайдерской информации от Blender ...Думаю, что это не так. Скорее всего, через Питон получает не так много
... вот пример XML с конвертом RGB2BW и с внешней картинкой ...Очевидно, что на стороне рендера выполняется конвертация, но, смысл остаётся тем же: у поврея нет инструментов, чтобы он смог понять в любом формате текст, несущий вот такую информацию:
... очевидно конвертация выполняется на стороне рендера, а не редактором ...
<connect from="Diffuse_BSDF BSDF" to="output Surface" />
<connect from="Image_Texture Color" to="RGB_to_BW Color" />
<connect from="RGB_to_BW Val" to="Diffuse_BSDF Color" />
Смею возразить насчет вышеизложенного подхода.А, ты считаешь удобным новичку и не новичку удобным присваивать неизвестную величину на слайдере имеющем минимум -10000000000, а максимум столько же в плюсе, хотя требуемый параметр колеблется от нуля до единицы? Я первый вижу в этом ужасное неудобство, когда слайдер не имеет разумных пределов, даже, если я искусственно ограничу его запредельные значения в коде двумя строчками:
Зачем тогда программист, если он не обладает предвидением действий пользователя-новичка? Новичек всегда будет тыкать туда, поначалу, где надо и не надо... И это нормально :) ... и что, на самом деле, самое веселое :)
...
Не проще ли в самом коде экспортера задать условия?
Грубо на псевдопрограммном языке это выглядит так:
Если параметр такой-то < значение или > значение, то действия по приведению этого всего барахла в порядок...
...
и т.д и т.п...
...
if f>9:
f=9
продолжай ...Продолжаю.
Для вдохновения ... ( и пожелание ) одной анимированной картинкой (тайлится).Это где в доках?
Почему у тебя BSDF на нодах, а не BRDF написано? И ваще нафига оно там написано?Там будет написано Material
Но ты же всерьёз не думаешь прикручивать моделирование и булены к Блендеру? Если да, то я посмеюсь, потому что проще написать приложение-3d моделер под него с нуля, чем выпендриваться (скриптами!!!-что смешно), подгоняя под него Блендер :)Булены будут. Насколько это тебе не понравится, или, насколько тебе будет весело, это уже другое дело. Иногда и неуклюжая симуляция может оказаться ох как кстати
Как аргумент, на твои возмущения: а все ли типы ламп POV-Ray аналогичны типам ламп в Blender?point, sun, hemi, area, spot, можно счиать аналогичными.
Где кнопка сохранить излучательность в файл (такая возможность есть)?Ещё, вообще нет нодов сцены. Там будет эта кнопка.
Ты пойми, что мало-кто хочет писать формулы и перерендеривать по сто раз, не видя превью сразу... это непродуктивно и отнимает кучу времени...Превью будет работать, оно прикручено уже капитально и хочет предоствить просмотр, но не может. Не написана расшифровка узлов, из-за этого превью не видит, что показывать.
Иначе, фиг его знает, как-то по иному по смыслу разбить, но не делать кучей (в интернале так- ноды матов отдельно, текстур-отдельно... ноды светильников -отдельно и т.д и т.п... ну ты понял, надеюсь)...Задал же вопрос в теме про скрипты, как отсортировать - пока молчок.
Только не говори, что все это из-за эффекта каустикиДа, выпендриваюсь я просто. То мне каустика нужна, то большой выбор процедурок, а сам стою по 11 часов за станком, и, уже кажется, что так будет до смерти. И ни повреем я не попользуюсь, и ни сусликом с интерналом :)
Блин, ну не все же сразу?Да, не всё сразу, но, необходимо, всё-равно, прикинуть направление развития, и, заложить необходимый потенциал, чтоб потом не переделывать всё с самого начала из-за того, что сразу плюнул, решив, что потом.
ob=scene.objects.active
mat=ob.active_material
povTexName=string_strip_hyphen(bpy.path.clean_name(mat.name))
color = "pigment {rgbt <%.4g,%.4g,%.4g,0>}"%mat.diffuse_color[:]
if mat.use_nodes:
ntree = mat.node_tree
declareNodes=[]
if len(ntree.nodes)==0:
file.write('#declare %s = texture {%s}\n'%(povTexName,color))
else:
for node in ntree.nodes:
povNodeName=string_strip_hyphen(bpy.path.clean_name(node.name))
if node.bl_idname == "PovrayImageNode" and node.outputs["Color"].is_linked:
declareNodes.append(node.name)
if node.image == "":
file.write('#declare %s = %s\n'%(povNodeName,color))
else:
im=bpy.data.images[node.image]
if im.filepath and os.path.exists(bpy.path.abspath(im.filepath)):
uv=""
filepath=bpy.path.abspath(im.filepath)
file.write('#declare %s = pigment {%s image_map {\n'%(povNodeName,uv))
file.write(' "%s" map_type %s interpolate %s}}\n'%(filepath,node.map_type,node.interpolate))
for i in range(0,len(ntree.nodes)):
for node in ntree.nodes:
if node.type=='VALTORGB':
inShader=0
decShader=0
for inp in node.inputs:
if inp.name not in {"Pattern","Mapping","Transform","Modifier"} and inp.is_linked: # тут, по-моему, что-то не так!
inShader+=1
for link in ntree.links:
lts=link.to_socket
if lts.node==node and lts.name==str(inShader) and (link.from_node.name in declareNodes):
decShader+=1
if inShader == decShader and (node.name not in declareNodes):
declareNodes.append(node.name)
print (declareNodes)
node.name (и node.label) может переопределить пользователь, для сравнения надо использовать node.bl_idname либо node.bl_rna.identifier.Кодif inp.name not in {"Pattern","Mapping","Transform","Modifier"} and inp.is_linked: # тут, по-моему, что-то не так!
>> Git обновлён.Пока нет файлов. Да, и пока не будет основательно прописан указанный мною код, смысла их создавать нет. Как только я закончу развязку нодов, можно будет тестировать назначение материалов. Тогда я и выложу несколько файлов.
... а тестовые файлы (сцены) есть? ...
что модифицированный нод ни хрена не сохранился.Что значит "модифицированный нод"? Что конкретно не сохраняется?
Цитироватьчто модифицированный нод ни хрена не сохранился.Что значит "модифицированный нод"? Что конкретно не сохраняется?
tmap = tree.nodes.new('ShaderNodeValToRGB')
tmap.label="Pattern"
for inp in tmap.inputs:
tmap.inputs.remove(inp)
for outp in tmap.outputs:
tmap.outputs.remove(outp)
pattern = tmap.inputs.new('PovraySocketPattern', "Pattern")
pattern.hide_value = True
mapping=tmap.inputs.new('NodeSocketVector', "Mapping")
mapping.hide_value=True
transform=tmap.inputs.new('NodeSocketVector', "Transform")
transform.hide_value=True
modifier=tmap.inputs.new('NodeSocketVector', "Modifier")
modifier.hide_value=True
for i in range(0,2):
tmap.inputs.new('NodeSocketShader', "%s"%(i+1))
tmap.outputs.new('NodeSocketShader', "Material")
tmap.outputs.new('NodeSocketColor', "Color")
LanuHum, скорее всего это так и должно быть. Питон АПИ для нод сделано, чтобы создавать свои питоновые ноды, а не модифицировать существующие (которые из C/C++).Ну-да, раз так есть, то, значит, так и должно быть, это ж не Lanuhum писал а Прайс, или кто там...
Я вообще не понимаю нафига все ноды пихать в одну кучу,если не делаешь визуального программирования ... Если так, то надо просто язык перевести в узлы и все (что проще- язык поврея и переводишь в инженерную структуру блок-схемы)... о чем я трындю и трындю...Собственно, я, и перевожу язык в узлы, а о чём ты трындишь и трындишь мне непонятно, но, хотелось бы спросить, ты превью проверил по моей просьбе? Проверка мне нужна была только для написания правильных команд для Винды, которые она должна прочитать и выполнить. Только это и не больше.
Иначе, фиг его знает, как-то по иному по смыслу разбить, но не делать кучей... в интернале так: ноды матов отдельно, текстур-отдельно... значит, надо и ноды светильников - отдельно и т.д и т.п... ну ты понял, надеюсь... Можно и как в Сусле все до кучи, не вопрос... Но если там еще появятся изоповерхности, со временем, думаю это будет тихий ужос :)
1. Зачем было все ранее написанное "ломать" и переводить на систему "нодов Сусла"?Чтобы изучить и понять. Сегодняшняя картинка говорит о том, что я уже отказался от системы нодов Сусла
2. Почему нельзя было оставить старый код? и просто добавить кнопку типа {Use Nodes}, как это реализовано в Internal Renderer, и от того "плясать" далее?Потому что из-за отсутствия документации было неизвестно, как прикрутить к RenderEngine POVRAY ноды материалов.
3. Концепция прикручивания этих самых узлов , так и не ясна до сих пор: Расшифровываю: Sungreen, писал о механизме преобразования .pov фалов в систему узлов и обратно. Это самый гибкий вариант, на самом деле, но требующий разработки продуманного механизма импорта экспорта в .pov файл. т.е. того самого ядра твоего экспортера. Узлы бы тогда могли писать сами юзеры, и тебе бы это облегчило работу. ...Я тебе писал про различия в подходе к узлам Суслика и Интернала (см. пункты 1 и 2) и про то, что бы ты сначала хорошенько все продумал, и определился со своим подходом ...а решать только тебе, это ж твой экспортер... но... пока какая-то абракадабра...уж извини, если тебя реально волнует моё мнение.
#declare Texture_3=texture{
pigment_pattern { agate pigment_map{
[0 color rgb 0]
[1 color rgb 1]}
}
texture_map {[0 texture{pigment{granite
pigment_map{[0 color rgb 0]
[0.1 pigment{agate pigment_map{[0 color rgb 0][1 color rgb 1]}}]
[1 color rgb 1]}}
finish{reflection 1 metallic 1}}]
[1 texture{pigment{granite
pigment_map{[0 pigment{agate pigment_map{
[0 color rgb 0]
[1 color rgb 1]}
}]
[0.1 pigment{granite pigment_map{[0 color rgb 0]
[0.1 pigment{agate pigment_map{[0 color rgb 0][1 color rgb 1]}}]
[1 color rgb 1]}}]
[0.1 pigment{granite pigment_map{[0 color rgb 0] [0.1 color rgb 0.6]
[0.1 pigment{granite pigment_map{[0 color rgb 0]
[0.1 pigment{agate pigment_map{[0 color rgb 0][1 color rgb 1]}}] [1 color rgb 1]}}]}}]}} finish{emission 0.3}}]}
}
#declare Pigment_1=pigment{agate pigment_map{[0 color rgb 0][1 color rgb 1]}}
#declare Pigment_2=pigment{granite pigment_map{[0 color rgb 0] [0.1 {Pigment_1}] [1 color rgb 1]}}
#declare Pigment_3=pigment{granite pigment_map{[0 color rgb 0] [0.1 color rgb 0.6] [0.1 {Pigment_2}]}}
#declare Pigment_4=pigment{granite pigment_map{[0 {Pigment_1}] [0.1 {Pigment_2}] [0.1 {Pigment_3}]}}
#declare Mirror=finish{reflection 1 metallic 1}
#declare Emitter=finish{emission 0.3}
#declare Texture_1=texture{pigment{Pigment_2} finish{Mirror}}
#declare Texture_2=texture{pigment{Pigment_4} finish{Emitter}}
#declare Texture_3=texture{
pigment_pattern { Pigment_1 }
texture_map {[0 Texture_1][1 Texture_2]}
}
#declare Pattern_1 = texture{ marble texture map
[0 Texture_1]
.....................
[1 Texture_n]}
Поглядел. Не работает, LanuHum. Но ты не парься особо по этому поводу пока.Пусть спецы посмотрят. Ошибка где-то здесь:
class PovrayRender(bpy.types.RenderEngine):
bl_idname = 'POVRAY'
bl_label = "Povray render"
bl_use_preview = True
DELAY = 0.5
@staticmethod
def _locate_binary():
addon_prefs = bpy.context.user_preferences.addons[__package__].preferences
pov_binary = addon_prefs.binary
if pov_binary:
if os.path.exists(pov_binary):
return pov_binary
else:
print("User Preference to povray %r NOT FOUND, checking $PATH" % pov_binary)
if sys.platform[:3] == "win":
import winreg
win_reg_key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, "Software\\POV-Ray\\v3.7\\Windows")
win_home = winreg.QueryValueEx(win_reg_key, "Home")[0]
if platform.architecture()[0]=='64bit':
pov_binary = os.path.join(win_home, "bin", "pvengine64.exe")
if os.path.exists(pov_binary):
return pov_binary
if platform.architecture()[0]=='32bit':
pov_binary = os.path.join(win_home, "bin", "pvengine.exe")
if os.path.exists(pov_binary):
return pov_binary
pov_binary_default = "povray"
os_path_ls = os.getenv("PATH").split(':') + [""]
for dir_name in os_path_ls:
pov_binary = os.path.join(dir_name, pov_binary_default)
if os.path.exists(pov_binary):
return pov_binary
return ""
def render(self, scene):
if self.is_preview:
declareNodes=[]
workDir=os.path.dirname(__file__)
previewDir=('%s/preview/'%workDir)
if sys.platform[:3] == "win":
previewDir="C:\\povray\\preview"
if os.path.exists(previewDir)==False:
if sys.platform[:3] == "win":
os.makedirs("C:\\povray\\preview", mode=0o777, exist_ok=False)
else:
os.mkdir('%s/preview/'%workDir)
file = open("%sPreview.ini"%previewDir, "w")
file.write("bla-bla-bla")
file.close()
file = open("%sPreview.pov"%previewDir, "w")
file.write("bla-bla-bla")
file.close()
pov_binary = PovrayRender._locate_binary()
self._process = subprocess.Popen(["%s"%pov_binary,"-d","%s/Preview.ini"%previewDir],stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
self._process.wait()
imageFile="%sPreview.png"%previewDir
if os.path.exists(imageFile):
result = self.begin_result(0, 0, x, y)
lay = result.layers[0]
time.sleep(self.DELAY)
lay.load_from_file(imageFile)
self.end_result(result)
else:
print("***POVRAY FILE NOT FOUND***")
Код...подстолом! :D ;D :)file.write("bla-bla-bla")
Смари че пишет (скриншот показывает туже самую ситуацию)... Но ты особо не парься... хрен с ним с этим превью под винду пока что на данном этапе...файл render.py строка 805
self._process = subprocess.Popen(["%s"%pov_binary,"-d","%s/Preview.ini"%previewDir],stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
,"-d"
self._process = subprocess.Popen(["%s"%pov_binary,"%s/Preview.ini"%previewDir],stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
Лучше сделай кнопку в панели узлов, типа "обновить" и чекбокс "автообновление" при изменениях, что бы был выбор у пользователя ... хотя...Ничё не понял. Что будем обновлять? По умолчанию выскакивают два интерналовских нода? Там же есть чекбокс use node, который должен обновить.
... создал два объекта и два различных материала, присвоил каждому объекту свой материал, но на рендеринге оба объекта одного материала ...Благодарю! Косяк обнаружен, исправлю. Я присвоил материалам имена нодов не учитывая, что они могут иметь одни и те же имена в разных деревьях. Нужно к имени нода добавить имя дерева, тогда должно быть всё нормально.
... еще на вкладке Render пусто ...Пустота заполнится, до этого, просто, я не дошёл ещё.
Цитировать... создал два объекта и два различных материала, присвоил каждому объекту свой материал, но на рендеринге оба объекта одного материала ...Благодарю! Косяк обнаружен, исправлю. Я присвоил материалам имена нодов не учитывая, что они могут иметь одни и те же имена в разных деревьях. Нужно к имени нода добавить имя дерева, тогда должно быть всё нормально.
Цитироватьnode.name (и node.label) может переопределить пользователь, для сравнения надо использовать node.bl_idname либо node.bl_rna.identifier.Кодif inp.name not in {"Pattern","Mapping","Transform","Modifier"} and inp.is_linked: # тут, по-моему, что-то не так!
... как уже было отмечено, то наверное лучше использовать идентификаторы, а не имена ...Я и использую идентификаторы для выстраивания нодов в очередь на декларацию. Для создания индивидуального имени пигмента, текстуры и прочего идентификаторы не годятся.
LanuHum, поменял, но не фуричит... хоть бы ругался иначе, но трындит тоже самое...Ну, коль ты переводишь доки, тебе и искать правильные команды для виндовс, чтобы запустить поврей в теневом режиме.
previewDir=('%s/preview/'%workDir)
if sys.platform[:3] == "win":
previewDir="C:\\povray\\preview"
if os.path.exists(previewDir)==False:
if sys.platform[:3] == "win":
os.makedirs("C:\\povray\\preview", mode=0o777, exist_ok=False)
else:
os.mkdir('%s/preview/'%workDir)
Есть там эти директории...
Не пойму, нафига сразу к нагличанам лезть с вопросами?... это ж, вроде, проблема твоего экспортера, а не рендерера...Это проблема твоего виндового поврея. Он не хочет работать в теневом режиме, открывая свою гуёвину. Мне там расскажут, как запустить. Но, даже, если я виноват, то мне укажут на ошибку. У них ни твой менталитет, чтобы сразу валить все шишки на того, кто ищет ответ. :)
Ноды красные...Покажешь, нет?
previewDir="C:\\povray\\preview""C:\povray" не самый лучший вариант для экспорта, попробуй использовать модуль https://docs.python.org/3.4/library/tempfile.html.
поменял, но не фуричит... хоть бы ругался иначе, но трындит тоже самое...Скорее всего проблема в слешах. Попробуй использовать os.path.join() и os.path.normpath() и т.п. вместо того, чтобы запариваться на ручное составление путей.
А, если в дереве несколько нодов с bl_idname == "PovrayImageNode"?Я писал, что для определения типа ноды надо использовать, что угодно, но не node.name, как вариант, node.bl_idname.
Ноды красные...Блендер по-любому напишет в консоли причину этого...
если тебе не сложно, вруби ее у себя в подписи, как сделано у bdancer.Врубил.
Я писал, что для определения типа ноды надо использовать, что угодно, но не node.name, как вариант, node.bl_idname.Я так и понял, но, я уже тогда и использовал node.bl_idname.
"C:\povray" не самый лучший вариант для экспорта, попробуй использовать модуль https://docs.python.org/3.4/library/tempfile.html.Попробую.
Скорее всего проблема в слешах. Попробуй использовать os.path.join() и os.path.normpath() и т.п. вместо того, чтобы запариваться на ручное составление путей.Скорее всего, так и есть:
oh, it looks like something is wrong with the slash/backslash\ handling in the
report. Can you let me know if the last version does work for you?
wheneverpossible using the os.path module methods to concatenate, truncate or
whatever one has to do with paths makes sure it works more smoothly across
platforms. possibly one slash should be removed from the hardwritten filename
and left to be handled by the python's os.path methods, for instance current
version is:
workDir=os.path.dirname(__file__)
previewDir=os.path.join(workDir, "preview")
## Make sure Preview directory exists and is empty
if not os.path.isdir(previewDir):
os.mkdir(previewDir)
iniPrevFile=os.path.join(previewDir, "Preview.ini")
inputPrevFile=os.path.join(previewDir, "Preview.pov")
Читать там особо, пока нечего...Ты б начал с материалов, с текстур, паттернов, короче, с того, что будет использоваться в Блендере. Анимировать кто будет используя возможности Povray? Это уже б на закуску для особо одарённых. Туда же и про макросы. Или ты про макросы сразу после анимации возьмёшься? :)
Я пробовал подставлять заранее объявленные переменные вместо числовых параметров с помощью директивы #declare... это работает... И мне непонятно, почему ты настаиваешь на ином подходе...Не понимаю я тебя, что ты хочешь? :)
#declare Image_Material = pigment { image_map {"/home/leonid/blender/textures/grid.jpg" gamma 2 premultiplied off map_type 5 interpolate 2 filter all 0 transmit all 0 }}
#declare Full_Material_Material = texture {
pigment {rgbft <0.0897,1,0.0235,1,0>}
finish {
diffuse 0.8
specular 0.5 roughness 0.02
emission 0 brilliance 1.8 crand 0
ambient rgb <0,0,0>
}}
#declare Full_Material_001_Material = texture {
pigment {rgbft <1,1,1,0,0>}
finish {
diffuse 0.8
specular 0.5 roughness 0.02
emission 0 brilliance 1.8 crand 0
ambient rgb <0,0,0>
reflection{<1,1,1> falloff 0 exponent 1 metallic 0}
}}
#declare Pigment_Pattern_Material = texture {
pigment_pattern {Image_Material} texture_map {
[0, Full_Material_Material]
[1, Full_Material_001_Material]}}
box {-10,10 rotate <0,45,0> pigment{checker pigment{rgb 0.2}, pigment{rgb 0.8} rotate<0,90,0>}}
sphere {0,1 scale 2 translate <0,0.4,0>texture {Pigment_Pattern_Material} interior { ior 1.545454502105713 }}
light_source {<4.08,5.9,-1.01> color rgb<1, 1, 1>}
camera {location <0, 0, 0> look_at <0, 0, -1>
right <-1.3333333333333333, 0, 0>
up <0, 1, 0> angle 49.134343
rotate <-27.098163, 46.688390, -0.903519>
translate <7.481132, 5.343666, 6.507640>}
Слоты к параметрам у твоих узлов материалов...Блин, да просмотри же ты наконец все ноды, которые я уже заготовил. Есть с сокетами, есть без них. Я подключаю по принципу от простого к сложному. Я так понимаю, тебе не нравится нод Full Material. Не используй его, не трогай, жди, когда я подключу те, в которых только сокеты. Что в этих нодах не так?
#declare Сamera_000_Rot_Y=46.688390;
#declare Сamera_000_Rot_Z=-0.903519;
#declare Сamera_000_Tran_Х=7.481132;
#declare Сamera_000_Tran_Y= 5.343666;
#declare Сamera_000_Tran_Z=-6.507640;
rotate <Сamera_000_Rot_Х, Camera_000_Rot_Y, Сamera_000_Rot_Z>
translate <Сamera_000_Tran_Х, Сamera_000_Tran_Y, Сamera_000_Tran_Z>}
Много че... сиcтемы нет. В стандартных рендерах Блендера серые сокеты - это значение, синие - это вектор, желтые -цвет RGB... В POV-Ray таже хрень... я не знаю откуда ты взял зеленые и т.п...Система должна быть отработана экспериметальным путём. В Поврее не та же хрень. Я тебе уже объяснял, что в стандартных рендерах часть кода записана на С и нам недоступна. В стандартных установлены разные пределы для одних и тех же сокетов. Объясняю проще. Есть параметр гамма, если я покрашу его вместе со всеми серым, ты сам забудешь и завтра будешь анимимровать его до нуля, а мне представлять претензии, почему у тебя рендер не идёт, почему я защиту не создал. Вот тебе защита: красный сокет.
...ладно, сдаюсь :) Делай как знаешь... я лишь изложил своё виденье...Ну где ты в стандартных рендерах видел отдельные сокеты и ноды для каждого параметра трансформации? Нод переместить по Х, нод переместить по У, нод крутить по Z, затем нод крутить по всем осям, куда можно подключить три нода, вращающих по каждой оси отдельно? Да у них даже в совместной куче трансформаций нету ни одного сокета. Я тебе их все приделал, и, опять ни так.
Ну да, нет их, типа ... но есть узлы Separate RGB и Combine RGB ... какая, нафиг разница?Опять, на колу мочало, начинай сначала. :)
Да превью, работает, спасибо (с остальным пока не разобрался)! Я понимаю, что достал этим тебя...Нет, не достал. Это нужно. Если тестить возьмутся на офсайте, то им это тоже не понравится.
никогда не сталкивался с этими нюансами на счет обратных слэшей и путейЭто придумали, чтобы винду от линукса отличить можно было.
Но постоянно врубаетсо эта виндовская "гуёвина" (меткое назавние) на весь экранА ты её размер измени до минимального и закрой. Она сохранит параметры окна и далее будет открывать маленькое окошко
Круто :) Ну и "повыпендриваюсь" (http://youtu.be/E8vErf_TdJM)пожеланием на будущее, (как философ философу ;) ), если ты не против :) ...Я отредактировал, читай выше про размер. Задал вопрос на офсайте: "Гугл показал, что вас уже лет 15 спрашивают, как запускать поврей без гуи, и вы 15 лет ни фига не отвечаете."
слушать надо...Послушал. Промолчу.
только непонятно куда тебя занесло (это как философ философу)...На офсайт поврея. Просматривал последние мессаги. Не философ я уже. Я время убиваю.
if node.bl_idname == "ShaderMultiPatternNode" and node.outputs["Color"].is_linked and node.name not in declareNodes: # Если нод мультипаттерн
declare=True # разрешаем декларацию.
if node.outputs["Replace"].is_linked: # Если сокет Replace имеет линки
for link in ntree.links: # ищем во всех линках
if link.from_node==node and link.to_node.bl_idname=="ShaderReplaceNode": # линки от исследуемого нода к ShaderReplaceNode.
for ilink in ntree.links: # Ищем во всех линках
if ilink.to_socket.name=="Color" and ilink.to_socket.node==link.to_node: # линк на сокет нода ShaderReplaceNode
if ilink.from_node.name not in declareNodes: # Если линк идёт с непродекларированного нода
declare=False # запрещаем декларацию.
if declare: # Если декларация разрешена
replaceIn=[] # создаём список нодов цвета, подключаемым к ShaderReplaceNode
replace=[] # создаём список нодов ShaderReplaceNode.
for link in ntree.links: # Во всех линках
if link.from_node==node and link.to_node.bl_idname=="ShaderReplaceNode": # если линк от исследуемого нода к ShaderReplaceNode
for ilink in ntree.links: # Ищем во всех линках
if ilink.to_socket.name=="Color" and ilink.to_socket.node==link.to_node: # линк на сокет нода ShaderReplaceNode
replaceIn.append(ilink.from_node.name) # Добавляем в список replaceIn нод цвета
replace.append(ilink.to_node.name) # Добавляем в список replace ShaderReplaceNode
povNodeName=string_strip_hyphen(bpy.path.clean_name(node.name))+"_%s"%povMatName # Создаём имя для экспорта
file.write('#declare %s = texture {\n'%(povNodeName)) # Начинаем декларацию
transform = "" # Transform
for link in ntree.links: #
if link.from_node.bl_idname=='PovrayTransformNode' and link.to_node==node: #
povTransName=string_strip_hyphen(bpy.path.clean_name(link.from_node.name))+"_%s"%povMatName #
transform="transform {%s}"%povTransName #
file.write(' %s %s texture_map {\n'%(node.inputs["Pattern"].default_value, transform)) #
if node.inputs["Color ramp"].is_linked: # Проверяем подключение колоррампа
for link in ntree.links: #
if link.from_node.type=='VALTORGB' and link.to_node==node: # Находим нужный
els=link.from_node.color_ramp.elements # Определяем элементы
n=-1 # Задаём отсчёт элементов
for el in els: # По элементу во всех элементах
n+=1 # Определяем порядковый номер
pos=el.position # Определяем позицию
r,g,b,a=el.color[:] # Переводим цвет в переменные
f=0 # Добавляем фильтр
default=True # Разрешаем запись с колоррампа
povColor="color rgbft <%.4g,%.4g,%.4g,%.4g,%.4g>"%(r,g,b,f,a-1) # Определяем цвет для поврея
povColName=string_strip_hyphen(bpy.path.clean_name(link.from_node.name))+"_%s_%s"%(n,povMatName) # Называем цвет
for inode in ntree.nodes: # По всем нодам
for i in range(0,len(replace)): # По списку replace
if (inode.name==replace[i]) and inode.inputs["Stop number"].default_value==n: # Если Stop number нода ShaderReplaceNode равен порядковому номеру
for knode in ntree.nodes: # Во всех нодах
if knode.name == replaceIn[i]: # находим соответствующий нод в replaceIn
povColName=string_strip_hyphen(bpy.path.clean_name(knode.name))+"_%s"%povMatName # Заменяем дефолтное имя
default=False #
if default: # Если дефолтное имя, то создаём и декларируем текстуру на основе дефолтного цвета
file.write(' #declare %s = texture{pigment{%s}};\n'%(povColName,povColor)) # то создаём и декларируем текстуру на основе дефолтного цвета
file.write(' [%.4g %s]\n'%(pos,povColName)) # Записываем текстуру для порядкового номера
file.write('}}\n') # Закрываем декларацию
declareNodes.append(node.name) # Добавляем в список продекларированных
#declare MultiPattern_001_Material = texture {
granite texture_map {
#declare ColorRamp_001_0_Material = texture{pigment{color rgbft <0,0,0,0,0>}};
[0 ColorRamp_001_0_Material]
[0.5 MultiPattern_001_Material] // КАКОГО ХРЕНА?
#declare ColorRamp_001_2_Material = texture{pigment{color rgbft <1,1,1,0,0>}};
[1 ColorRamp_001_2_Material]
}}
#declare MultiPattern_Material = texture {
agate texture_map {
#declare ColorRamp_0_Material = texture{pigment{color rgbft <0,0,0,0,0>}};
[0 ColorRamp_0_Material]
[1 MultiPattern_001_Material]
}}
No gui: try to have the unix/linux code in a windows port, via thing like cygwin.
The Windows version always show the GUI and there are now option or
switch to change that. The only thing that you may try is to start
minimised. It's possibly the same for the MacOS version.
...либо, необходима возможность отключения автоматического просмотра материала, о которой я тебе писал ранее...В принципе, автопросмотр работает только, если развёрнуто окошко превью. Нужно его вынести в отдельный свиток
..в общем я тебе пока не помощник в тестах... ребята с линуксами в помощь... но чет их не видно тут :\Проблема минимизировать окно GUI?
Я тебе грубо и снова по хамски скажу: если ты делаешь не только для себя, а и для других людей, то, будь добр, прислушивайся и к тому, что они тебе пишут.Прислушиваться нужно к голосу, к тому, что пишут, нужно причитываться :)
но чет их не видно тут :\???
Ну причитывайся дальше..Свалишь, закрою тему
Looking good. This kind of arrangement is like Poser's Materials. I
suppose this is more or less standard? I find it quite comprehensive.
Thomas
Looks very cool.
And
Very cool - is there an updated version we can download somewhere? I'd
love to play with this a bit. :)
Jim
OK, thanks. Looking forward to seeing it when it's ready for more broad
consumption. :)
I've never been terribly good at materials, but something that's visual
like this tends to make it much easier for me. :)
Jim
That was/is also one of the advantages of Moray. :-)
Thomas
Впечатлило людей, значит правильным путём идёшь! Молодец! :)sandman, спасибо! :)
Не зря уже столько сил и времени положил.
Работы ещё много.Если интересно, могу пару замечаний/предложений по коду написать.
Если интересно, могу пару замечаний/предложений по коду написать.Конечно, интересно
Леонид, мне кажется что ты зря на Old Demon бочку катишьНичего я на него не качу. Просто, я не очень понимаю, а, вернее, совсем его не понимаю. Какой-то он непоследовательный.
… во-первых, общая логика соединения узлов в редакторе нодов исходила бы из того, что сам узел содержит текстовый шаблон с отведенными полями для заполнения в зависимости от состояния сокетов …Текстовой шаблон:
#declare Pigment_1 = pigment {uv_mapping agate agate_turb 2
frequence 4
phase 2
turbulence <1,1,1>
octaves 3
lambda 2
omega 0.5
pigment_map{
[0 color rgbft <1,0,0,0,0>]
[1 color rgbft <0,0,1,0,0>]}
translate <100,200,300>
rotate <90,0,0>
scale <2,2,2>}
… во-вторых, шаблон узла содержательно состоял бы из собственного описания (класс узла) и описания сокетов (типы данных), и уже в соответствии с этим описанием формировалось бы (автоматически генерировалось) визуальное представление узла …Не понимаю, зачем автоматически генерировать узел, если, пожелания могут быть изменены в любой момент времени? А, если ты забыл rotate вставить? Ты потом сокет будешь добавлять? Group make не добавит какой зря сокет, если подобного нет в созданном ноде. Или по новой весь шаблон перетыкивать и запускать скрипт
... обработчик узлов обращается по описанию сокетов к сокету B, получает текст через этот сокет и подставляет этот текст в тело шаблона узла A вместо текста $B ...Как ты представляешь подстановку текста в тело шаблона? Разве для этого не нужно переписывать файл? И, чем переписывать, не лучше ли сразу писать то, что нужно?
if node.inputs["Color"].is_linked:
for link in ntree.links:
if link.to_node.name == node.name:
povPigName=string_strip_hyphen(bpy.path.clean_name(link.from_node.name))+"_%s"%povMatName
file.write(' pigment { %s }\n'%povPigName)
... как-то мне так изначально думалось ...Не особо понятно, но, допустим, изначально мы сделали так. Дальше, как бы мы модернизировали?
... при изменении цвета, перемещении ползунков, материал в окне предпросмотра не обновляется ...
... при выборе паттерна - обновляется сразу ...
bdancer, а ты не подскажешь, почему у меня активный материал объекта сцены предпросмотра не равен активному материалу активного объекта сцены для рендера?Может и подсказал бы, если бы понял о чем речь =)
Может и подсказал бы, если бы понял о чем речь =)А, посмотри код в render.py
for ob in scene.objects:
if ob.type=='MESH':
scene.objects.active=ob
ob=scene.objects.active
print (ob.name)
ior=0
for obj in bpy.data.objects:
if obj.povray.object_ior>1:
ior=obj.povray.object_ior
for ob in scene.objects:
print (ob.name)
for obj in bpy.data.objects:
print (obj.name, obj.type)
for ob in scene.objects:
if not ob.type == 'MESH':
continue
if not ob.is_visible(scene):
continue
if not ob.name.startswith('preview'):
continue
for slot in ob.material_slots:
ma = slot.material
if ma:
# This will be the preview material
print("Material: %s" % ma.name)
Найти материал можно так:Благодарю.
В общем, не нахожу я, что нужно сделать, чтобы действия в color ramp и стандартных сокетах color являлись сигналом к перерисовке превью.Простого способа нет. Питоновые деревья не генерируют обновления превью, потому что блендер не знает о том что они должны это делать. Допустим соединение/пересоединение нод тоже не обновляет превью.
Допустим соединение/пересоединение нод тоже не обновляет превью.У меня соединение/пересоединение обновляет превью. Как раз это один из способов получить нужную картинку. Крутишь color ramp, затем просто отсоединяешь любой сокет, и тут же его присоединяешь - картинка обновляется. Картинка обновляется и при изменении числовых параметров и enumProp.
Простого способа нет.А, вот здесь про что написано?
Detecting Scene Updateshttp://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.61/Python
Functionality was added to detect when the scene changes, for example for external render engines that want to do interactive rendering.
... пока не могу понять в чём дело, но после обновления экспортёр не находит по указанному месту бинарный файл - *** POVRAY FILE NOT FOUND *** ...Не бинарный, нет отрендерённой картинки
class PovrayRender(bpy.types.RenderEngine):
bl_idname = 'POVRAY'
bl_label = "Povray render"
bl_use_shading_nodes = True
bl_use_preview = True
DELAY = 0.5
У меня соединение/пересоединение обновляет превьюНу, так отлично, проблем меньше.
А, вот здесь про что написано?Используй коллбеки, никто не запрещает, заставишь эти коллбеки обновлять превью будешь ваще молодец =)
Используй коллбеки, никто не запрещает, заставишь эти коллбеки обновлять превью будешь ваще молодец =)Как я могу написать коллбек для встроенного компонента?
... универсальный экпортёр не должен содержать код, связанный с конкретным рендером. Если такой код и должен присутствовать, то в отдельном модуле, но основную часть экспорта сцены в формат рендера хотелось бы делать в нотациях формата через файлы-шаблоны. То есть не прописывать жесткий код в экспортёр, а формировать выходной файл через унифицированные процедуры экспорта компонентов сцены. По сути на этом этапе экспортёр должен получить на вход блендер-данные и название рендера, сформировать файлы для рендера по указанным шаблонам,правилам ...Покажи мне эти файлы-шаблоны. Ты говоришь о них, но видишь ли ты их материализованными?
Пока получается как-то так: https://developer.blender.org/D738, посмотрим чего блен-девы скажут.bdancer, а ты в каких исходниках работаешь?
static void rna_def_composite_nodetree(BlenderRNA *brna)
{
StructRNA *srna;
PropertyRNA *prop;
srna = RNA_def_struct(brna, "CompositorNodeTree", "NodeTree");
RNA_def_struct_ui_text(srna, "Compositor Node Tree", "Node tree consisting of linked nodes used for compositing");
RNA_def_struct_sdna(srna, "bNodeTree");
RNA_def_struct_ui_icon(srna, ICON_RENDERLAYERS);
static void rna_def_shader_nodetree(BlenderRNA *brna)
{
StructRNA *srna;
srna = RNA_def_struct(brna, "ShaderNodeTree", "NodeTree");
RNA_def_struct_ui_text(srna, "Shader Node Tree",
"Node tree consisting of linked nodes used for materials (and other shading datablocks)");
RNA_def_struct_sdna(srna, "bNodeTree");
RNA_def_struct_ui_icon(srna, ICON_MATERIAL);
}
static void rna_def_texture_nodetree(BlenderRNA *brna)
prop = RNA_def_property(srna, "bl_update_preview", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "typeinfo->flags", NTREE_FLAG_PREVIEW);
RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL);
RNA_def_property_ui_text(prop, "Update Preview", "Generate render preview update event");
bdancer, а ты в каких исходниках работаешь? Я скачал 2.71, так там ничего похожего нет в файле rna_nodetree.cПатч пишется на master ветку, может поэтому похожего и нет, хотя и непонятно зачем ты хочешь "ручками" патчить... Тебе надо почитать, что такое diff и как использовать patch, а потом нажать "Download Raw Diff" ну и patch'ем применить его.
И, ещё один вопрос: Как мир на предпросмотр выставить?М?
Да, всё точь в точь повторяется как и на БУ. Год я буду рассказывать про Поврей, потом уйду.Тебя никто и не заставляет =) Нравится - рассказывай, не нравится - не рассказывай.
... а в git старые файлы или обновленные? ...Git не обновился по причине отсутствия интернета в момент commit. Как это исправлять, я не знаю, повторю попытку, когда все файлы экспортёра обновлю.Так сработает.
Патч пишется на master ветку, может поэтому похожего и нет, хотя и непонятно зачем ты хочешь "ручками" патчить... Тебе надо почитать, что такое diff и как использовать patch, а потом нажать "Download Raw Diff" ну и patch'ем применить его.Что такое diff и patch я знаю, я rpm пересобираю под свои нужды. Сейчас вот fontforge собрал для своей магеи с питоновым модулем. Можно будет рисовать кривые, вбивать их в шрифт и рендерить как глифы. Это для поврея очень даже хорошо, так как у него есть свои примочки в обработке 3D-текста.
М?Что М? У тебя нет что ли предпросмотра world? Или для тебя уже мир - это одно, а world совсем другое? ;D
Тебя никто и не заставляетЯ знаю, что пишу. Дело ни в принуждении, дело в отсутствии интереса к рендереру. Сам процесс написания экспортёра, может, ещё и вызывает какой-то интерес у кого-то из здесь присутствующих, включая и тебя, а вот сам Поврей, явно, не интересует никого.
У тебя нет что ли предпросмотра world?Да, у меня пока нет предпросмотра world, попробую реализовать, но у меня превью совсем по-другому работает: https://developer.blender.org/D621
но у меня превью совсем по-другому работает: https://developer.blender.org/D621Да уж, ты лёгких путей не ищешь :)
Да уж, ты лёгких путей не ищешьНе такой уж он и трудный )) Пару строчек у меня есть возможность загружать любую сцена на превью.
Через API должен быть доступ ко всем панелям превьюНе от того пляшешь. Превью идет от layout.template_preview(). Если в него засунить context.world будет мир, context.material - материал.
Превью сцена в блене раскидана по слоям. Если рендерится превью мира, то будет активен scene.layers[7], а если он не активен то это превью чего то другого. А уж какую картинку куда "втыкать" это блендер сам разберется.Спасибо! Поковыряю. :)
In Cycles, it's about 3 hours 45 minutes.
At this point, it's kind of a pain in the ass to convert the material
definitions over to Povray once I made the Cycles render, so it may be while
before I even get to it with the same scene. Currently working on TC RTC entry
that I hope will be spectacular (can't wait to see what s day and mcgregor come
up with).
... обновил, но у меня дефолтный куб не рендериться ...Посмотрю. У меня дефолт всегда свой, поэтому, может, чего-то не доглядел.
... обновил, monkey и hair присутствуют, мех рендериться ...В ограниченном варианте мы будем использовать для этого волосы типа spline. Но, код раскраски я ещё не написал, хотя, к этому стремился.
... подскажи как настроить материал, чтобы мех можно было задавать изменение цвета меха вдоль волоса? ...
... то есть мне нужно чтобы корни были красными, центральная часть оранжевая, а кончики черные ...
>> ты где брал картинку для примера?Жуткое дело, но, в принципе несложно? Ясно. :)
... сам красил, в теме "Кони и псы" http://blender-3d.ru/forum/index.php/topic,86.msg1418.html#msg1418 , жуткое дело ...
... модель посмотрю в архивах, но в принципе там несложно ...
... делал этот мех давно, еще в версии 2.4 ...
... но загрузил проверил, работает ...
... вот схематично цветной мех для cycles ...
... выложи куда-нибудь тестовый файл ...Не забудь обновить экспортёр, сегодня я делал commit дважды. Какая-то непонятная фигня с анимированными частицами - при просчёте анимации блендер крашится на каком-нибудь кадре :-\
Для экспорта дуплей и партиклов можно использовать Object.dupli_list_create() (http://www.blender.org/documentation/blender_python_api_2_71_release/bpy.types.Object.html#bpy.types.Object.dupli_list_create), дупли появятся в Object.dupli_list, после надо его очистить Object.dupli_list_clear().Благодарю, воспользуюсь, но, ныне была цель: восстановить сломанную функцию. Или она уже исправна? Когда анимация объекта как частицы начинается для каждой частицы индивидуально, с момента её рождения.
но, ныне была цель: восстановить сломанную функцию. Или она уже исправна?Без понятия о какой функции речь =)
В своё время вышел журнал Art Mag №16.Цитироватьно, ныне была цель: восстановить сломанную функцию. Или она уже исправна?Без понятия о какой функции речь =)
В Object.dupli_list будет находится список DupliObject (http://www.blender.org/documentation/blender_python_api_2_71_release/bpy.types.DupliObject.html) из которых берешь Object, transform и persistent_id, и не надо загоняться ни на какие alive_state и тому подобное.
Да, я, пожалуй, продолжу "писать неправильно", а ты можешь продолжать читать выпуски 6ти летней давности по 2.49...Какая разница, сколько лет механизму? Сейчас так: придумали дым флюидами делать - все делают дым флюидами, а, если другим способом захочешь делать, то подымай архивы. Я не вижу в этом ничего анормального.
if pSysSet.type == 'EMITTER' and mod.particle_system.name==pSys.name:
dupli_objs=ob.dupli_list_create(scene, settings='RENDER')
print ("Dupli_list = ",dupli_objs)
read blend: /home/leonid/animparticles.blend
***INITIALIZING***
Dupli_list = None
***-STARTING-***
Povray found
...да переписали партиклы давно :) да и много че... не, оно похоже конечно и "функциклирует" ( хорошо сатарались), но это уже другой Блендер :)Ну, они переписали, я восстановил... без патча на С...просто питоном.
...шалишь что ли? :) Смари как бы они твой "косяк" не закрыли в будущих версиях.. ибо... ну ты понел :)По твоему, они умышленно создают препятствия?
но, пока он кроме ссылок мне ничего не показал.Ты просто как обычно прочитал мое сообщение по диагонали =) Давай перечитаем:
Для экспорта дуплей и партиклов можно использовать Object.dupli_list_create() (http://blender-3d.ru/forum/go.php?url=aHR0cDovL3d3dy5ibGVuZGVyLm9yZy9kb2N1bWVudGF0aW9uL2JsZW5kZXJfcHl0aG9uX2FwaV8yXzcxX3JlbGVhc2UvYnB5LnR5cGVzLk9iamVjdC5odG1sI2JweS50eXBlcy5PYmplY3QuZHVwbGlfbGlzdF9jcmVhdGU=), дупли появятся в Object.dupli_list, после надо его очистить Object.dupli_list_clear().
дупли появятся в Object.dupli_list
if pSysSet.type == 'EMITTER' and mod.particle_system.name==pSys.name:
dupli_objs=ob.dupli_list_create(scene, settings='RENDER')
print ("Dupli_list = ",dupli_objs)
read blend: /home/leonid/animparticles.blend
***INITIALIZING***
Dupli_list = None
***-STARTING-***
Povray found
import bpy
sce = bpy.context.scene
obj = bpy.context.active_object
obj.dupli_list_create(sce, 'RENDER')
for dob in obj.dupli_list:
print("Duplicated object: %s" % dob.object.name)
print(" ID: %i" % dob.persistent_id[0])
print(" TM: %s" % dob.matrix)
obj.dupli_list_clear()
obj.is_duplicator
А теперь как надо было:То есть, надо было сделать объект активным?Кодobj = bpy.context.active_object
То есть, надо было сделать объект активным?С чего такие выводы-то? Не надо ничего активным делать.
Получается, что при экспорте сцены я должен каждый объект по очереди делать активным.
С чего такие выводы-то? Не надо ничего активным делать.Давай сделаем так. Возьми приложенный файл и отрендери тридцатый кадр используя V-Ray. Картинку в студию.
Картинку в студию.
Ты просто как обычно прочитал мое сообщение по диагонали =)Повторяю, куб, который используется как частица, анимирован, а у тебя на картинке этого не видно :)
Твой экспорт не даёт нужного эффекта.Не дает нужного конкретно тебе эффекта - да, не дает.
Но, почему интернал показывает совсем другую картинку, которая не соответствует тому, чего я пытаюсь добиться?
Повторяю, куб, который используется как частица, анимирован, а у тебя на картинке этого не видноМой результат совпадает с:
Результат неплох сам по себе и вполне может сойти за фичу, включаемою отдельным контролом, но выдавать его за правильную реализацию экспорта частиц да еще и удивляться "почему интернал показывает совсем другую картинку" довольно странно...Странно соглашаться со всем, что тебе подсовывают разработчики, зная, что они сделали хуже, чем было.
Можно еще отметить, что твой способ не сработает, если партиклом будет группа. В структуре Particle просто нет информации о том, что за объект из группы назначен данной частице.В структуре Particle есть particle.location, и, это всё, что мне нужно. А там уже дело техники. Захочу, группу туда запихну, захочу, свято место пусто оставлю. :)
Извини, LanuHum, но ты прикалываешься что ли? В вышеприведенной тобой картинке вообще нет никакого вторичного освещения,Я ждал этот вопрос. Признаюсь, слукавил. В сцене есть вторичное освещение, которое в Поврее есть как radiosity. Разумеется, рендер длится намного дольше(ну, раз в пять), но, зная, отчасти Блендер, мне, вообще, трудно представить, как реализовать массив камыша, которым можно управлять... :)
скорость будет аналогичнаПри количестве поликов?
:) Исходники давай, не жмись...
Нахрена тогда экспортёр вообще? Кодим только в POV-Ray и кайфуем :)Экспортёр нужен.
Нахрена тогда экспортёр вообще? Кодим только в POV-Ray и кайфуем :)
Вот мне одно непонятно нифига:
Ты вроде как хочешь развивать свою тему и "кричишь" - "люди ау!". Приходят люди в твою тему, высказывают свои мнения (согласные и несогласные, но в рамках твоей темы) и свое виденье ситуации, но ты почему-то сразу после того как они пришли, становишься в позу "оппозиционера" начинаешь в них "плеваться" и доказывать только свою правоту... люди уходят... ты снова начинаешь ныть.. и ситуация повторяется...
Тут и возникает вопросище: в чем проблема?
Мат убери, пожалуйста.Да, читаешь ты код, не прибедняйся. Андрей профи, сто процентов, живёт в Софии, купается в Чёрном море, уважаю его, он меня нет.ЦитироватьВы ребята профи, но, почему-то решили, что я вам враг.Эта глупость в товоём уме только. Лично я вовсе не профи. За Андрея не скажу... уважаю его мнение... но спорили мы с ним не меньше, в свое время... да и с тобой тоже :) Давно было, ты забыл наверное..
Я на блендерартист задал вопрос, почему не обновляется материал при событиях в определённых нодах? Будто не задавал.ЦитироватьПовреевцы изобретают редакторы bezier, nurbs, им это надо, а с Блендером работать не хотят - очень сложен в освоении, ибо интерфейс сильно отличается от всех доступных винде прог.LanuHum, вот когда я зимой "матюкался" на Блнендерартистс, у меня возник вопрос, почему досих пор никто не создал аналог ветки блендера, ну типа, как есть куча разных версий линукс. Это тоже наводит на мысли...
Качнул я ихний редактор под винду к POV-Ray (MORAY вроде)... ну какбэ он за денги... вот тебе и причина :)
Хорошо, будем только о поврее... но все равно не получится :)
Смущает такая фигня: нестабильность, нет (я не видел) рендер ферм с повреем.
Не согласен. Оно существует как конструктор для увлеченных. Но не факт... в данный момент грань все более становится размытой... Видел ли ты Блендер лет пять назад на рендерфермах?А, разве не было ферм при 2.49?
первый раз слышу, что запрещено (rendercube?)Не помню, как оно называется, но в поисковике нашёл, что не для России, а, когда искал в интернетмагазинах России, то, ничего не нашёл
ну это какбы и охрененно сложно вдобавок...и шарят в С единицы... еще меньше хотят в этом разбираться и т.д и т.п... но поживем- увидим, мож кто нить и сподобится, наконец-то... мож и поврей прикрутят главным рендер -двилгомКогда не было суслика, ещё какбэ только 25 альфа вышла. Первый аддон про external render там был Поврей. Ныне главный разработчик сего чуда мне известен, я с ним общался. Моё мнение сложилось такое - гондон. Ему письмо пишешь, он сочтёт нужным ответить на него месяцев так через несколько. Потом взял мой код, прицепил его к офверсии, бутылку пива пообещал при встрече, а когда я ноды прикрутил, он и вовсе мне ничего не сказал.
Попер ты опять в дебри :) Ты еще дискуссию о тории супертструн сюда включиЭто называется "Осознанность"! Сперва ты понимаешь, что ты "Здесь и Сейчас", а потом понимаешь, что тебя просто поимели
ну... че поделать... может занят был?Ага, а я по 11 часов в день за токарным станком нахожусь в состоянии незанятости.
...а иногда так случается, что "поимел" ты сам себя, а все вокруг смотрели и дивились :) (или сама придумала - сама обиделась) да и у меня бывало такое, увы... меньше загоняйся...С тех пор, как я осознал, что, я, вообще, ни в чём не виноват, ибо, ни я создал себя, я, вообще не загоняюсь. Просто стало очень скучно. :-\
Ну так и скажи: хочу просто потрындеть на разные темы потому что скучно мне... Только причем здесь твой экспортер? :) Тут, вроде как, и флудилка-болталка есть...
... и это еще полигоноёмко ...А, как же раньше во внешние рендеры волосы экспортировали мешем? Экструдировали эджи, чтоб полигоны появились...
>> не хочет записывать файл более 16 млн строк
... как это проявляется? сообщения об ошибках есть? покажи проблемный код ...
... не должно быть такого ограничения на количество строк со стороны операций записи в файл ...
... возможно это проблемы с памятью ...
# Blender 2.71 (sub 0), Commit date: 2014-06-25 18:36, Hash 9337574
bpy.ops.node.select(mouse_x=412, mouse_y=451, extend=False) # Operator
bpy.ops.node.link(detach=False) # Operator
bpy.ops.node.select(mouse_x=269, mouse_y=624, extend=False) # Operator
bpy.ops.node.delete() # Operator
bpy.data.node_groups["Material.001"].nodes["Finish"].inputs[0].default_value = 0.0454545 # Property
bpy.data.node_groups["Material.001"].nodes["Finish"].inputs[0].default_value = 0.0818182 # Property
bpy.data.node_groups["Material.001"].nodes["Finish"].inputs[0].default_value = 0.163636 # Property
bpy.context.area.type = 'NODE_EDITOR' # Property
bpy.context.space_data.context = 'MODIFIER' # Property
bpy.context.object.modifiers["Subsurf"].levels = 2 # Property
bpy.context.object.modifiers["Subsurf"].levels = 3 # Property
bpy.context.object.modifiers["Subsurf"].render_levels = 2 # Property
bpy.context.object.modifiers["Subsurf"].render_levels = 3 # Property
# backtrace
/home/leonid/blender/arch/blender-2.71/blender() [0xf7c834]
/home/leonid/blender/arch/blender-2.71/blender() [0xf7ca8a]
/lib64/libc.so.6(+0x349f0) [0x7f4562d3e9f0]
/home/leonid/blender/arch/blender-2.71/blender() [0x18a26a7]
/home/leonid/blender/arch/blender-2.71/blender(BLI_mempool_create+0x10b) [0x18a286b]
/home/leonid/blender/arch/blender-2.71/blender() [0x18a0e25]
/home/leonid/blender/arch/blender-2.71/blender() [0x159ee8e]
/home/leonid/blender/arch/blender-2.71/blender() [0x15f2cc5]
/home/leonid/blender/arch/blender-2.71/blender(DM_DupPolys+0xe9) [0x15f40f9]
/home/leonid/blender/arch/blender-2.71/blender() [0x15dcc7b]
/home/leonid/blender/arch/blender-2.71/blender() [0x118f920]
/home/leonid/blender/arch/blender-2.71/blender() [0x15f8047]
/home/leonid/blender/arch/blender-2.71/blender(mesh_create_derived_render+0x44) [0x15f8e44]
/home/leonid/blender/arch/blender-2.71/blender(BKE_mesh_new_from_object+0x33f) [0x15470df]
/home/leonid/blender/arch/blender-2.71/blender(Object_to_mesh_call+0x33) [0x1461a63]
/home/leonid/blender/arch/blender-2.71/blender(RNA_function_call+0x12) [0x13ddc02]
/home/leonid/blender/arch/blender-2.71/blender() [0x182c169]
/home/leonid/blender/arch/blender-2.71/blender(PyObject_Call+0x5a) [0x2f4e6da]
/home/leonid/blender/arch/blender-2.71/blender(PyEval_EvalFrameEx+0xd33) [0x2ffc233]
/home/leonid/blender/arch/blender-2.71/blender(PyEval_EvalCodeEx+0x83b) [0x2ffb42b]
/home/leonid/blender/arch/blender-2.71/blender(PyEval_EvalFrameEx+0x5841) [0x3000d41]
/home/leonid/blender/arch/blender-2.71/blender(PyEval_EvalCodeEx+0x83b) [0x2ffb42b]
/home/leonid/blender/arch/blender-2.71/blender(PyEval_EvalFrameEx+0x5841) [0x3000d41]
/home/leonid/blender/arch/blender-2.71/blender(PyEval_EvalCodeEx+0x83b) [0x2ffb42b]
/home/leonid/blender/arch/blender-2.71/blender(PyEval_EvalFrameEx+0x5841) [0x3000d41]
/home/leonid/blender/arch/blender-2.71/blender(PyEval_EvalCodeEx+0x83b) [0x2ffb42b]
/home/leonid/blender/arch/blender-2.71/blender() [0x2f74adf]
/home/leonid/blender/arch/blender-2.71/blender(PyObject_Call+0x5a) [0x2f4e6da]
/home/leonid/blender/arch/blender-2.71/blender() [0x182cde4]
/home/leonid/blender/arch/blender-2.71/blender() [0x144dc6e]
/home/leonid/blender/arch/blender-2.71/blender(RE_engine_render+0x341) [0x12ff9f1]
/home/leonid/blender/arch/blender-2.71/blender() [0x131f977]
/home/leonid/blender/arch/blender-2.71/blender() [0x131fd7d]
/home/leonid/blender/arch/blender-2.71/blender() [0x1321eaf]
/home/leonid/blender/arch/blender-2.71/blender(RE_BlenderFrame+0x106) [0x1322d86]
/home/leonid/blender/arch/blender-2.71/blender() [0x10e632a]
/home/leonid/blender/arch/blender-2.71/blender() [0xf8a01a]
/lib64/libpthread.so.0(+0x7fab) [0x7f45636cdfab]
/lib64/libc.so.6(clone+0x6d) [0x7f4562df9a9d]
Хотя, это может быть происходит из-за того, что экспортёр создаёт bmesh таким же размером, и, этого уже блендер не выдерживает.
Дело уже не в возможностях питона.
Проверил на экспорте в OBJ - тоже слетает.
... если есть возможность дай готовую сцену с проблемой экспорта ...Да, она ж полгига! :)
... то есть без разницы чего, главное чтобы много? ...Да, чтобы много и в одном меше.
... памяти сколько? top/htop что показывает по памяти во время экспорта? ...16 Гигабайт памяти. Места достаточно
... еще проверь место на ж/д ...
... очевидно, это проблемы с нехваткой памяти ...Это может быть связано с конкретным дистрибутивом и конфигом ядра?
... вероятно, что выход - растить память, но тоже для бытовухи предел 32Гб, далее бросать на ж/д, но сразу провал по скорости ...Выход - разделить данные и записать по отдельности несколько файлов include. Проверил, для повфайла это доступно.
>> Текст прикрутил частично.Да, в поврее другие настройки текста: угол среза, отсоединение среза и ещё кое-что.
... насколько понял, это не конвертация в меши, а средствами самого поврей? ...
... вроде как отличается от оригинала ...
>> Ещё в линуксе доступны средства для создания глифов и шрифтов не выходя из блендера.Нужен аддон export svg, питон-модуль fontforge и немного кода на питоне.
... что за фича? поясни ...
... попробуй запустить в консоли htop, а в другой консоли Blender и попробуй экспортировать милионники ...Добрался сегодня до htop.
... увидишь в htop, что память уже в пределе, после чего Blender сворачивается ...
... сейчас посмотрю, что происходит на 4+4Гб ...Посмотри. Но, по-моему, когда памяти не хватает, то вся система начинает подвисать, курсор тормозит. Здесь же ничего этого не наблюдается. Всё работает без признаков окончания оперативки, а Блендер бац и улетел.
... пытался еще несколько раз сломать blender ...
... чтобы проверить проблемы с памятью, попробуй добавить swap file или расширить его на лету, например на 1GB (или несколько) ...
dd if=/dev/zero of=/swap1 bs=1M count=1024
mkswap /swapfile1
swapon /swapfile1
[leonid@localhost ~]$ su
Пароль:
[root@localhost leonid]# dd if=/dev/zero of=/swap1 bs=1M count=1024
1024+0 записей получено
1024+0 записей отправлено
скопировано 1073741824 байта (1,1 GB), 0,535744 c, 2,0 GB/c
[root@localhost leonid]# mkswap /swapfile1
/swapfile1: Нет такого файла или каталога
[root@localhost leonid]#
nautilus@sid:~/povray-3.7-stable/unix$ ./prebuild.sh
sed: невозможно прочитать ./Makefile.in: Нет такого файла или каталога
зачем ты запускашь "prebuild.sh"?На первой странице дана ссылка на исходный код, там же есть инструкция.
Generating configure and building the codeПоэтому и запускаю)
% cd unix/
% ./prebuild.sh
% cd ../
% ./configure COMPILED_BY="your name <email@address>"
% make
Вот тут все расписано как компилять:bdancer, спасибо, буду разбираться.
Доброго времени суток.Проблема в том, что стабильная версия Povray написана давно, а autoconf изменили недавно.
При сборке povray в linux, у меня возникла трудность:КодПожалуйста, помогите разобраться, в чём может быть проблема?nautilus@sid:~/povray-3.7-stable/unix$ ./prebuild.sh
sed: невозможно прочитать ./Makefile.in: Нет такого файла или каталога
Хм, в README и README.md отличаются команды...ага) какому readme следовать?
NOTE: Some users on 64-bit platforms have reported that adding --with-boost-thread=boost_thread-mНасколько понимаю, "--with-boost-thread=boost_thread-m" надо вставить сюда:
to ./configure is needed to get a successful compilation.
./configure COMPILED_BY="your name <email@address>"но как? И зачем рендеру мой имейл? Обязательно его указывать?
Рекомендую для сборки и установки более свежую версию:LanuHum, благодарю, буду пробовать, позже отпишусь о результате.
https://github.com/LeForgeron/povray
Далее, по инструкции:
но как? И зачем рендеру мой имейл? Обязательно его указывать?Не обязательно адрес, можно, просто имя или что угодно. Скорей всего, это связано с лицензией.
Povray found
b"Persistence of Vision(tm) Ray Tracer Version 3.7.0.unofficial (g++ 4.9.2 @
x86_64-mageia-linux-gnu)
This is an unofficial version compiled by:
Mageia
The POV-Ray Team is not responsible for supporting this version.
nautilus@sid:~/povray-master$ cd unix/
nautilus@sid:~/povray-master/unix$ ls
AUTHORS disp.h install povray.conf scripts
ChangeLog disp_sdl.cpp install.txt prebuild.sh VERSION
config disp_sdl.h Makefile.header README xbgmap.xpm
configure.ac disp_text.cpp NEWS README.bin xpovicon.xbm
COPYING disp_text.h povconfig README.md xpovicon.xpm
dirinfo.dox icons povray.1 README.unix xpovmask.xbm
nautilus@sid:~/povray-master/unix$ ./prebuild.sh
Detected autoconf 2.69
Detected automake 1.14.1
Create ../AUTHORS
Create ../ChangeLog
Create ../configure.ac
Create ../COPYING
Create ../NEWS
Create ../README
Create ../VERSION
Create ../povray.1
Create ../povray.conf
Create ../scripts/
Create ../ini/
Create ../include/
Create ../scenes/
Create ../INSTALL
Create ../icons/file_pov_crystal_48.png
Create ../icons/file_inc_classic_32.png
Create ../icons/file_inc_classic_48.png
Create ../icons/file_pov_classic_16.png
Create ../icons/file_pov_crystal_16.png
Create ../icons/file_pov_classic_64.png
Create ../icons/file_pov_crystal_32.png
Create ../icons/povray_16.png
Create ../icons/file_pov_slick_16.png
Create ../icons/povray_32.png
Create ../icons/file_inc_classic_64.png
Create ../icons/povray_48.png
Create ../icons/file_pov_crystal_64.png
Create ../icons/file_pov_classic_32.png
Create ../icons/file_inc_crystal_32.png
Create ../icons/file_pov_slick_48.png
Create ../icons/file_inc_crystal_16.png
Create ../icons/file_pov_classic_48.png
Create ../icons/file_inc_slick_16.png
Create ../icons/file_inc_slick_32.png
Create ../icons/file_pov_slick_64.png
Create ../icons/file_pov_slick_32.png
Create ../icons/povray_64.png
Create ../icons/file_inc_slick_48.png
Create ../icons/file_inc_crystal_48.png
Create ../icons/file_inc_crystal_64.png
Create ../icons/file_inc_slick_64.png
Create ../icons/file_inc_classic_16.png
Create ../doc/html
Create ./Makefile.am
Create ../kde_install.sh
Create ../povray.ini.in
Create ../Makefile.am
Create ../bootstrap
Create ../source/Makefile.am
Removing ../libraries/boost/boost
Create ../vfe/Makefile.am
Run ../bootstrap
+ rm -f config.log config.status
+ aclocal -I .
+ autoheader --warnings=all
+ automake --add-missing --warnings=all
configure.ac:185: installing 'unix/config/compile'
configure.ac:166: installing 'unix/config/config.guess'
configure.ac:166: installing 'unix/config/config.sub'
configure.ac:169: installing 'unix/config/install-sh'
configure.ac:169: installing 'unix/config/missing'
/usr/share/automake-1.14/am/library.am: warning: 'libpovray.a': linking libraries using a non-POSIX
/usr/share/automake-1.14/am/library.am: archiver requires 'AM_PROG_AR' in 'configure.ac'
source/Makefile.am:32: while processing library 'libpovray.a'
source/Makefile.am: installing 'unix/config/depcomp'
/usr/share/automake-1.14/am/library.am: warning: 'libvfe.a': linking libraries using a non-POSIX
/usr/share/automake-1.14/am/library.am: archiver requires 'AM_PROG_AR' in 'configure.ac'
vfe/Makefile.am:32: while processing library 'libvfe.a'
+ autoconf --warnings=all
configure.ac:295: warning: The macro `AC_LANG_SAVE' is obsolete.
configure.ac:295: You should run autoupdate.
../../lib/autoconf/lang.m4:125: AC_LANG_SAVE is expanded from...
unix/config/acx_pthread.m4:78: ACX_PTHREAD is expanded from...
configure.ac:295: the top level
configure.ac:295: warning: The macro `AC_LANG_C' is obsolete.
configure.ac:295: You should run autoupdate.
../../lib/autoconf/c.m4:72: AC_LANG_C is expanded from...
unix/config/acx_pthread.m4:78: ACX_PTHREAD is expanded from...
configure.ac:295: the top level
configure.ac:295: warning: The macro `AC_TRY_LINK' is obsolete.
configure.ac:295: You should run autoupdate.
../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from...
unix/config/acx_pthread.m4:78: ACX_PTHREAD is expanded from...
configure.ac:295: the top level
configure.ac:295: warning: The macro `AC_LANG_RESTORE' is obsolete.
configure.ac:295: You should run autoupdate.
../../lib/autoconf/lang.m4:134: AC_LANG_RESTORE is expanded from...
unix/config/acx_pthread.m4:78: ACX_PTHREAD is expanded from...
configure.ac:295: the top level
+ cat ./configure
+ sed -e s,configure.gnu --help=recursive,& --srcdir=$ac_srcdir,g -e s,\(cd \)\($ac_\)\(pop\)*\(dir\),\1"\2\3\4",g -e s,$am_aux_dir/missing,\\"$am_aux_dir\\"/missing,g
+ mv -f ./configure.tmp ./configure
+ chmod +x ./configure
+ rm -f -r ./autom4te.cache
nautilus@sid:~/povray-master/unix$ cd ../
nautilus@sid:~/povray-master$ ./configure COMPILED_BY="nautilus" --prefix=/usr --with-x LIBS="-lboost_system -lboost_thread -lboost_date_time"
===============================================================================
Configure POV-Ray version 3.7.1-alpha.8032017
===============================================================================
This is an unofficial version compiled by:
nautilus
The POV-Ray Team(tm) is not responsible for supporting this version.
Environment
-----------
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking whether $C_INCLUDE_PATH contains the "." path... no
checking whether $CPLUS_INCLUDE_PATH contains the "." path... no
Programs
--------
checking for gcc... gcc
checking whether the C compiler works... no
configure: error: in `/home/nautilus/povray-master':
configure: error: C compiler cannot create executables
See `config.log' for more details
nautilus@sid:~/povray-master$ make
make: *** Не заданы цели и не найден make-файл. Останов.
nautilus@sid:~/povray-master$
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by POV-Ray configure 3.7.1-alpha.8032017, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ ./configure COMPILED_BY=nautilus --prefix=/usr --with-x LIBS=-lboost_system -lboost_thread -lboost_date_time
## --------- ##
## Platform. ##
## --------- ##
hostname = sid
uname -m = x86_64
uname -r = 4.0.0-2-amd64
uname -s = Linux
uname -v = #1 SMP Debian 4.0.5-1 (2015-06-16)
/usr/bin/uname -p = unknown
/bin/uname -X = unknown
/bin/arch = unknown
/usr/bin/arch -k = unknown
/usr/convex/getsysinfo = unknown
/usr/bin/hostinfo = unknown
/bin/machine = unknown
/usr/bin/oslevel = unknown
/bin/universe = unknown
PATH: /usr/local/bin
PATH: /usr/bin
PATH: /bin
PATH: /usr/local/games
PATH: /usr/games
## ----------- ##
## Core tests. ##
## ----------- ##
configure:3714: result:
===============================================================================
Configure POV-Ray version 3.7.1-alpha.8032017
===============================================================================
This is an unofficial version compiled by:
nautilus
The POV-Ray Team(tm) is not responsible for supporting this version.
configure:3735: result:
Environment
-----------
configure:3744: checking build system type
configure:3758: result: x86_64-unknown-linux-gnu
configure:3778: checking host system type
configure:3791: result: x86_64-unknown-linux-gnu
configure:3828: checking for a BSD-compatible install
configure:3896: result: /usr/bin/install -c
configure:3907: checking whether build environment is sane
configure:3962: result: yes
configure:4113: checking for a thread-safe mkdir -p
configure:4152: result: /bin/mkdir -p
configure:4159: checking for gawk
configure:4175: found /usr/bin/gawk
configure:4186: result: gawk
configure:4197: checking whether make sets $(MAKE)
configure:4219: result: yes
configure:4248: checking whether make supports nested variables
configure:4265: result: yes
configure:4392: checking whether to enable maintainer-specific portions of Makefiles
configure:4401: result: no
ax_fix_incorrect_path_regexp = [=:]*\.:*
ax_fix_incorrect_path_old =
ax_fix_incorrect_path_new =
configure:4428: checking whether $C_INCLUDE_PATH contains the "." path
configure:4438: result: no
ax_fix_incorrect_path_regexp = [=:]*\.:*
ax_fix_incorrect_path_old =
ax_fix_incorrect_path_new =
configure:4456: checking whether $CPLUS_INCLUDE_PATH contains the "." path
configure:4466: result: no
configure:4477: result:
Programs
--------
configure:4533: checking for gcc
configure:4549: found /usr/bin/gcc
configure:4560: result: gcc
configure:4789: checking for C compiler version
configure:4798: gcc --version >&5
gcc (Debian 4.9.2-22) 4.9.2
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
configure:4809: $? = 0
configure:4798: gcc -v >&5
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.9/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 4.9.2-22' --with-bugurl=file:///usr/share/doc/gcc-4.9/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.9 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.9 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.9-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.9-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.9-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --with-arch-32=i586 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.9.2 (Debian 4.9.2-22)
configure:4809: $? = 0
configure:4798: gcc -V >&5
gcc: error: unrecognized command line option '-V'
gcc: fatal error: no input files
compilation terminated.
configure:4809: $? = 4
configure:4798: gcc -qversion >&5
gcc: error: unrecognized command line option '-qversion'
gcc: fatal error: no input files
compilation terminated.
configure:4809: $? = 4
configure:4829: checking whether the C compiler works
configure:4851: gcc conftest.c -lboost_system -lboost_thread -lboost_date_time >&5
/usr/bin/ld: cannot find -lboost_system
/usr/bin/ld: cannot find -lboost_thread
/usr/bin/ld: cannot find -lboost_date_time
collect2: error: ld returned 1 exit status
configure:4855: $? = 1
configure:4893: result: no
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "POV-Ray"
| #define PACKAGE_TARNAME "povray"
| #define PACKAGE_VERSION "3.7.1-alpha.8032017"
| #define PACKAGE_STRING "POV-Ray 3.7.1-alpha.8032017"
| #define PACKAGE_BUGREPORT "unix-bugreports-2011@povray.org"
| #define PACKAGE_URL ""
| #define VERSION_BASE "3.7"
| #define BUILT_BY " nautilus"
| #define PACKAGE "povray"
| #define VERSION "3.7.1-alpha.8032017"
| /* end confdefs.h. */
|
| int
| main ()
| {
|
| ;
| return 0;
| }
configure:4898: error: in `/home/nautilus/povray-master':
configure:4900: error: C compiler cannot create executables
See `config.log' for more details
## ---------------- ##
## Cache variables. ##
## ---------------- ##
ac_cv_build=x86_64-unknown-linux-gnu
ac_cv_env_C99_COMPATIBLE_RADIOSITY_set=
ac_cv_env_C99_COMPATIBLE_RADIOSITY_value=
ac_cv_env_CCC_set=
ac_cv_env_CCC_value=
ac_cv_env_CC_set=
ac_cv_env_CC_value=
ac_cv_env_CFLAGS_set=
ac_cv_env_CFLAGS_value=
ac_cv_env_COMPILED_BY_set=set
ac_cv_env_COMPILED_BY_value=nautilus
ac_cv_env_CPPFLAGS_set=
ac_cv_env_CPPFLAGS_value=
ac_cv_env_CPP_set=
ac_cv_env_CPP_value=
ac_cv_env_CXXCPP_set=
ac_cv_env_CXXCPP_value=
ac_cv_env_CXXFLAGS_set=
ac_cv_env_CXXFLAGS_value=
ac_cv_env_CXX_set=
ac_cv_env_CXX_value=
ac_cv_env_LDFLAGS_set=
ac_cv_env_LDFLAGS_value=
ac_cv_env_LIBS_set=set
ac_cv_env_LIBS_value='-lboost_system -lboost_thread -lboost_date_time'
ac_cv_env_NON_REDISTRIBUTABLE_BUILD_set=
ac_cv_env_NON_REDISTRIBUTABLE_BUILD_value=
ac_cv_env_XMKMF_set=
ac_cv_env_XMKMF_value=
ac_cv_env_build_alias_set=
ac_cv_env_build_alias_value=
ac_cv_env_host_alias_set=
ac_cv_env_host_alias_value=
ac_cv_env_target_alias_set=
ac_cv_env_target_alias_value=
ac_cv_host=x86_64-unknown-linux-gnu
ac_cv_path_install='/usr/bin/install -c'
ac_cv_path_mkdir=/bin/mkdir
ac_cv_prog_AWK=gawk
ac_cv_prog_ac_ct_CC=gcc
ac_cv_prog_make_make_set=yes
am_cv_make_support_nested_variables=yes
## ----------------- ##
## Output variables. ##
## ----------------- ##
ACLOCAL='${SHELL} "/home/nautilus/povray-master/unix/config"/missing aclocal-1.14'
AMDEPBACKSLASH=''
AMDEP_FALSE=''
AMDEP_TRUE=''
AMTAR='$${TAR-tar}'
AM_BACKSLASH='\'
AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
AM_DEFAULT_VERBOSITY='1'
AM_V='$(V)'
AUTOCONF='${SHELL} "/home/nautilus/povray-master/unix/config"/missing autoconf'
AUTOHEADER='${SHELL} "/home/nautilus/povray-master/unix/config"/missing autoheader'
AUTOMAKE='${SHELL} "/home/nautilus/povray-master/unix/config"/missing automake-1.14'
AWK='gawk'
BOOST_CPPFLAGS=''
BOOST_LDFLAGS=''
BOOST_THREAD_LIB=''
C99_COMPATIBLE_RADIOSITY=''
CC='gcc'
CCDEPMODE=''
CFLAGS=''
COMPILED_BY='nautilus'
CPLUS_INCLUDE_PATH=''
CPP=''
CPPFLAGS=''
CXX=''
CXXCPP=''
CXXDEPMODE=''
CXXFLAGS=''
CYGPATH_W='echo'
C_INCLUDE_PATH=''
DEFS=''
DEPDIR=''
ECHO_C=''
ECHO_N='-n'
ECHO_T=''
EGREP=''
EXEEXT=''
GREP=''
INSTALL_DATA='${INSTALL} -m 644'
INSTALL_PROGRAM='${INSTALL}'
INSTALL_SCRIPT='${INSTALL}'
INSTALL_STRIP_PROGRAM='$(install_sh) -c -s'
LDFLAGS=''
LIBOBJS=''
LIBS='-lboost_system -lboost_thread -lboost_date_time'
LTLIBOBJS=''
MAINT='#'
MAINTAINER_MODE_FALSE=''
MAINTAINER_MODE_TRUE='#'
MAKEINFO='${SHELL} "/home/nautilus/povray-master/unix/config"/missing makeinfo'
MKDIR_P='/bin/mkdir -p'
NON_REDISTRIBUTABLE_BUILD=''
OBJEXT=''
PACKAGE='povray'
PACKAGE_BUGREPORT='unix-bugreports-2011@povray.org'
PACKAGE_NAME='POV-Ray'
PACKAGE_STRING='POV-Ray 3.7.1-alpha.8032017'
PACKAGE_TARNAME='povray'
PACKAGE_URL=''
PACKAGE_VERSION='3.7.1-alpha.8032017'
PATH_SEPARATOR=':'
PKGCONFIG=''
PTHREAD_CC=''
PTHREAD_CFLAGS=''
PTHREAD_LIBS=''
RANLIB=''
SDLCONFIG=''
SET_MAKE=''
SHELL='/bin/bash'
STRIP=''
VERSION='3.7.1-alpha.8032017'
VERSION_BASE='3.7'
XMKMF=''
X_CFLAGS=''
X_EXTRA_LIBS=''
X_LIBS=''
X_PRE_LIBS=''
ac_ct_CC='gcc'
ac_ct_CXX=''
acx_pthread_config=''
am__EXEEXT_FALSE=''
am__EXEEXT_TRUE=''
am__fastdepCC_FALSE=''
am__fastdepCC_TRUE=''
am__fastdepCXX_FALSE=''
am__fastdepCXX_TRUE=''
am__include=''
am__isrc=''
am__leading_dot='.'
am__nodep=''
am__quote=''
am__tar='$${TAR-tar} chof - "$$tardir"'
am__untar='$${TAR-tar} xf -'
bindir='${exec_prefix}/bin'
build='x86_64-unknown-linux-gnu'
build_alias=''
build_cpu='x86_64'
build_os='linux-gnu'
build_vendor='unknown'
datadir='${datarootdir}'
datarootdir='${prefix}/share'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
dvidir='${docdir}'
exec_prefix='NONE'
host='x86_64-unknown-linux-gnu'
host_alias=''
host_cpu='x86_64'
host_os='linux-gnu'
host_vendor='unknown'
htmldir='${docdir}'
includedir='${prefix}/include'
infodir='${datarootdir}/info'
install_sh='${SHELL} /home/nautilus/povray-master/unix/config/install-sh'
libdir='${exec_prefix}/lib'
libexecdir='${exec_prefix}/libexec'
localedir='${datarootdir}/locale'
localstatedir='${prefix}/var'
mandir='${datarootdir}/man'
mkdir_p='$(MKDIR_P)'
oldincludedir='/usr/include'
pdfdir='${docdir}'
povgroup=''
povowner=''
prefix='/usr'
program_transform_name='s,x,x,'
psdir='${docdir}'
sbindir='${exec_prefix}/sbin'
sharedstatedir='${prefix}/com'
sysconfdir='${prefix}/etc'
target_alias=''
## ----------- ##
## confdefs.h. ##
## ----------- ##
/* confdefs.h */
#define PACKAGE_NAME "POV-Ray"
#define PACKAGE_TARNAME "povray"
#define PACKAGE_VERSION "3.7.1-alpha.8032017"
#define PACKAGE_STRING "POV-Ray 3.7.1-alpha.8032017"
#define PACKAGE_BUGREPORT "unix-bugreports-2011@povray.org"
#define PACKAGE_URL ""
#define VERSION_BASE "3.7"
#define BUILT_BY " nautilus"
#define PACKAGE "povray"
#define VERSION "3.7.1-alpha.8032017"
configure: exit 77
Programs
--------
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for stdlib.h... (cached) yes
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking whether the g++ compiler works... yes
checking how to run the C++ preprocessor... g++ -E
checking for C++ compiler vendor... gnu
checking for g++ version... 4.9.2
checking for ranlib... ranlib
Libraries
---------
checking whether to link with cygwin DLL... no
checking whether to enable static linking... no
checking for the pthreads library -lpthreads... no
checking whether pthreads work without any flags... no
checking whether pthreads work with -Kthread... no
checking whether pthreads work with -kthread... no
checking for the pthreads library -llthread... no
checking whether pthreads work with -pthread... yes
checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE
checking if more special flags are required for pthreads... no
checking for boostlib >= 1.38... yes
checking whether the Boost::Thread library is available... yes
checking for exit in -lboost_thread... yes
checking whether the boost thread library is usable... yes
checking for sin in -lmkl... no
checking for sin in -lm... yes
checking for clock_gettime in -lrt... yes
checking whether to use the ZLIB library... yes
checking for library containing zlibVersion... -lz
checking zlib.h usability... yes
checking zlib.h presence... yes
checking for zlib.h... yes
checking for libz version >= 1.2.1... 1.2.8, ok
checking whether to use the PNG library... yes
checking for library containing png_get_libpng_ver... -lpng
checking png.h usability... yes
checking png.h presence... yes
checking for png.h... yes
checking for libpng version >= 1.2.5... 1.6.17, ok
checking whether to use the JPEG library... yes
checking for library containing jpeg_std_error... -ljpeg
checking jpeglib.h usability... yes
checking jpeglib.h presence... yes
checking for jpeglib.h... yes
checking for libjpeg version >= 6b (62)... 80, ok
checking whether to use the TIFF library... yes
checking for library containing TIFFGetVersion... -ltiff
checking tiffio.h usability... yes
checking tiffio.h presence... yes
checking for tiffio.h... yes
checking for libtiff version >= 3.6.1... 4.0.4beta, ok
checking whether to use the OpenEXR library... yes
checking for pkg-config... pkg-config
checking for OpenEXR's pkg-config... yes
checking for OpenEXR version >= 1.2... 2.2.0, ok
checking OpenEXR/ImfCRgbaFile.h usability... yes
checking OpenEXR/ImfCRgbaFile.h presence... yes
checking for OpenEXR/ImfCRgbaFile.h... yes
checking for ImfInputReadPixels in -lIlmImf... yes
checking for X... libraries /usr/lib, headers /usr/include
checking whether -R must be followed by a space... neither works
checking for gethostbyname... yes
checking for connect... yes
checking for remove... yes
checking for shmat... yes
checking for IceConnectionNumber in -lICE... yes
checking X11/Xlib.h usability... yes
checking X11/Xlib.h presence... yes
checking for X11/Xlib.h... yes
checking for XFlush in -lX11... yes
checking X11/xpm.h usability... no
checking X11/xpm.h presence... no
checking for X11/xpm.h... no
checking whether to enable the watch cursor... no
checking for sdl-config... sdl-config
checking for libSDL... yes
checking for libSDL version >= 1.2... 1.2.15, ok
checking SDL/SDL.h usability... yes
checking SDL/SDL.h presence... yes
checking for SDL/SDL.h... yes
checking for SDL_Quit in -lSDL... yes
Language constructs and functions
---------------------------------
checking whether time.h and sys/time.h may both be included... yes
checking time.h usability... yes
checking time.h presence... yes
checking for time.h... yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking sys/resource.h usability... yes
checking sys/resource.h presence... yes
checking for sys/resource.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking sys/wait.h usability... yes
checking sys/wait.h presence... yes
checking for sys/wait.h... yes
checking for unistd.h... (cached) yes
checking for size_t... yes
checking whether struct tm is in sys/time.h or time.h... time.h
checking size of int... 4
checking size of long int... 8
checking size of size_t... 8
checking size of float... 4
checking for working memcmp... yes
checking for vsnprintf... yes
checking for getcwd... yes
checking for readlink... yes
checking for nanosleep... yes
checking for clock_gettime... yes
checking for getrusage... yes
checking for gettimeofday... yes
checking for asinh... yes
Compiling
---------
checking whether to enable pipes for communications... yes
checking whether g++ accepts -pipe... yes
checking whether g++ accepts -Wno-multichar... yes
checking whether g++ accepts -Wno-write-strings... yes
checking whether g++ accepts -fno-enforce-eh-specs... yes
checking whether g++ accepts -Wno-non-template-friend... yes
checking whether to enable I/O restrictions... yes
checking whether to enable debugging... no
checking whether to enable profiling... no
checking whether to enable stripping... yes
checking whether g++ accepts -s... yes
checking whether to enable optimizations... yes
checking whether g++ accepts -O3... yes
checking whether g++ accepts -ffast-math... yes
checking whether to enable architecture-specific optimizations... yes
checking whether g++ accepts -xHost... no
checking whether g++ accepts -march=native... yes
checking which architecture to optimize for... x86_64-unknown-linux-gnu (using -march=native)
Floating Point Features
-----------------------
checking limits usability... yes
checking limits presence... yes
checking for limits... yes
checking whether NaNs are supported... yes
checking cmath usability... yes
checking cmath presence... yes
checking for cmath... yes
checking whether NaNs can be identified using std::isnan()... no
checking whether NaNs can be identified using global isnan()... no
checking whether NaNs can be identified by comparison to themselves... no
checking whether infinite values are supported... yes
checking for cmath... (cached) yes
checking whether infinities can be identified using std::isinf()... no
checking whether infinities can be identified using global isinf()... no
checking whether infinities can be identified by comparison to the maximum value... yes
Makefiles
---------
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating source/Makefile
config.status: creating vfe/Makefile
config.status: creating unix/Makefile
config.status: creating config.h
config.status: executing depfiles commands
===============================================================================
POV-Ray 3.7.1-alpha.8032017 has been configured.
Built-in features:
I/O restrictions: enabled
X Window display: enabled (using SDL)
Supported image formats: gif tga iff ppm pgm hdr png jpeg tiff openexr
Unsupported image formats: -
Compilation settings:
Build architecture: x86_64-unknown-linux-gnu
Built/Optimized for: x86_64-unknown-linux-gnu (using -march=native)
Compiler vendor: gnu
Compiler version: g++ 4.9.2
Compiler flags: -pipe -Wno-multichar -Wno-write-strings -fno-enforce-eh-specs -Wno-non-template-friend -s -O3 -ffast-math -march=native -pthread
Type 'make check' to build the program and run a test render.
Type 'make install' to install POV-Ray on your system.
The POV-Ray components will be installed in the following directories:
Program (executable): /usr/bin
System configuration files: /usr/etc/povray/3.7
User configuration files: /home/leonid/.povray/3.7
Standard include files: /usr/share/povray-3.7/include
Standard INI files: /usr/share/povray-3.7/ini
Standard demo scene files: /usr/share/povray-3.7/scenes
Documentation (text, HTML): /usr/share/doc/povray-3.7
Unix man page: /usr/share/man
===============================================================================
[leonid@localhost povray-master]$
Леонид, а помнишь ты где то упоминал, что для сборки требуется какая-то версия чего-то там, может в этом проблема ...
сам не уже не помню чего именно требовалось, но помню что затык точно был в несовместимости версий ...
По-моему, нету компилятора gcc-c++
nautilus@sid:~$ sudo apt-get install gcc
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Уже установлена самая новая версия gcc.
gcc установлен вручную.
обновлено 0, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 2 пакетов не обновлено.
configure:4851: gcc conftest.c -lboost_system -lboost_thread -lboost_date_time >&5Ты попросил boost, но его не поставил:
/usr/bin/ld: cannot find -lboost_system
/usr/bin/ld: cannot find -lboost_thread
/usr/bin/ld: cannot find -lboost_date_time
collect2: error: ld returned 1 exit status
apt-get install libboost-dev
Ты попросил boost, но его не поставил:
nautilus@sid:~$ sudo apt-get install libboost-dev
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Уже установлена самая новая версия libboost-dev.
обновлено 0, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 11 пакетов не обновлено.
LanuHum, этот gcc?Не похоже. Пиши
Убунту и Дебиан имеют в репах Povray-3.7Да, установил из репозитория, кубик рендерился. Потом установил ваш экспортер, рендера нет (кириллицы и пробелов в путях тоже нет).
Для начала неплохо бы было запускать Блендер из консоли, чтобы читать информацию об ошибках.Цитата: LanuHumУбунту и Дебиан имеют в репах Povray-3.7Да, установил из репозитория, кубик рендерился. Потом установил ваш экспортер, рендера нет (кириллицы и пробелов в путях тоже нет).
Имею уйму вопросов, но не знаю как лаконично их задать.
LanuHum, благодарю за помощь, позже отпишусь.
Для начала неплохо бы было запускать Блендер из консоли, чтобы читать информацию об ошибках.Да, пожалуйста:
nautilus@sid:~$ /home/nautilus/bin/blender-2.74-linux-glibc211-x86_64/blender
connect failed: No such file or directory
Read new prefs: /home/nautilus/.config/blender/2.74/config/userpref.blend
found bundled python: /home/nautilus/bin/blender-2.74-linux-glibc211-x86_64/2.74/python
Project Time loaded 0
***INITIALIZING***
Scene name: untitled
Export path: /tmp
Traceback (most recent call last):
File "/home/nautilus/bin/blender-2.74-linux-glibc211-x86_64/2.74/scripts/addons/render_povray/render.py", line 2173, in render
self._export(scene, povPath, renderImagePath)
File "/home/nautilus/bin/blender-2.74-linux-glibc211-x86_64/2.74/scripts/addons/render_povray/render.py", line 2063, in _export
write_pov(self._temp_file_in, scene, info_callback)
File "/home/nautilus/bin/blender-2.74-linux-glibc211-x86_64/2.74/scripts/addons/render_povray/render.py", line 1948, in write_pov
exportMeshes(scene,ob)
File "/home/nautilus/bin/blender-2.74-linux-glibc211-x86_64/2.74/scripts/addons/render_povray/render.py", line 1503, in exportMeshes
fileInc=open("%s/data_%s_dec.inc"%(scene.pov.scene_path,povName),'w')
PermissionError: [Errno 13] Permission denied: '/data_Cube_dec.inc'
location: <unknown location>:-1
location: <unknown location>:-1
Saved session recovery to '/tmp/quit.blend'
Blender quit
PermissionError: [Errno 13] Permission denied: '/data_Cube_dec.inc'
fileInc=open("%s/data_%s_dec.inc"%(scene.pov.scene_path,povName),'w')
Учись анализировать, что тебе пишет программа.Уверяю вас, сначала пытаюсь решить проблему сам и лишь потом утруждаю тему логами)
Естественно, потому что в / нельзя писать от юзера, но это не значит что надо запускать Blender от рута =)Не понимаю, куда именно юзер пишет в корень?
Соотв, где-то в настройках есть параметр который задает путь scene.pov.scene_path и тебе надо его найти в интерфейсе и указать валидный.в настройках аддона указал /usr/bin/povray
т.е. вы предлагаете сделать chmod 777 -R /где-то в корне? Если да, то решение довольно сомнительное, т.к. оф. аддон работает.Что-то не припомню где я это предлагаю...
Что-то не припомню где я это предлагаю...учусь анализировать)))
Отсюда https://github.com/Lanuhum/BlendPov-alternative брал?нет, отсюда https://yadi.sk/d/HgFT4fUHRCram
нет, отсюда https://yadi.sk/d/HgFT4fUHRCramЭто старая версия, мне нужно будет просмотреть тему сначала и удалить эти ссылки.
LanuHum, какой путь прописывать в workspace directory?Никакой не прописывай. Я только что удалил это из экспортёра :)
LanuHum, есть ли какое-нибудь учебное пособие по материалам povray? С чего следует начать изучение?На русском языке нет ничего, насколько мне известно.
п.с. голосую за ноды.
Убунту и Дебиан имеют в репах Povray-3.7
Если Поврей установлен как это положено в /usr/bin, то и первое поле Binary Location можно тоже не заполнять.На мой взгляд, вот это следует добавить на первую страницу, полезная информация.
На русском языке нет ничего, насколько мне известно.:'(
Вот, собственно, картинка, показывающая ноды.Пытался вязать ноды по скриншоту, некоторые связки не рендерятся, а в вашем файле не отображается preview.
Материал Povray состоит из текстуры и физических свойств объекта.признателен за столь подробный ответ, мы к нему ещё вернёмся, т.к. к его пониманию мне ещё предстоит прийти :)
...
1. Как поставить в окружение HDRI и вращать её?На вопросы 1 и 2 отвечу позже, когда разберусь сам.
2. Как сделать мягкие тени?
3. Как создать стекло и зеркало?
1. Как поставить в окружение HDRI и вращать её?Обновляем аддон.
2. Как сделать мягкие тени?
разработчик оффициального экспортёра убедил меня потратить некоторое время на wip, в котором будут использованы элементы непосильные для Cycles.Хотелось бы понять мысли разработчиков и их планы на будущие.
1. HDRI ставим как текстуру worldТекстуру поставили - хорошо, а как поменять силу HDRI и выставить её на mirror ball?
SPOT требует привязки TRACK TO к пустышкеага, без пустышки не рендерит, а почему так?
3. Без пустышки теперь рендерит, но светить лампа будет в центр координат.Цитата: LanuHumразработчик оффициального экспортёра убедил меня потратить некоторое время на wip, в котором будут использованы элементы непосильные для Cycles.Хотелось бы понять мысли разработчиков и их планы на будущие.
LanuHum, ну напишите вы про плюшки povray, а дальше что? Они примутся писать экспортёр под blender?Цитата: LanuHum1. HDRI ставим как текстуру worldТекстуру поставили - хорошо, а как поменять силу HDRI и выставить её на mirror ball?Цитата: LanuHumSPOT требует привязки TRACK TO к пустышкеага, без пустышки не рендерит, а почему так?
разве это не gamma устанавливает?Нет, вроде не гамма и похоже на то, что сцену освещает что-то другое, а не HDRI.
а зеркало должно видетьЗеркало видит.
посмотри здесь:Открыл, посмотрел, ничё не понял и закрыл :D
Да, похоже, что HDRI не является источником света, это просто текстура окружения.Цитата: LanuHumразве это не gamma устанавливает?Нет, вроде не гамма и похоже на то, что сцену освещает что-то другое, а не HDRI.Цитата: LanuHumа зеркало должно видетьЗеркало видит.Цитата: LanuHumпосмотри здесь:Открыл, посмотрел, ничё не понял и закрыл :D
Что даёт освещение с её помощью?Затрудняюсь ответить, но ваше описание соответствует моему понимаю (т.е. текстура окружения + emission).
Что даёт освещение с её помощью?Затрудняюсь ответить, но ваше описание соответствует моему понимаю (т.е. текстура окружения + emission).
Попробуй.Вначале изменил, во кладке word, Horizon Color на Hex:000000 - рендерился серый силуэт кубика на чёрном фоне. Потом вкл. Radiosity - рендерился только чёрный фон. Делаю вывод, что освещения нет.
Попробуй.Вначале изменил, во кладке word, Horizon Color на Hex:000000 - рендерился серый силуэт кубика на чёрном фоне. Потом вкл. Radiosity - рендерился только чёрный фон. Делаю вывод, что освещения нет.
Далее, добавил текстуру окружения:
(http://i.imgur.com/qdeKRkZ.jpg) (http://imgur.com/qdeKRkZ.jpg)
LanuHum, освещение от HDRI появилось, но насколько оно корректное - мне трудно судить.
nautilus, в общем, мне не понятна твоя проблема.Проблемы нет, просто хотел узнать как установить hdri.
LanuHum, расскажите как нарисовано, это композитинг?Как я понял, здесь нет композитинга. Это чистый рендер. Охренеть!
Playing around with media to model a sunrise I came up with the following image
finally.
And yes, there are people trying to walk a rope between hot air balloons. They
rely on their parachutes.
For the balloons I took an IRTC-Entry by Neil Alexander as starting point.
Image_maps of Earth and Mars are from NASA of course.
Enjoy and best regards,
Michael
The media, trees and far-off balloons look gorgeous!Кроме канатоходца и шаров на переднем плане
I think the tightrope walker is a bit too large; maybe 70% of its size
should be a better fit.
If this is supposed to be glow from the propane burners, it should be
(1) darker, (2) more coloured, and (3) be more intense near the bottom
of each balloon. One way to achieve this might be to place light sources
at the propane burner locations with proper distance-based falloff, and
use arse... um, I mean, backside illumination on the balloon skins
("diffuse X,Y" or, better yet, "diffuse albedo X,Y", where X+Y < 1).
здесь нет композитинга. Это чистый рендер. Охренеть!Здорово! :)
справа интерналВ cycles тоже нормально:
Поверхности, полученной в результате вычитания присваивается материал вычитаемого объекта.Интересная опция, но лучше её повесить на галочку.
Ну, это дело техники. Напишем, чтобы присваивался один общий материал, вернее, по-повреевски - текстура. :)ЦитироватьПоверхности, полученной в результате вычитания присваивается материал вычитаемого объекта.Интересная опция, но лучше её повесить на галочку.
LanuHum, а если у вычитаемого объекта нет материала, какой материал будет назначьться поверхности?
Интересная опция, но лучше её повесить на галочку.Нет, галочки не нужно. Просто : есть материал - присвоится, нет - будет общий.
LanuHum, расскажи, какими инструментами пользуешься для написания экспортера. Среда разработки(редактор)? Я скачал исходники с git посмотреть, поучиться python. Пытаюсь выбрать ide для питона: eclipse, eric6, intelliJ, geany.Я использую Geany. Для Питона этой простенькой среды достаточно вполне.
Чем коммитишь git?SmartGit.
К тому же, Блендер имеет кое-какие инструменты для доступа к API (аддон API-навигатор в разделе Development). Очень полезная штука, я без неё трудно представляю свою деятельность в области скриптописания. :)
Для тех, кто хочет разобраться с Питоном я создавал темуЦитироватьК тому же, Блендер имеет кое-какие инструменты для доступа к API (аддон API-навигатор в разделе Development). Очень полезная штука, я без неё трудно представляю свою деятельность в области скриптописания. :)
Не знал. Большое спасибо!
LanuHum, я понял. Извиняюсь за сообщение не по теме.Сам стараюсь не извиняться и другим не советую. Как когда-то спел Юрий Лоза: "Все утешенья - звук пустой!"
Traceback (most recent call last):
File "/usr/share/blender/2.75/scripts/modules/addon_utils.py", line 324, in enable
mod = __import__(module_name)
File "/home/alex/.config/blender/2.75/scripts/addons/povray/__init__.py", line 36, in <module>
from . import render
File "/home/alex/.config/blender/2.75/scripts/addons/povray/render.py", line 2735
if scene.povray.tempfiles:
^
IndentationError: unexpected indent
Почему-то не активируется экспортер:Ты откуда скачал это? В файле render.py , который на GitHub, 2668 строк :) , а у тебя ругается на строчку 2735 :oКодTraceback (most recent call last):
File "/usr/share/blender/2.75/scripts/modules/addon_utils.py", line 324, in enable
mod = __import__(module_name)
File "/home/alex/.config/blender/2.75/scripts/addons/povray/__init__.py", line 36, in <module>
from . import render
File "/home/alex/.config/blender/2.75/scripts/addons/povray/render.py", line 2735
if scene.povray.tempfiles:
^
IndentationError: unexpected indent
Теперь все работает.Всё? Ну ничего себе! У меня ещё всё не работает! :)
В предпросмотре материала у движка scale не правильный диапазон 0-100. Нужно, например, 0.5-2 и по умолчанию, чтоб на 1 было. Или что-то такое.было там так:
А почему фон на превью материала такой странный? По идее шахматка должна быть... Или так задумано?
Превосходно! Я рад, что Вы обратили на это внимание .Ну, так ройтесь дальше, поищите баги, пока у вас с Mr.A есть настроение. И, не надо со мной на Вы. Я, когда бреюсь и сам вижу, что мне уже не 18. :)
Я не буду на Ты с Вами принципиально... смиритесь :)А, вот с этим как раз нужно разобраться, и, я буду рад, если Вы мне поможете. Мне об этом писал уже разработчик оффициальной версии. Он тоже держит на контроле моё творчество и, в общем, очень доволен, но я трудно его понимаю. У меня нет Винды, у меня небольшой SSD, на нём нет места для гостевой оси в VirtualBox.
Не могу я рыться... я на Win... а там гуй постоянны вплёвывается, перерендеривая материал... как это отключить не знаю.
What is missing is the /EXIT command that you can add at the launch of POV-Ray. Under Windows, this can indeed close the GUI.Сейчас я попробую порыться в своём коде, чтоб это присобачить.
print ("***-STARTING-***")
extra_args = []
if scene.pov.command_line_switches != "":
for newArg in scene.pov.command_line_switches.split(" "):
extra_args.append(newArg)
self._is_windows = False
if sys.platform[:3] == "win":
self._is_windows = True
if"/EXIT" not in extra_args and not scene.pov.pov_editor:
extra_args.append("/EXIT")
else:
# added -d option to prevent render window popup which leads to segfault on linux
extra_args.append("-d")
# Start Rendering!
try:
self._process = subprocess.Popen([pov_binary, self._temp_file_ini] + extra_args,
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
Хорошо попробую. Но это не выход, увы. Вы лишаетесь большой , если не сказать огромной, поддержки Win юзеров. Может, стоит, написать разработчикам, чтоб впилили в код фоновый рендер для Win? Или найти умельцев, которые это сделают и соберут?Писал уже, сказали, учи С++ и пиши код, нам некогда на 20 лет вперёд. Но, вариант есть: собрать версию Povray-linux для Винды. Хорошо бы, если бы sungreen помог хотя бы разобраться, как это можно сделать используя MinGW. Я ищу в Гугле, но, впадаю в депрессию: у меня недостаточно знаний английского и знаний командной строки, чтобы понять, что там и как :(
LanuHum, я вчерась порылся в Гугле, там пишут что MinGW можно подключить к code::blocks, хороший кстати эдитор!
И ещё тут сноска, ты наверное это видел: http://exlmoto.ru/mingw-development-environment/
А по поводу Win юзеров, так это как нипель- туда дуй, а от туда х&й :D
А по поводу Win юзеров, так это как нипель- туда дуй, а от туда х&й :D;D ;D ;D
Самый лучший линукс на флешке:ЦитироватьА по поводу Win юзеров, так это как нипель- туда дуй, а от туда х&й :D;D ;D ;D
Тогда на днях попробую как советовал sungreen, грузить Linux с флешки. Не посоветуете готовый Linux на флешку объёмом 8-16 Гб?
Я тут опять со своим юзабилити. Много параметров просто предоставлены не удобно. Например, на вкладке рендера Radiosity куча параметров и все в один ряд. Надо как-то их группировать по логике, например MaxReuse и MinReuse нужно сгруппировать, как чуть выше параметры Dimension-Aspect Ratio. И остальные так же. Еще на картинке красным и зеленым обозначил такие же моменты.Про radiosity. Эта фишка для удлинения рендера до нескольких часов, чтобы отрегулировать реалистичность результат. Выяснять, какой там параметр и для чего я не стану в ближайшее время - нет времени. Поэтому и группировать я не стал, ибо не знаю, что с чем связано. Если я объединю некоторые, то это будет похоже на детский рисунок мелом по асфальту, который называется "классики".
Опять же масштаб не совпадает - обозначил желтым на картинке. Может сделать их одинаковыми? Или так задумано?
Предпромотр текстур не работает?
Очень сильно не хватает всплывающих подсказок для всех кнопочек, движков и тд. Например при наведении мышки на галочку во вкладке материала -> Diffuse -> Albedo могла бы быть подсказка, что это вообще за галочка. Русского не надо, достаточно просто скопировать короткое определение из официальной справки. Конечно, скажешь, надо читать справку по рендеру. Я-то прочитаю, а кто-то нет, потыкает и бросит.
Это пока первые впечатления. А вообще огромная работа проделана.
Здорово! Спасибо.Maurice Raybaud сообщил мне об ошибке при просмотре image. Исправил как-то не очень, но теперь можно просматривать и изображения. Это тоже нужно, ибо модификаторами можно изменять и изображение из файла. Для этого нужно увеличить turbulence. Появятся ещё крутилки :)
Maurice Raybaud сообщил мне об ошибке при просмотре image. Исправил как-то не очень, но теперь можно просматривать и изображения. Это тоже нужно, ибо модификаторами можно изменять и изображение из файла. Для этого нужно увеличить turbulence. Появятся ещё крутилки :)Ничего не понял, но звучит солидно :) . А кто это, Maurice Raybaud?
Это разработчик оффициальной версии аддона render_povray. Он следит за развитием моей версии, и тестирует её периодически :)Maurice Raybaud сообщил мне об ошибке при просмотре image. Исправил как-то не очень, но теперь можно просматривать и изображения. Это тоже нужно, ибо модификаторами можно изменять и изображение из файла. Для этого нужно увеличить turbulence. Появятся ещё крутилки :)Ничего не понял, но звучит солидно :) . А кто это, Maurice Raybaud?
File '/tmp/Scene.pov' line 15: Parse Error: Expected 'numeric expression',
color_map found instead
Fatal error in parser: Cannot parse input.
Render failed
File '/tmp/Scene.pov' line 14: Parse Error: Keyword 'facets' can only be used in
a normal statement.
Fatal error in parser: Cannot parse input.
Render failed
Стандартный кубик. Игрался с паттернами. Хотел отрендерить все по очереди. Так вот некоторые не рендерятся.
Spiral1, Spiral2 :
КодFacets:File '/tmp/Scene.pov' line 15: Parse Error: Expected 'numeric expression',
color_map found instead
Fatal error in parser: Cannot parse input.
Render failedКодДля некоторых(Facets, Slope) предпросмотр(кнопка Updata preview) работает только самый первый раз, потом отказывается обновлять.File '/tmp/Scene.pov' line 14: Parse Error: Keyword 'facets' can only be used in
a normal statement.
Fatal error in parser: Cannot parse input.
Render failed
The facets pattern is designed to be used as a normal, it is not suitable for use as a pigment: it will cause an error.При выборе в названии этого паттерна теперь написано (Normal only)
Facets - паттерн только для рельефаПонятно. Я так и думал.
File '/tmp/Scene.pov' line 23: Parse Error: Expected 'object', undeclared
identifier 'data_Cube_ob' found instead
Fatal error in parser: Cannot parse input.
Render failed
"***POVRAY FILE NOT FOUND***
***POVRAY FINISHED***
ERROR: Python context internal state bug. this should not happen!
...
ERROR: Python context internal state bug. this should not happen!
ERROR: Python context internal state bug. this should not happen!
ERROR: Python context internal state bug. this should not happen!
...
Если попытаться отрендерить кубик с включенной опцией Blob Grid, то ошибка:Исправил. :)КодИ начинает очень много в консоль повторять :File '/tmp/Scene.pov' line 23: Parse Error: Expected 'object', undeclared
identifier 'data_Cube_ob' found instead
Fatal error in parser: Cannot parse input.
Render failed
"***POVRAY FILE NOT FOUND***
***POVRAY FINISHED***
ERROR: Python context internal state bug. this should not happen!КодОбновление: вот это ERROR: Python context internal state bug. this should not happen! уже не могу воспроизвести. Тут наверно что-то другое, а не Blob Grid...
ERROR: Python context internal state bug. this should not happen!
ERROR: Python context internal state bug. this should not happen!
ERROR: Python context internal state bug. this should not happen!
...
Обновил. Замечательно. И последнее на сегодня. Объект Sphere Sweep сам на себя не похож на рендере.Povray не поддерживает ни NURBS, ни Bezier. Об этом мы дискутировали на офсайте, но, ответ разработчиков был снова : "Некогда, хотя понимаем!"
Сейчас я попробую порыться в своём коде, чтоб это присобачить.Не оставляю надежд улучшений под Win. Пробовал запускать Povray из командной строки со свёрнутым GUI. Это работает:
cmd /c start /min "путь к povray" povray64.exe /RENDER "путь к файлу" файл.pov -d
"путь к cmd.exe" cmd.exe /c start /min "путь к povray" povray64.exe /RENDER "путь к файлу" файл.pov -d
Нужно разобраться с cmd. Может, есть аналогии с линукс. В линуксе вместо cmd есть konsole. Чтобы запустить Блендер из консоли, я могу написать скрипт в две строчки, в линуксе это bashЦитироватьСейчас я попробую порыться в своём коде, чтоб это присобачить.Не оставляю надежд улучшений под Win. Пробовал запускать Povray из командной строки со свёрнутым GUI. Это работает:КодЗапускает Povray свёрнутым, рендерит картинку, сохраняет её и выходит.cmd /c start /min "путь к povray" povray64.exe /RENDER "путь к файлу" файл.pov -d
-----
Но как это присобачить в коде, увы ума не приложу... Хотя вероятно, в коде для команды запуска рендера, полностью это должно выглядеть так:Код-----"путь к cmd.exe" cmd.exe /c start /min "путь к povray" povray64.exe /RENDER "путь к файлу" файл.pov -d
Можно еще решить через командный файл типа .bat ...не знаю, как лучше?..
Далее, из питонового скрипта я могу запустить этот файл используя модули subprocess и os
way = "/bla/bla/bla"
filestart = "bash"
script = os.path.join(way,filestart)
p1=subprocess.Popen(["%s"%script],stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
Но, опять же получится, что вместо окна поврея, будет постоянно открываться окно cmd
Кстати, наткнулся: https://github.com/UberPOV/UberPOV/releases (http://blender-3d.ru/forum/go.php?url=aHR0cHM6Ly9naXRodWIuY29tL1ViZXJQT1YvVWJlclBPVi9yZWxlYXNlcw==)Ещё на Блендер-Украина я воскрешал тему "Хвалите свои рендеры, пожалуйста:
Для Win распаковать .exe в папку .../bin установленного Povray 3.7
Разница с официальным релизом:
I asked to the Blender developers if it was possible to integrate a build or source with building process of povray with Blender, they said no, because then they would have to let all the rendering engines sources host in and it would require too much coordination for every release, the only one delivered out of the box with Blender is Cycles because developers of blender an Cycles are the same persons.Херню он пишет. Но, есть подозрение, что Розендал поссорился с командой Поврея.
For that reason, your request looks like work only durably achievable by the povray compiling team, of which I am not part. Besides, it will necessarily happen "all by itself", since the povray engine and IDE have now been split. the remaining frontend popping up and disappearing under windows is actually only providing some statistics, and not functionally that problematic. Can you point me to the discussion were these users are complaining? I am sure they have not really tried to use the exporter because it has much bigger issues, or if not, then they probably already made fantastic pictures.
Хотя в моей перспективе видится композитинг рендереров слоёв различными рендерерами. Я уже подумываю над этим...Хорошая идея. Нашел такое видео:
Любая программа - это программа, составленная человеком. Разумеется, просто так невозможно отрендерить слой в Поврее, слой в Суслике, наложить одно на другое, и, чтоб с тенями и прочим. Нужно думать. У Поврея есть опции no_shadow, no_reflection, no_image, которые можно использовать в композитинге слоёв.ЦитироватьХотя в моей перспективе видится композитинг рендереров слоёв различными рендерерами. Я уже подумываю над этим...Хорошая идея. Нашел такое видео:
https://vimeo.com/20987441 (http://blender-3d.ru/forum/go.php?url=aHR0cHM6Ly92aW1lby5jb20vMjA5ODc0NDE=)
Это всё замечательно, но достижимо и в Yafaray, и любом другом рендере не поддерживающем виз по слоям. Вопрос такой: умеет ли Povray рендерить объект(ы) отдельно, учитывая при этом влияние остальных объектов сцены, которые не рендерятся? Поддерживает ли Material и Object ID? Эти возможности очень востребованы при композитинге...
Я могу анимацию каустики за секунды отрендерить в Art of Illusion, кинуть render_result как секвенцию на спот лампу интернала, и, попробуй докажи, что это фейк.А можете по пунктам, но на примере Yafaray объяснить принцип получения секвенции каустики?
Да, похер, Яфа или Люкс.ЦитироватьЯ могу анимацию каустики за секунды отрендерить в Art of Illusion, кинуть render_result как секвенцию на спот лампу интернала, и, попробуй докажи, что это фейк.А можете по пунктам, но на примере Yafaray объяснить принцип получения секвенции каустики?
Допустим, нужна такая анимация:
(http://img246.imageshack.us/img246/9345/torusknotfunli8.gif)
В интернале вместо камеры ставишь лампу с текстурой...Понял только это... Можете чуть подробнее про подготовку секвенции?.. (нафиг Lux... c тем же успехом можно использовать Cycles)
Где твоя железная логика, которой у меня нет? ;D ;D ;DЦитироватьВ интернале вместо камеры ставишь лампу с текстурой...Понял только это... Можете чуть подробнее про подготовку секвенции?.. (нафиг Lux... c тем же успехом можно использовать Cycles)
;D ;D ;D ;D ;DИ, что тебе даст вращение? А, если объект не вращается, а кто-то, просто, подносит фужер к губам или берёт бутылку с лимонадом со стола?
А не проще вращать объект, чем констрейны всякие создавать? Я не об этом.. Мне нужна только каустика на чёрном фоне. Желательно, и под объектом.
ЦитироватьЯ не об этом.. Мне нужна только каустика на чёрном фоне. Желательно, и под объектом.
Моя циата выше:ЦитироватьЦитироватьЯ не об этом.. Мне нужна только каустика на чёрном фоне. Желательно, и под объектом.
Как-то было понятие студии для интернала. Ставишь камеру за объектом, вокруг белая сфера, настраиваешь констрейны и пипец. В интернале вместо камеры ставишь лампу с текстурой...Замени белую сферу на чёрную :)
Не понял... Вы кидаете полный рендер на светильник или только проход каустики?ДОГАДА!!! :)
Нахрена тогда второй рендерер? ;D :o ::)Ага, я говорил про идею, а вы хотите уже сегодня готовый рендер по слоям. Второй рендер нужен, чтобы потянуть 20 000 000 поликов. Дайте своей Яфе половину, и, она крякнет.
Как это выглядит? Можете пример рендера дать по слоям и в сборе? Моя не понимай :) ::)
Блин, я стараюсь достаточно серьёзно вести обсуждение, а Вы шутки шутите :) Ладно, понял... разберусь сам.Я говорю серьёзно, но в свойствееном мне стиле. Рендер по слоям нужен, чтобы объединить лучшие качества различных рендереров. Действительно, если у нас один полигон, то нах нам рендер по слоям?
Вы пишите, что каустика считается быстрее... я про скорость её расчёта на разных рендерерах.Так я же говорю вот о чём.
А зачем скрипт? :oЯ уже не могу жить без скриптов. Мне, кажется, что через некоторое время мне и блендер открывать не нужно будет. Скриптописание - это хорошая практика тренировки воображения. Сначала смеялись над пользователями Povray, что они свои сцены создают в текстовых файлах, используя SDL. Теперь, когда я вижу недостаточное количество средств в Блендере, чтобы тыкая мышкой можно было достичь желаемого результата, то я уже не смеюсь над повреевцами пишущими тексты.
Или это: http://manaeff.ru/Files/Humor/humor017.htm ;D ;D ;D
Ну дык, раз скрипту всё дозволено, может он всё таки GUI POV-Ray на винде скрыть? :DСкрипту дозволено владеть над Блендером. Над Виндой владеет Билл ;D
Ну дык, раз скрипту всё дозволено, может он всё таки GUI POV-Ray на винде скрыть? :DНа вашем месте, я б уже собрал Povray из линукс сорцев, используя MinGW :)
Или это: http://manaeff.ru/Files/Humor/humor017.htm ;D ;D ;DSamovar, спасибо за ссылку! С утра посмеялся на славу.
Новый самокатый автомобиль из Китая - лучший выбор для тот, кто хочет в езду.;D ;D ;D
И еще вопрос по лампам: почему Radius нельзя поставить меньше 1 градуса? Я хочу, например, 0.2. Там нет ошибки с округлением/градусами/радианами/int/float?Это не моя крутилка. Это крутилка Блендера. Посмотри в интернале spot_size. Я её одолжил у интернала, чтобы во вьюпорте происходила визуализация этого параметра. В принципе, можно приделать свою крутилку. Сейчас посмотрю , что с прицелом
Хотел поиграть с лазерной указкой указкой, зеркалами и призмами, а прицел сбит :( см картинку.Ага, вспомнил. Уже об этом где-то здесь писал.
Забыл как сделать каустику с дисперсией.Чтобы сделать каустику с дисперсией, нужно обновить экспортёр, а потом вот так вот(iridescence включаем по желанию):
Великолепно! Но как отрендерить всё тоже самое, но без стеклянного объекта? Это возможно в POV-Ray?Так что ли? ;)
Спасибо, получилось. Только вот в чем загвоздка - прозрачные материалы в povray экспортере не переносимы между объектами! Нельзя применить один материал к другому объекту, нельзя слинковать из внешнего файла материал. Потому, что см картинку. Ну вот зачем эти параметры в Objects, а не в Materials? И движок в Materials который Object IOR не функционален, все равно при назначении готового материала другому объекту надо лезть в его свойства во вкладке Objects и крутить там.Потому что это параметры объекта в Поврее. А, если несколько материалов, и, пользователь понакрутит во всех материалах разные параметры, экспортёр какие должен выбрать? :)
Да! То что надо! А можно еще такую картинку, но без каустики? И пояснения как Вы этого добились?Без каустики? Тень просто? Во вкладке object в самом низу Povray Object Modifiers: No Image
Потому что это параметры объекта в ПоврееМутно как всё
А, если несколько материалов, и, пользователь понакрутит во всех материалах разные параметры, экспортёр какие должен выбрать?Вероятно, при экспорте в .pov файл один материал должен создаваться для каждого объекта заново. Сейчас это неудобно. mr.A прав.
Вы можете выложить вторую картинку без каустики и .blend файл?
Спасибо! Еще один вопрос. Почему тень на второй картинке менее плотная, чем на той, что с каустикой?Вероятно, на предыдущей картинке тень более плотная из-за того, что там используется фотонная карта.
А вообще, я очень рад, что POV-Ray это всё умеет!
А можно отрендерить каустику без падающей тени, так же без стеклянного объекта? Это даже ещё лучше. Тогда вычитанием из неё картинки без каустики и без тени, получим только каустику на чёрном фоне. Именно это мне и нужно.Можно. Обновляйте экспортёр.
Traceback (most recent call last):
File "/home/alex/.config/blender/2.75/scripts/addons/povray/operators.py", line 1624, in execute
file.write(' turbulence <%.4f,%.4f,%.4f>\n'%tex.povray.turbulence[:])
NameError: name 'file' is not defined
Turbulence -> Enable. Update preview.Исправил косяк.КодTraceback (most recent call last):
File "/home/alex/.config/blender/2.75/scripts/addons/povray/operators.py", line 1624, in execute
file.write(' turbulence <%.4f,%.4f,%.4f>\n'%tex.povray.turbulence[:])
NameError: name 'file' is not defined
Обновил. Нихрена не работает как у Вас. Не могу получить каустику как на последней картинке. Что еще надо крутить кроме No Image и No Shadow?Чтобы получить картинку как у меня необходимо сначала сохранить фотонную карту в файл с выключенными No Image и No Shadow. Для этого идём Render prop => Ptotons => Photon Map File и включаем Save. Если нет необходимости сохранить файл на будущее, то поля Directory и Filename можно оставить чистыми. Делаем рендер. После рендера вместо Save включаем Load . Увидим адрес, который записался автоматически. Не трогаем его, если нет нужды подключить другой файл. Включаем No Image и No Shadow и делаем повторный рендер. В какой-то степени процесс сопоставим с запеканием текстур в интернале.
Ага, теперь нормально. Вот вопрос еще такой. Что-то я как-то упустил из виду, но синий цвет(на картинке) влияет только на 3D вид? На рендер влияние не заметил. Если так, то желательно пометить его, например, Color Viewport, а если он влияет на цвет материала объекта, то можно пример, как именно?А, разве, в интернале иначе? В интернале это цвет материала без текстуры. Сейчас проверял. Установил diffuse красный, во вьюпорте куб стал красный. Добавил чёрно-белую текстуру clouds: куб остался красный, включая режим материала и режим текстуры. Может, это при Циклах наворочено там, не знаю...
А, разве, в интернале иначе?Только если включен Ramp. Ну да ладно.
Как сохранить анимацию? Секвенцию файлов png. Scene files location ничего не выводит. Вообще ничего, даже не анимацию. Я что-то пропустил?Завтра проверю, что я там напутал. Сейчас у меня секвенция сохраняется в домашнюю директорию :)
Расширил возможности записи меша как сетки. Теперь можно и edges, и faces записать как отдельные группы метаболовЕще бы намекнул для чего это.
==== [Rendering...] ========================================================
Rendered 182272 of '18400 pixels (34%)7%)f 518400 pixels (0%)0%)
Еще бы намекнул для чего это.Первое, что пришло на ум - крем на торте. Немного только подредактировать в proportional editing mode random. :)
Вот эта картинка рендерилась почти 8 минут(старенький комп - core2duo e6320). Две лампы spotlight с включенными area и общее radiosity. Как менее тяжко сделать мягкие тени? И во время рендера не очень информативно сообщается прогресс - проценты. Это особенность самого povray? Например весьма долго в консоли висит надписьВ общем, поковырялся я, и, изучать модуль re не стал пока.КодЭто рендер пишет или экспортер(надо затирать оставшиеся предыдущие символы пробелами)? Оно просто висит несколько минут 34%, потом 85%. Не информативно, я сначала думал вообще повисо все, но решил подождать.==== [Rendering...] ========================================================
Rendered 182272 of '18400 pixels (34%)7%)f 518400 pixels (0%)0%)
Файл прилагаю. Mожно включить рендер во вьюпорте и покрутить. Именно для этого всё это дело со слоями рендера и затевалось...Забыл ответить тебе тогда. Вот две ссылки которые помогут тебе развить тему.
Кажется поживей стало с процентами, но все равно бывает на каком-то значении зависает дольше, чем на других, видимо это особенность povrayНу, так, реально же уходит разное время на рендер того или иного тайла. ???
Забыл ответить тебе тогда. Вот две ссылки которые помогут тебе развить тему.Благодарю за полезные ссылки, LanuHum! Обязательно вернусь к этой теме, но чуть позже.
В общем, поехал я писать славянский редактор, используя Блендер as pymodule & pysideУдачи, надеюсь получится, очень бы хотелось наш редактор, а не переведенный
В общем, поехал я писать славянский редакторБыло уже (http://blender-3d.ru/forum/index.php?action=dlattach;topic=901.0;attach=3537;image)
Интерфейс будет иметь изначально русский языкБудет? Пока не видно. Если планируется тесная интеграция с Povray, то..на каком языке говорят пользователи его.
Моё незнание языка СТак исправь это. Если бы ты вообще не знал программирования, то наверно сложно, а так, я думаю, не сложно его и с++ познать, для программиста. Назло Розендаалю. Плюсов очень много будет, вплоть до патчей\фичей в Povray и тп. Я вот несколько языков знаю(правда некоторые на уровне "покопаться в чужом коде"), но пишу мало.
Да, уже было. Объясняю. Была возможность использовать Qt для создания того, что не может Блендер. Например, создать colorramp с количеством элементов более 32 не внося изменений в исходники Блендера, или , например, создать модель объектов, которые Блендер воспроизвести не может: для поврея это beziermesh. Как только я показал такую возможность, следующая версия Блендера начала слетать при попытке открыть окно Qt. С какого перепугу? Не хочу считать себя предсказателем, но, уже говорил, что Блендерологи за мной следят. Считаю, что в этом кроется конфликт между разработчикми поврея и блендера. Но, если у разработчиков Блендера нет никакой последовательности, то у разработчиков Поврея есть традиции, которые они всё-таки чтут.ЦитироватьВ общем, поехал я писать славянский редакторБыло ужеЦитироватьИнтерфейс будет иметь изначально русский языкБудет? Пока не видно. Если планируется тесная интеграция с Povray, то..на каком языке говорят пользователи его.ЦитироватьМоё незнание языка СТак исправь это. Если бы ты вообще не знал программирования, то наверно сложно, а так, я думаю, не сложно его и с++ познать, для программиста. Назло Розендаалю. Плюсов очень много будет, вплоть до патчей\фичей в Povray и тп. Я вот несколько языков знаю(правда некоторые на уровне "покопаться в чужом коде"), но пишу мало.
И что там в Art of Illusion? Я как-то скачивал посмотреть - жуткая штука. Чем полезна?
Удачи, надеюсь получится, очень бы хотелось наш редактор, а не переведенный3DRend, мне очень бы хотелось найти хотя бы одного единомышленника, способного написать в коде то, что я написать не могу :)
Это пять!Это, конечно, хорошо, но, только сегодня я остался один, и, мне никто не мешает. Разъехались сокомнатники, телевизор молчит...радость то какая! :D :D :D
Не фотореалистичноНаоборот, для мультика самое то, клёвая ёлка!
LanuHum, почему Санта Клаус?Кто сказал, что Санта Клаус? Дело в бороде? Собственно, я даже не думал о различиях дедов морозов :)
Деда Мороза может приподнять чутка, на приступочек какой-нибудь, а то смотрится мелковато, а ведь он основной персонаж на Новый годПодумаю. Там ещё подарок в коробке будет к окну приложен. Елка, игрушки, вроде как, тоже основное на открытке. :)
Ёлка вообще клёвая вышла. Я вот заметил у вас ставят сосну, а у нас в Сибири пихту.В Питере елей в лесах навалом. Когда на поезде едешь - стеной вдоль железной дороги стоят. Я видел у метро продают ёлки, не сосны. Но, сосна дольше стоит не осыпаясь. Держат же до 14 января.
С наступающим!
Деда Мороза может приподнять чутка, на приступочек какой-нибудь, а то смотрится мелковато, а ведь он основной персонаж на Новый годПриподнял. :)
Попал хорошо! :)Стараюсь! :)
From: Mr
The official version of the exporter, has now integrated many of LanuHum's
primitives, and an Avogadro importer also based on his work.
Леонид, это действительно хорошая новость. Удачи!Николай, спасибо за поддержку, но ссылка на мой экспортёр в контакте - это ни работа, сделанная с помощью моего экспортёра. :)
Но токаря народ уже давно признал и ценит!
LanuHum и мои поздравления!Спасибо! :)
это ж труд!!!
хоть водки на стол поставь....:D
Ланухум, зачем ты здесь?Хороший вопрос.
Ты его очень часто всем задаешь, кроме себя. Думал, может, знаешь ответ...Знаю. На зло мне я брошен в эту реальность.
А, может, наоборот? :)реальность эту в брошен я мне зло на. Знаю.
А если компутер у тебя отобрать, на цепь к батарее приковать и кормить как скотину... это по буквам как будет? :)По бувам это будет так:
Вот я и не пойму, почему ты не ценишь то, что имеешь, а постоянно сетуешь...Изподвыверта, да?
А что тебе надобно тогда ? И чего ты хочешь? Правдиво ответь.Если честно, то я хочу исчезнуть из всех планов бытия. Не умереть, чтобы потом в гробу переворачиваясь проклинать самого себя за своё желание "умереть", а исчезнуть, раствориться, чтобы во вселенском сознании не осталось обо мне памяти...
Ну когда ты синий, то это явно тебе глаз не режет, а только остальным :)Пошутил? Дай другим пошутить.
Блин, ну вот чё ты такой злой на всех? Понятное дело - на меня... Но почему ты адекватно не воспринимаешь критику от друзей?Твоё заблуждение, что я на тебя злой.
И в чём проблема? :) Такой же чел,со своей гражданской позицией... а она, блин, имеет свойство не совпадать с другими...Проблема ни в том, что все гражданские позиции пофиг.
есть рецепты?оливье?
не нужно в жизни искать смыслы.У нас тоже морозец небольшой, всё очень новогодне, но...milyad, иди ты в жопу.
жизнь и есть смысл...
токарка клёвое дело, да и пасти коров - прекрасное занятие - вокруг природа -Мать наша....
ну.... поныть тож бывает охота....
когда всё офигительно - на самом деле - это ужос....
..................
а у нас снег идет)))
... ты не вкуриваешь... вот, если бы они были в шапках-ушанках, то кучу лайков бы собрал:);D ;D ;D
Почему именно Maya? Вроде бы и в других есть скрипты. Например, в max http://3dyuriki.com/2010/07/24/sozdanie-procedurnyh-kamnej-besplatnyj-skript/Извиняюсь, давно не тестил макса, но, могу с уверенностью сказать, что Блендер выигрывает в том плане, что можно использовать многочисленные модули, написанные вне.
Другое дело, если мы говорим о линуксе. А уж если завести разговор только о бесплатных прогах, то вообще грустно.
----------
Во всех современных ide есть функция автоформатирования. Любой исходный код в форме каши превратит в конфетку.
mr.A, да не бери в голову. Ланухумычу жизненно необходимо потроллить ...и я даже знаю кого :) Кстати, с Новым годом! Думаю, что у тебя уже наступил :)Мы тебя все знаем и любим! Не смотря на то, что хочешь ты показаться сволочью. :)
mr.A, ничего не изменится... срач, скорее всего, будет продолжен...https://www.youtube.com/watch?v=QlJYxk4TO1g
не нужно в жизни искать смыслы.Когда-то я смотрел фантастический фильм, вообще, его не помню, как и самого названия. Там герой фильма оказался на Земле, как оказался, тоже не помню, но помню его встречу с Наставником, который говорил ему: "Теперь здесь твой дом, ты не вернёшься больше туда, где жил до этого". Разумеется, был хеппи энд, он встретил любовь. Но, мне хэппи энд не светит, ибо, у меня тоже есть принципы, с которыми никакая любовь не совладает. Нельзя в жизни встречать настоящую любовь за пару дней до смерти. Ну что это за сказка жизни, которую можно написать на клочке туалетной бумаги: "Он родился и жил среди тех, кто зло шутит, но обижается на самые добрые шутки, среди тех, кому всегда не хватает денег, среди тех, у которых и натурал - не натурал, и пидарас - не пидарас, потому что все в каких-то стадах живут и тебя спешат куда-то записать: Ты кто? Девочек любишь? Мальчиков? Травку куришь, водку пьёшь, мамку бьёшь? Всем надо знать о тебе всё, чтобы удачно ранить тебя в самое больное место.
жизнь и есть смысл...
токарка клёвое дело, да и пасти коров - прекрасное занятие - вокруг природа -Мать наша....
ну.... поныть тож бывает охота....
когда всё офигительно - на самом деле - это ужос....
..................
а у нас снег идет)))
Но, вот, наконец-то он встретил ту, ради которой родился. Он узнал её по словам, по глазам, по голосу. Узнал и издох".
Если надо, я уйду...Стой тут, никуда не ходи.
Закрыть тему?Закрой, если не трудно. Заранее, спасибо!