yurickon Posted August 14, 2023 Posted August 14, 2023 Всем привет! Тема не новая, так что прошу прощения за повтор. Однако из той информации что есть, я так и не победил вот это: Естественно, предварительно создал маску Viewport Mask для рук а так же еще одну камеру, полностью повторяющую главную камеру, и в ней удалил всё лишнее кроме маски рук. А в главной камере удалил соответствующую маску. Используя этот пример, ничего не получилось: Viewport viewport; Texture texture; Camera camera; private void Init() { viewport = new Viewport(); texture = new Texture(); // create 512 x 512 render target texture.Create2D(512, 512, Texture.FORMAT_RGBA8, Texture.FORMAT_USAGE_RENDER); camera = new Camera(); } private void Update() { // saving current render state and clearing it RenderState.SaveState(); RenderState.ClearStates(); { viewport.RenderTexture2D(camera, texture); } RenderState.RestoreState(); } //--------------------------------------------------------------------------- По правильности применения скрипта есть вопросы. В примере камера создаётся из кода. У меня же уже настроенная и готовая к работе камера. Я использовал ее следующим образом: public Node Camera_hand; PlayerDummy pd; init() { pd = Camera_hand as PlayerDummy; } update() { RenderState.SaveState(); RenderState.ClearStates(); { viewport.RenderTexture2D(pd.Camera, texture); } RenderState.RestoreState(); } Подскажите, пожалуйста, как заставить это работать?) Всем спасибо за внимание!
silent Posted August 15, 2023 Posted August 15, 2023 А решение из сэмпла Weapon Clipping не подходит? https://developer.unigine.com/en/docs/2.17/sdk/demos/csharp_component_samples/weapon_clipping?rlang=cs How to submit a good bug report --- FTP server for test scenes and user uploads: ftp://files.unigine.com user: upload password: 6xYkd6vLYWjpW6SN
yurickon Posted August 15, 2023 Author Posted August 15, 2023 Добрый день, silent! Я ожидал этого вопроса). Судя по мануалу, у меня должно быть вот такое: У меня же вот такая грустная картинка: Я честно, пытался добраться до демо кода, но, видимо, что-то не уяснил... Подскажите как сюда добавить то что на первом скрине? Спасибо!
bmyagkov Posted August 15, 2023 Posted August 15, 2023 Добрый день! @Yurickon На прикрепленном изображении в SDK Browser выбрана устаревшая версия SDK для которой уже недоступна загрузка демо проектов. На данный момент актуальной версией является 2.17.0.1. Чтобы демонстрационные проекты стали доступны, необходимо скачать актуальную версию на вкладке "SDKs" и переключить "Default SDK" на 2.17.0.1 в меню, как показано на изображении ниже: Спасибо! 1
yurickon Posted August 16, 2023 Author Posted August 16, 2023 bmyagkov, приветствую! Все сделал как вы сказали, использовал скрипт из примера выше. Обрезка работает, но, немного снизился fps и получил вот это: Везде где можно включил маску оружия - и на камере и на солнце и в материалах. Масштаб 1. В чём может быть проблема? Спасибо!
moody_pooch Posted August 16, 2023 Posted August 16, 2023 Добрый день, Yurickon! Подскажите, пожалуйта, Вы меняли что-нибудь в скрипте? В самом скрипте из примера проблем быть не должно, у меня получилось успешно применить его на другом проекте. Вариант как на Вашем скриншоте удаётся воспроизвести, если отключить маску вьюпорта с оружием в ноде солнца. Не могли бы Вы, пожалуйста, скинуть сюда Viewport Mask со следующих нод: обеих камер, оружия (с вкладки Surface->Rendering и вкладки Surface Material->Base options) и солнца? Давайте, на всякий случай ещё раз перепроверим всё вместе :) Также на всякий случай скажу, что для удобства Вы можете сразу проверять отображение с определенной камеры прямо в редакторе, выбрав вид с нужной камеры вот здесь: 1
yurickon Posted August 16, 2023 Author Posted August 16, 2023 Приветствую, moody_pooch! Все что вы сказали я сделал. Код не модифицировал!) Итак, в качестве доказательств привожу следующее: 1. Вид из редактора камеры для рук - прекрасно работает! На этом всё заканчивается( 2. Главная камера: 3. Камера с руками (оружием): 4. Меш рук: 5. Материал рук: Вот как-то так. Правда к руке привязана дочерним объектом нода WorldTransformBone (с масштабом отличным от 1), а уже дочкой к ней наручные часы. Но я это все это отключал в иерархии без какого-либо прогресса... Спасибо за любую помощь!)
bmyagkov Posted August 16, 2023 Posted August 16, 2023 Добрый день! @Yurickon Может быть, у вас есть возможность в рамках нового проекта созданного в SDK Browser изолированно воспроизвести проблему и прислать нам архив? Это бы сильно помогло ускорить процесс поиска причины такого поведения. Загрузить проект можно на любой удобный для вас файлообменник или на наш собственный FTP-сервер, используя следующие учетные данные для входа: ftp://files.unigine.com пользователь: upload пароль: 6xYkd6vLYWjpW6SN Спасибо!
yurickon Posted August 16, 2023 Author Posted August 16, 2023 Приветствую, bmyagkov! Хорошо, создам чистый проект и реализую вырезку оружия по вашему скрипту. О результатах отпишусь уже завтра - сейчас в Сибири ночь уже, пора отдохнуть от программирования...
yurickon Posted August 17, 2023 Author Posted August 17, 2023 (edited) Итак, я продолжаю) Создал чистый проект, настроил маски, назначил ноды скрипту, создал материал оружия и... оно вообще пропало (даже нет чёрной тени как раньше в моём проекте). Загрузил архив чуть меньше 400 MB на свой яндекс диск. Ссылку прилагаю. https://disk.yandex.ru/d/ZOcRj9F8M8w4tg Но проблема видимо всё же у меня, так как почему-то не компилируются проекты из csharp_component_samples, в консоле куча абракадабры... Спасибо! Edited August 17, 2023 by Yurickon 1
moody_pooch Posted August 17, 2023 Posted August 17, 2023 Добрый день! Большое спасибо за архив! Могу объяснить, почему так произошл о. Вы добавили в параметры компоненты ноды, которые находятся в нод референсе (first_person_controller). Вероятнее всего, у Вас должна быть сейчас похожая картина: Это происходит из-за того, что у нод внутри нод референсов происходит перегенерация их ID: вследствие чего компонента не может найти необходимые ей ноды, не отображает их и высыпает в консоль кучу ошибок. Чтобы избежать такой ситуации, Вы можете либо распаковать содержимое нод референса и после этого уже добавлять камеры и оружие в компоненту, либо наоброт добавить компоненту внутрь нод референса, тогда свазя теряться не будет: Если последовать одной из инструкций выше, проблем с отображением быть не должно, все маски действительно настроены верно: Можете, пожалуйста, посмотреть и отправить, как у Вас в итоге отображается оружие после того, как поправить связь нод и компоненты? Спасибо!
yurickon Posted August 17, 2023 Author Posted August 17, 2023 Приветствую, moody_pooch! Да, всё верно, добавил скрипт в нодереференс и заработало! Как я это просмотрел... Но от этого не легче) В моём проекте изначально так и было сделано - компонент добавлен в нодереференс, ничего не теряется, а изображения по-прежнему нет(
moody_pooch Posted August 17, 2023 Posted August 17, 2023 А можете, пожалуйста, посмотреть, какое будет поведение, если в чистый проект вместо Box добавить Вашу нод рефку с руками и топором? 1
yurickon Posted August 17, 2023 Author Posted August 17, 2023 Эксперимент провёл. Перенёс руки в новый проект, что на яндекс-диске, там обрезка работает. В своём проекте, создал вытянутый кубик из редактора, всё ему назначил - черная текстура. Что-то видимо поломалось в моём проекте, хотя версия 2.17.0.1 недавно обновил. И еще заметил, что в консоли стало вот так. Раньше этого не было. Я просто убрал точку с запятой из кода что бы вызвать ошибку. Кстати в билде таже картина что и при запуске из редактора.. Будут ли какие-нибудь предложения уважаемые разработчики?)) Спасибо!
silent Posted August 18, 2023 Posted August 18, 2023 Чтобы не было кракозябр надо включить английский язык для dotnet. Сделать это можно несколькими способами: https://stackoverflow.com/questions/50217208/force-dotnet-cli-in-english-on-a-french-windows https://github.com/dotnet/msbuild/issues/1596 Самый простой это задать в переменную окружения DOTNET_CLI_UI_LANGUAGE значение en. How to submit a good bug report --- FTP server for test scenes and user uploads: ftp://files.unigine.com user: upload password: 6xYkd6vLYWjpW6SN
yurickon Posted August 18, 2023 Author Posted August 18, 2023 silent, Да, всё верно! Задал переменную, перезагрузил ПК и вуаля! Одну проблему решил... Спасибо!
yurickon Posted August 18, 2023 Author Posted August 18, 2023 Ну всё, разобрался с чёрным силуэтом рук)) Оказалось (это было давно и я уже успел забыть!) я отключал маской солнце что бы в подземелье не было световых артефактов... А когда выходишь из подземелья ставил маску равной 1, что включало нулевую битовую маску. Только сейчас я допёр, что если хочешь включить 0 и 1 маски, то надо писать следующий код: public Node sun; private LightWorld _lw; private void Init() { _lw = sun as LightWorld; } private void Update() { //if(какое-то условие...) _lw.ViewportMask = 3; //будут включены маски 0 и 1 //код ViewportMask можно увидеть в окне назначения битовых масок в самом верху } Вот так бывает) Правда у меня еще один вопрос: есть ли способ сделать тени на руках от объектов мира - домов, деревьев и т.д.? Я поигрался с масками, но видимо что-то недогоняю... Большое спасибо за помощь!
moody_pooch Posted August 21, 2023 Posted August 21, 2023 Добрый день! Хорошо, что удалось разобраться :) Чтобы получить тени от объектов мира на руках, можете в компоненте WeaponClipping в методе Update вместо команды: weaponViewport.RenderNode(weaponPlayer.Camera, weapon); воспользоваться следующей: weaponViewport.Render(weaponPlayer.Camera); Спасибо! 1
yurickon Posted August 22, 2023 Author Posted August 22, 2023 moody_pooch, приветствую! Спасибо! Всё отлично работает! Тему можно закрывать. Еще раз Большое спасибо всем разработчикам за такую поддержку!!! 1
Recommended Posts