Render.ru

Примеры генерации массивов на RhinoScript

#1
Вот понадобилось мне генерить сложные массивы объектов, явно это можно автоматизировать, пользуясь RS+VBA. Конкретно мне нужно строить множества по принципу итерационных структур (положение объектов, создаваемых на каждом след. шаге зависит от положения объектов, созданных на предыдущем). Где бы про это почитать и посмотреть примеры?
 
#2
Добрый день !

Интересная задача: используя метод Rhino.CopyObject вместе с относительными координатами можно создать аналог Rhino.Array с произвольными свойствами, отвечающий вашим задачам - может получиться очень интересный выразительный инструмент.

Информацию о особенностях использовании команд Rhino в Script коде даётся в конце каждого топика hlp файла сопроводительной документации Rhino. Суммарный Reference по методам скриптинга Rhino доступен на их сайте: http://www2.rhino3d.com/scripting/.
Следующим шагом являются примеры готовых скриптов и уроки начального уровня, с ними можно ознакомиться здесь: http://www.rhino3d.com/scripting/. В качестве расширения базового языка в Rhino может быть использован JScript или VB. Лучшим источником документации на эту тему IMHO естесвенно является база данных MSDN, ссылки на эти материалы, так же доступны на странице уроков (см.выше)

Возможно, что основой для вашего решения может послужить: http://www2.rhino3d.com/scripting/examples/default.asp?method=CopyObjectsToLayer
Надеюсь получится действительно интересный инструмент. `:)

C Уважением DP.
 
#3
Большое спасибо за пример.
Просто раньше я никак не мог разобраться с вопросом выбора текущего объекта. В конечном счете я хочу получить нечто вроде упрощенного парсера Lindenmayer-System Script с базовой аксиомой и возможностью задать несколько параметров. Ранее я экспериментировал с подобными вещами в Rhino+Bryce, но Bryce тяжело переваривает DXF размером 50-100 Мб, и часто глючит при импорте. Вот пример:
http://dzertanodzh.newmail.ru/hyperf4.jpg
(туманная структура в центре объекта - это еще два уровня шаров, но при импорте они покорежились и уменьшились в размерах). Надеюсь, теперь (еще и при использовании flamingo) дело пойдет лучше...
 
#4
Добрый день !

Интересные изыскания, но на мой взгляд Rhino не самый удачный вариант для реализации подобных построений. Возможно удобнее было бы использовать программу, способную работать с экземплярами объектов (Instance / Reference) например 3D Studio МАХ. В итоге какую бы сложную геометрию объект не имел он существует в сцене лишь в единственном экземпляре и все повторения лишь являются ссылками на массив его данных. Это позволит сэкономить память как при построении так и возможно при просчёте, не говоря уж о возможности изменив гнометрию исходного объекта сразу увидеть результат на всех его потомках. Ещё одной ценной возможностью является методика XRef, в таком случае вы можете оперировать с простыми Dummy объектами при построении, заменяемыми при визуализации на геометрию любой сложности, которую вы сможете себе позволить.

С Уважением DP.
 
#5
MAX'ом я не пользуюсь, и держать программу только ради единственного удобства не считаю нужным, хотя, возможно, у нее и есть определенные плюсы. Просто мне более привычен интерфейс Rhino, близкий по стилю к некоторым CAD'ам.

P.S.: У меня есть еще вопрос по поводу дистрибутивов Rhino. Я утянул в свое время Rhino 2 full ISO, и пользуюсь сейчас им, но знаю, что есть 3 штуки SR. Они кумулятивные, или надо ставить все последовательно? И, если не секрет, то какая на данный момент существует последняя "stable" версия Flamingo, которую можно добыть? (На всякий случай у меня есть кое-что из 3D софта на обмен, из того, что на пиратских CD не издавалось.)
 
#6
Добрый день !

Что, ж возможно подобный подход потенциально можно реализовать и в Rhino, обратите внимание на объявления массивов в начале скрипта, если на основании этих данных создать массив точек и перед просчётом заполнять родительским объектом(и) можно достичь сравнимого результата. Иначе говоря вы создаёте отстранённую структуру узора используя скажем слой объекта point для дефиниции объектной принадлежности, а затем реализуете такое содержание, которое вам необходимо на данном этапе.

В плане SR, насколько я понял они являются куммулятивными, перед началом работы с R.Script имеет смысл поставить SR3, поскольку часть методов (помеченны *) в Reference введена лишь в SR. Из работоспособных версий, которыми мне приходилось самому пользоваться могу отметить fl10eval_20020102.exe с ASA_crack никаких артефактов при работе пока не замечено. 1.0 Final зверь редкий в наших краях и мне лично не встречался.
Всё это богатство доступно на ftp: McNeel где не спрашиваются s/n и др.:
один из 3-х серверов: ftp://ftp2.antelope.com/pub/rhino/, зайдя на страницу получения eval вы можете узнать остальные адреса, зайдя на них потом при помощи Explorer или др. FTP менеджера.
Единственный момент выбирайти SR без суффикса -jp(jr) это европейская версия. Если будет необходим ASA crack, пишите могу отправить по e-mail.

С Уважением DP.
 
#7
По поводу подхода - на самом деле, я обкатывал "голый" алгоритм, в тесте вместо создания (копирования) объекта использовалась пустая функция, которая "ела" время и выделяла память (хотя эти параметры и были выставлены насколько на глаз), и оптимальным вариантом оказался такой, когда строится массив свойств для каждой итерации (следующего уровня), а не для всей структуры. Иначе количество требуемой памяти получается слишком велико, и скрипт может "упасть". (В одном из тестов программа съела около 1,5 Гб.)

По поводу сервиспаков - спасибо, а то по наличию на ftp сразу всех трех я решил, что они не кумулятивные. Краки у меня есть (насколько я понимаю, они универсальные?).
 
#8
Добрый день !

Согласен, это тоже неплохое решение, хотя подобная оптимизация всё-таки действует на уровне кода скрипта, выделение же памяти под объекты осуществляемое родительским приложением скорее всего останется близким к прежнему, но это всё в принципе мелочи `;) мало кто испытывал Reference систему того же MAXа при очень большом числе объектов...

