Понадобился скрипт, удаляющий все полигоны в сцене, которые отвёрнуты нормалями от точки обзора. Для наглядности, набросал поясняющий скрин:
Единственное требование: скрипт должен быть максимально элементарный. Сцены будут тяжёлые, с достаточно большим числом полигонов. Хочется, чтобы не зависал надолго.
Заказывал тут уже скрипты Igorznag и Royal Ghost. Не знаю, активны ли ещё эти люди, поэтому не отписал в личку (скрипт нужен срочно). Но, если отпишутся в теме, наряду с другими - предпочтение этим товарищам.
Оплата: 2000 руб. Скину на карту (РФ), ЯД, Альфа, ВТБ.
pointOfView = $PointOfView.position
for obj in geometry do
(
convertToMesh obj
facesToDelete = #()
for f = 1 to obj.numfaces do
(
faceNormal = getFaceNormal obj f
faceVertices = getFace obj f
firstVertexPosition = getVert obj faceVertices[1]
viewVector = pointOfView - firstVertexPosition
if ((dot viewVector faceNormal) <= 0.0) then append facesToDelete f
)
meshop.deleteFaces obj facesToDelete
update obj
)
А как Вы запускали? Скрипт максимально простой. Без UI.
Первая строчка ([ICODE]pointOfView = $PointOfView.position[/ICODE]) выбирает в сцене «точку обзора» — объект с именем "PointOfView". Если объекта с таким именем в сцене нет, то, конечно, будет ошибка.
Сделайте объект с таким именем в сцене, или замените строчку в скрипте на
pointOfView = $.position
Тогда в качестве «точки обзора» будет использован любой объект, который вы выберете перед запуском скрипта.
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
nat79
Единственное требование: скрипт должен быть максимально элементарный. Сцены будут тяжёлые, с достаточно большим числом полигонов. Хочется, чтобы не зависал надолго.
Заказывал тут уже скрипты Igorznag и Royal Ghost. Не знаю, активны ли ещё эти люди, поэтому не отписал в личку (скрипт нужен срочно). Но, если отпишутся в теме, наряду с другими - предпочтение этим товарищам.
Оплата: 2000 руб. Скину на карту (РФ), ЯД, Альфа, ВТБ.
Royal Ghost
LastJedi
pointOfView = $PointOfView.position for obj in geometry do ( convertToMesh obj facesToDelete = #() for f = 1 to obj.numfaces do ( faceNormal = getFaceNormal obj f faceVertices = getFace obj f firstVertexPosition = getVert obj faceVertices[1] viewVector = pointOfView - firstVertexPosition if ((dot viewVector faceNormal) <= 0.0) then append facesToDelete f ) meshop.deleteFaces obj facesToDelete update obj )nat79
LastJedi, спасибо за участие.
LastJedi
К слову сказать, если сцены РЕАЛЬНО тяжёлые, то лучше сделать тоже на C++. Будет существенно быстрее.
nat79
upd. Royal Ghost сделал скрипт, доработал его, оплату получил. Вопрос снят.
LastJedi тоже большое спасибо!
LastJedi
Первая строчка ([ICODE]pointOfView = $PointOfView.position[/ICODE]) выбирает в сцене «точку обзора» — объект с именем "PointOfView". Если объекта с таким именем в сцене нет, то, конечно, будет ошибка.
Сделайте объект с таким именем в сцене, или замените строчку в скрипте на
Тогда в качестве «точки обзора» будет использован любой объект, который вы выберете перед запуском скрипта.