Войти
ПрограммированиеФорумГрафика

Камера внешнего вида в инвентори

#0
3:00, 9 ноя. 2019

Хочу засунуть в инвентори ортостатическую камеру внешнего вида персонажа. Т.е . камера всегда смотрит на персонажа спереди и рендерит в текстуру, которая отображается в инвентори. Всё окружение персонажа (ландшафт, предметы, скайбокс и т п) соответственно должно куллиться, для этого все персонажи суются в отдельный layer, и камера рендерит только его. И с этим не было бы проблем, если бы инвентори можно было открыть только у одного персонажа - проблема возникает, когда 2 персонажа стоят рядом: камера в инвентори рендерит их обоих. Быстрым гуглингом не нашел ответа, как сделать так, чтобы камера рендерила только одного персонажа. Совать каждого персонажа в отдельный слой - слоев не напасешься, может быть на форуме кто то знает решение?


#1
5:52, 9 ноя. 2019

Ортостатическую=ортографическую?
+ в таких случаях лучше уточнять используемые инструменты)
Для общего случая я бы предположил, что каждому персонажу присвоена своя модель. Почему бы не попытаться извлечь ее через экземпляр персонажа?

#2
10:31, 9 ноя. 2019

https://docs.unity3d.com/ScriptReference/Graphics.DrawMesh.html ?

#3
11:34, 9 ноя. 2019

Речь о каком движке?

#4
11:49, 9 ноя. 2019

Llevellyn
в Godot есть visualLayer уровни где отмечаешь галочкой
тоесть в Godot достаточно отметить первого персонажа и все вокруг в Layer 1 и 2
и отметить второго персонажа только в Layer 1
и рендерить по камерам, главная камера рендерит Layer 1 где видно все
камера инвентаря Layer2 где не видно второго персонажа

#5
12:47, 9 ноя. 2019

Если движок позволяет, то попробуй сделать отдельную сцену для отображения персонажа в инвентори.

#6
(Правка: 13:23) 13:22, 9 ноя. 2019

Llevellyn
> проблема возникает, когда 2 персонажа стоят рядом: камера в инвентори рендерит
> их обоих.

Это давно известная в теоретической графике проблема (дилемма Бойля-Мориа) - просто накрываете второго персонажа черным боксом. В Юнити наверняка есть такой ассет.

А если у вас персонаж драться в этот момент будет? Или под углом в 45 градусов к земле стоять? Всё это будете рендерить? Или ещё отдельный анимационный слой? И тени от других объектов куда-то пропадут сразу?
У вас каша какая-то в голове. Никто за вас вам её не расхлебает.

#7
13:24, 9 ноя. 2019

NyakNyakProduction
> дилемма Бойля-Мориа
ЧО?

#8
(Правка: 19:21) 19:17, 9 ноя. 2019

Kaylent
> Ортостатическую=ортографическую?
> + в таких случаях лучше уточнять используемые инструменты)
да, имелась в виду ортографическая камера в юнити
Dimich, т е нарисовать где то за пределами игровой карты дубликат мешей персонажей и смотреть камерой в инвентори на них? Предвижу тут проблему с тенями - они будут не такие, как на оригинале персонажа

@!!ex
>Речь о каком движке?
юнити

NyakNyakProduction
> А если у вас персонаж драться в этот момент будет? Или под углом в 45 градусов
> к земле стоять? Всё это будете рендерить?
да, в чем проблема то?

NyakNyakProduction
> И тени от других объектов куда-то пропадут сразу?
не пропадут

#9
20:30, 9 ноя. 2019

Llevellyn
> т е нарисовать где то за пределами игровой карты дубликат мешей персонажей и
> смотреть камерой в инвентори на них? Предвижу тут проблему с тенями - они будут
> не такие, как на оригинале персонажа
Какие тени тебе нужны? Самозатенение? Там же есть параметры теней и light probes в функции.

#10
23:47, 9 ноя. 2019

Dimich, попробовал ваш вариант, но непонятно откуда брать меш для функции DrawMesh. У SkinnedMeshRenderer'а есть только sharedMesh, а мне нужен актуальный на данный момент (т е подверженный анимации).

В общем нашел я обходной путь - при старте сцены все персонажи находятся в дефолтном слое, а при выборе персонажа кидаю скриптом все его шмотки в отдельный слой (камера в инвентори рендерит только его), при выборе другого персонажа шмотки первого кидаются обратно в дефолтный слой и т. д.
Кто-нибудь в курсе, смена слоев у объектов по скрипту это ресурсозатратно или нет (предполагается что шмоток будет довольно много)?

#11
2:43, 11 ноя. 2019

Лучше сразу абстрагировать кастомизацию от остального функционала касательно персонажей, типа контроллера или аниматора.  За пределами карты (а лучше в отдельном слое со своим освещением) рендерить в текстуру инстанс персонажа, на котором висят только лишь скрипты отвечающие за кастомизацию.

#12
17:19, 11 ноя. 2019

что такое инвентори?

#13
20:45, 11 ноя. 2019

V0odo0, мне кажется что будет лучше, если показывать в инвентори, что персонаж делает в данный момент. Хотя может я и не прав

ПрограммированиеФорумГрафика