В плане crack похоже, что для eval версии Flamingo и существует всего один вариант от ASA, просто в сети он встречается под разными именами.

С Уважением DP.
 
#9
Я не знаю, как reference у МАКСа, но если хранить все в явном виде, то мы получаем очень большой объем данных, принадлежащих скрипту. Прикинем: если "к-т размножения" объекта на каждом шаге внутри итерации такой, как в том примере, который я тут постил, то число объектов будет
1+6+6*5+(6*5)*5+((6*5)*5)*5 и так далее, т.е. получается нечто порядка sum{1..n}(5^(n-1)), что есть двольно немалое число при n хорошего порядка. А учитывая, что каждый объект описывается не одним байтом, то выходит много. Я же говорю - один только этот массив жрет до полутора гигбайт при полной генерации.

А по поводу крэка от ASA - я вытащил два файла с .nfo, это то что надо (собственно, к носорогу мне не надо, после установки SR он активируется серийником, насколько я понял)? :
==========
Age Satan Apocalypse assembler education sample (rev.C) for
-----------------------------------------------------------
Flamingo 1.0 (Jan-02-2002)
-----------------------------------------------------------
Universal sample for similar versions!

downloaded from:
http://ftp.mcneel.com/ftp/pub/flamingo/1.0/eval/fl10eval_20020102.exe

Installation:
Install/Reinstall Flamingo if you used previous sample rev.A
Put assembler sample to Flamingo Plug-ins directory and run

Rev.B
- corrected raytrace window update after rendering

Rev.C
- functionality for windows 9X

ASA
==========
==========
Age Satan Apocalypse assembler education sample for
Rhinoceros 2.0 (10-Sep-2001)
Universal sample for similar versions! Primary for rh20eval_20010910.exe
downloaded from:
ftp://ftp.mcneel.com/pub/rhino/2.0/eval/single/rh20eval_20010910.exe
==========
 
#10
Добрый день !

В плане оптимизации кода - согласен `:) но представьте, что вы создаёте лищь один объект имеющий уникальное имя и полный набор свойств, а затем размножаете не непосредственно сам объект, а точку с координатами, где этот объект должен быть отображён. В идеале это и есть reference объект MAX с тем лишь дополнением, что часть свойств находится в стеке после ключей трансформации, например св-ва материала, это я и имел виду в прошлой заметке, немного иначе реализована данная возможность в R.Man совместимых системах: поскольку результат это выведение множества объектов в результирующем изображении. Информация о геометрии объекта и его материале компилируется в виде дерева и доступна для итерации без допонительных затрат памяти. Это делает возможным разместив объекты при помощи итерфейса программы создавать многие батальные сцены с высокой детализацией персонажей: S.Wars ep.1, L.of Rings etc. Немного сложнее в случае необходимости привнесения уникальной анимации каждому из членов множества. В таком случае, делается несколько "типичных" схем поведения, их которых путём взвешенного смешивания можно получить множество визуально неразличимых видов поведения. Возможно используя RhinoMan можно получить эффективный способ работы с подобными структурами за счёт их построения на этапе визуализации ?

Извиняюсь за, возможно навязчивые советы, думаю в любом случае получилось любопытное обсуждение, которое возможно поможет ещё кому-то. В плане SR действительно, коммерческий релиз Rh 2.0 при обновлении до SR-3 потребует лишь повторного введения s/n использованного при установке. По поводу flamingo, то похоже это и есть единственный crack от ASA.

С Уважением DP.
 
#11
Да нет, я понимаю плюсы от технологии reference, просто мне пока аппаратное обеспечение не позволяет задумываться об анимации подобных структур. Дело в том, что особую выразительность таким структурам придают материалы со сложными совйствами - имитирующие мыльные пузыри (тонкие пленки вообще), сложные зеркальные поверхности и т.п., и хороший кадр считается сутками... И единственный замысел с такими системами, который я бы хотел воплотить в виде анимации - сцену, в которой папоротниковый лист (IFS), состоящий из зеленых прозрачных шариков разного размера, сначала находится под дождем, обрастает каплями воды (бесцветные шарики, также принадлежащие IFS, но ограниченные определенным интервалом шагов порождения), а потом от ветра эти капли сбрасывает, и дает преломленный блик от солнца. Самое смешное, что практически все элементарно описывается математически, но считаться будет более чем долго. 8)

Насчет renderman - мне никогда не приходилось общаться с этой программой, и к большому сожалению, нет достаточного времени на ее изучение. Я вот сейчас скачал VirtuaLight 1.2, как альтернативу Flamingo, хочу попробовать, что за фрукт...

За разъяснения по поводу установки всего этого "зоопарка" - спасибо. Думаю, действительно материалы данного обсуждения могут кому-то пригодиться.
 
Сверху