3DCenter.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Reply to this topicStart new topic
> VEX Исполнение кода в каждой точке
VUX
сообщение 02/02/2014, 14:31
Сообщение #1


Мастер
Иконка группы

Группа: Пользователи
Сообщений: 1 068
Регистрация: 17/04/2007
Из: отТуда
Пользователь №: 47 967



В VEX только вникаю и не могу спалить один момент.
Ясно что VEX код испольняется для каждой точки (например Wrangle Point SOP) каждый раз.
Но, например в коде перед, непосредственно, добавлением значения точке ( @P += @P1 ) мне нужно узнавать баунды (bbox) объектов со входов и все ето в разветвленнх условиях.
Вопрос: Для каждой точки весь код будет исполнятся каждый раз или есть какието нюансы?
Может лучшее одноразовые операции выносить в spare параметры c обычными гудиньскими выражениями ( bbox(" ... ) ?
По замерам вычисления баундов и чтения всяких каналов не влияет (перед установлением самой точки) не влияют на скорость.
Проясните...

Сообщение отредактировал VUX - 02/02/2014, 14:32
Go to the top of the page
 
+Quote Post
Evgen
сообщение 02/02/2014, 14:39
Сообщение #2


VFX-artist
Иконка группы

Группа: Пользователи
Сообщений: 2 721
Регистрация: 31/07/2002
Пользователь №: 488



Баунды со входов стопудов лучше узнавать экспрешенами, а в вранглере просто собирать значения с параметров
vector bb=chv("bbox");
Это проще, быстрее и удобнее.
Go to the top of the page
 
+Quote Post
VUX
сообщение 02/02/2014, 14:47
Сообщение #3


Мастер
Иконка группы

Группа: Пользователи
Сообщений: 1 068
Регистрация: 17/04/2007
Из: отТуда
Пользователь №: 47 967



Цитата(Evgen @ 02/02/2014, 14:39) *
Баунды со входов стопудов лучше узнавать экспрешенами, а в вранглере просто собирать значения с параметров
vector bb=chv("bbox");
Это проще, быстрее и удобнее.


А как нащет множественных if-ов со множественными проверками параметров (ch("")) в коде. Сильно оно влияет на скорость? Или тоже лучше в spare-ах вычислять?
На одфорсе говорили что если много spare параметров в wrangle ноде то сорость ниже чем собранный аналогичный VOP-нетворк. huh.gif

Сообщение отредактировал VUX - 02/02/2014, 14:49
Go to the top of the page
 
+Quote Post
VUX
сообщение 02/02/2014, 14:58
Сообщение #4


Мастер
Иконка группы

Группа: Пользователи
Сообщений: 1 068
Регистрация: 17/04/2007
Из: отТуда
Пользователь №: 47 967



Цитата(Evgen @ 02/02/2014, 14:39) *
vector bb=chv("bbox");

может ветаки все присвоения переменным значений из каналов исполняется только раз на кадр? вот этот момент я не могу уловить )
Go to the top of the page
 
+Quote Post
Evgen
сообщение 02/02/2014, 15:22
Сообщение #5


VFX-artist
Иконка группы

Группа: Пользователи
Сообщений: 2 721
Регистрация: 31/07/2002
Пользователь №: 488



Есть возможность исполнять код один раз. Это очень просто.
Attrib Wrangle -> details
Тогда код исполняется один раз только.
Правда в случае пробега по точкам нужно будет писать цикл внутри. но это очень просто, а главное, контроль полный.
А вообще код во вранглерах исполняется по скорости чуть ли не также как нативный с++

Сообщение отредактировал Evgen - 02/02/2014, 15:23
Go to the top of the page
 
+Quote Post
VUX
сообщение 02/02/2014, 15:24
Сообщение #6


Мастер
Иконка группы

Группа: Пользователи
Сообщений: 1 068
Регистрация: 17/04/2007
Из: отТуда
Пользователь №: 47 967



Цитата
А вообще код во вранглерах исполняется по скорости чуть ли не также как нативный с++


Вот поэтому я решил перевести все опрации (по трансформу пока) на врангл. На тяжелой геометрии скорость поражает

Сообщение отредактировал VUX - 02/02/2014, 15:32
Go to the top of the page
 
+Quote Post
Evgen
сообщение 02/02/2014, 15:40
Сообщение #7


VFX-artist
Иконка группы

Группа: Пользователи
Сообщений: 2 721
Регистрация: 31/07/2002
Пользователь №: 488



Правильное решение.
3-5 строчек кода экономят тонны времени на элементарных задачах
Go to the top of the page
 
+Quote Post
VUX
сообщение 02/02/2014, 16:17
Сообщение #8


Мастер
Иконка группы

Группа: Пользователи
Сообщений: 1 068
Регистрация: 17/04/2007
Из: отТуда
Пользователь №: 47 967



Цитата(Evgen @ 02/02/2014, 16:40) *
Правильное решение.
3-5 строчек кода экономят тонны времени на элементарных задачах


Получается обычные експешены теряют актуальность для тех кому скорость кука очень важна. Можна ведь в аттриб врангл делать все тоже.
Скорость векса всеравно выше чем у обычных експрешенов.

ПС говорят что настоящие дядьки все через векс делают wink.gif

Сообщение отредактировал VUX - 02/02/2014, 16:27
Go to the top of the page
 
+Quote Post
VUX
сообщение 02/02/2014, 21:07
Сообщение #9


Мастер
Иконка группы

Группа: Пользователи
Сообщений: 1 068
Регистрация: 17/04/2007
Из: отТуда
Пользователь №: 47 967



Походу выяснилось что обработка поинтов циклом в AttribWrangle SOP (details) быстрее ohmy.gif чем в PointWrangle SOP.
Вот такой код в AttribWrangle SOP работает в ~2 раза быстрее:
Код
for( int i=0; i<npoints(0); i++ )
setpointattrib( 0, "P", i, point(0,"P",i)+{0,1,0} );

чем в PointWrangle SOP:
Код
@P += {0,1,0};

по крайней мере у меня с шариком в 1.8 млн. треугольников.
Как так ?
Go to the top of the page
 
+Quote Post
Evgen
сообщение 02/02/2014, 21:49
Сообщение #10


VFX-artist
Иконка группы

Группа: Пользователи
Сообщений: 2 721
Регистрация: 31/07/2002
Пользователь №: 488



Вполне может быть. не проверял. Мож гляну на досуге
Go to the top of the page
 
+Quote Post
Zipper
сообщение 02/02/2014, 21:54
Сообщение #11


Эксперт
Иконка группы

Группа: Модераторы
Сообщений: 747
Регистрация: 16/02/2006
Из: Питер
Пользователь №: 23 393



Цитата(VUX @ 02/02/2014, 22:07) *
Походу выяснилось что обработка поинтов циклом в AttribWrangle SOP (details) быстрее ohmy.gif чем в PointWrangle SOP.
Вот такой код в AttribWrangle SOP работает в ~2 раза быстрее:
Код
for( int i=0; i<npoints(0); i++ )
setpointattrib( 0, "P", i, point(0,"P",i)+{0,1,0} );

чем в PointWrangle SOP:
Код
@P += {0,1,0};

по крайней мере у меня с шариком в 1.8 млн. треугольников.
Как так ?


А ты как скорость замерял? Субъективно или цифры? MMB на вранглерах врёт, нужно внуть прыгать, смотреть на VOP. happy.gif
А вообще конечно интересный результат, я не делал тестов, хз, может и правда. Но как-то это подозрительно....
Go to the top of the page
 
+Quote Post
VUX
сообщение 02/02/2014, 22:15
Сообщение #12


Мастер
Иконка группы

Группа: Пользователи
Сообщений: 1 068
Регистрация: 17/04/2007
Из: отТуда
Пользователь №: 47 967



Цитата
MMB на вранглерах врёт, нужно внуть прыгать, смотреть на VOP

не подумал - действительно если измерять изнутри то PointWrangle быстрее smile.gif
Go to the top of the page
 
+Quote Post
VUX
сообщение 02/02/2014, 22:25
Сообщение #13


Мастер
Иконка группы

Группа: Пользователи
Сообщений: 1 068
Регистрация: 17/04/2007
Из: отТуда
Пользователь №: 47 967



Цитата(VUX @ 02/02/2014, 23:15) *
Цитата
MMB на вранглерах врёт, нужно внуть прыгать, смотреть на VOP

не подумал - действительно если измерять изнутри то PointWrangle быстрее smile.gif


Теперь у меня получается что и Transform нода нифига не медленне чем PointWrangle sad.gif
Go to the top of the page
 
+Quote Post
Zipper
сообщение 02/02/2014, 22:39
Сообщение #14


Эксперт
Иконка группы

Группа: Модераторы
Сообщений: 747
Регистрация: 16/02/2006
Из: Питер
Пользователь №: 23 393



Цитата(VUX @ 02/02/2014, 23:25) *
Цитата(VUX @ 02/02/2014, 23:15) *
Цитата
MMB на вранглерах врёт, нужно внуть прыгать, смотреть на VOP

не подумал - действительно если измерять изнутри то PointWrangle быстрее smile.gif


Теперь у меня получается что и Transform нода нифига не медленне чем PointWrangle sad.gif


biggrin.gif

Я тут тоже недавно удивился.. Раньше чтобы создать аттрибут на миллионе поинтов, делали это в vopsop, ибо attrib create sop был медленный. А теперь он быстрее чем vopsop создает аттрибут. Ну естесственно при условии что без экспрешенов, чисто константа ))
Go to the top of the page
 
+Quote Post
Bots
сообщение Системное сообщение






Fast ReplyReply to this topicStart new topic

1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 25/08/2019 - 05:45