Воскресенье, 24 Ноября 2024, 16:32

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Космосим в Unity
RaterДата: Пятница, 23 Декабря 2016, 07:46 | Сообщение # 1
был не раз
Сейчас нет на сайте
Здравствуйте.

Подскажите принцип обхода ограничения размерности float для сцены при рисовании космоса?
И как одновременно показать, например вражеский корабль, который на расстоянии 10 км от игрока и планету которая занимает весь экран. Т.е. корабль на фоне планеты.
Скайбокс, мне кажется, не подходит т.к. планета должна освещаться с одной стороны и менять размер при приближении удалении.
Если изменить масштаб всего чтоб влезло во float, то как быть с передвижениями на небольшие расстояния?

Надеюсь понятно объяснил... blink

Спасибо.

Добавлено (23 декабря 2016, 07:46)
---------------------------------------------
Нет идей?

У меня такие мысли:
Храним глобальные координаты объектов в переменных типа Decimal.
В зависимости от скорости движения меняем масштаб мира - т.е. при высоких скоростях 1 ед. Unity = 10000м (примерная цифра) при снижении скорости масштаб меняем ближе к 1:1 (для оч. низкой скорости и остановки).
Яркие объекты масштабируем и располагаем на некой границе мира Юнити (т.е. с координатами ближе 200`000 ед. Unity).
Данный подход не решает вопрос об отображении оч. больших объектов вблизи. Например планета Земля это 12`000`000 м в диаметре. Мне кажется движок Unity офигеет от сферы такого диаметра. %)


Всем удачного игростроя!
Мой первый "игроблин"!


Сообщение отредактировал Rater - Четверг, 22 Декабря 2016, 21:02
RangerДата: Вторник, 27 Декабря 2016, 17:28 | Сообщение # 2
почти ветеран
Сейчас нет на сайте
Следующий вопрос, подозреваю, будет как натянуть hires текстуру на планету
Цитата Rater ()
12`000`000 м в диаметре.
:D

Цитата Rater ()
Скайбокс, мне кажется, не подходит т.к. планета должна освещаться с одной стороны и менять размер при приближении удалении.

планету на отдельный слой. показывать другой камерой.

Цитата Rater ()
Подскажите принцип обхода ограничения размерности float для сцены при рисовании космоса?

не хватает размерности? (можно отскейлить 1/1000 как решение например) Точно не хватает размерности ? можно делать свои вектора на float*float или double*double


RaterДата: Среда, 28 Декабря 2016, 21:49 | Сообщение # 3
был не раз
Сейчас нет на сайте
Цитата Ranger ()
планету на отдельный слой. показывать другой камерой.

Это как? Не могу понять принцип. Поможет ли для детального отображения близких и небольших объектов и очень больших, но расположенных дальше. (Т.е. корабль на фоне планеты.)?

PS Пока просто продумываю как такое можно реализовать.


Всем удачного игростроя!
Мой первый "игроблин"!
QstДата: Пятница, 13 Января 2017, 13:06 | Сообщение # 4
был не раз
Сейчас нет на сайте
т.е. надо что бы можно было подлететь к планете с расстояния 100000000000, где её видно точкой к расстоянию 100, где она занимает 100000 экранов?
если игра 2д, то разные спрайты для разных расстояний + шейдеры.
если игра 3д, то.. ну проверь всё-таки как юнити будет реагировать на очень большой объект, интересно даже) а если нет, то опять же можно сделать вторую камеру и там сферку увеличивать в размерах до определённого формата, потом менять на квад - когда планета очень близко, можно уже приравнять поверхность к плоскости.

но вообще, если тебе такое потребовалось, но мне кажется с геймдизайном что-то не то.
alexsilentДата: Пятница, 13 Января 2017, 18:16 | Сообщение # 5
почти ветеран
Сейчас нет на сайте
всё очень просто...
После перехода определённого удаления от центра, сдвинуть вообще все объекты мира на (координаты центра) минус (твоя позиция),
то есть герой или камера должна сместиться ровно в Vector3(0,0,0), а все вокруг объекты сдвинутся относительно перемещения героя на то же расстояние

только сдвиг должен быть моментальным, чтоб не было заметно, что мы что-то резко телепортировали,
это что касается графики, а просчитывать глобальные расстояния огромных объектов должен какой-то особый скрипт, который мерит всё либо секторами,
либо всё упрощается, то есть, к примеру 1 парсек в скрипте равен всего лишь 1.0, или больше или меньше, всё зависит от ваших амбициозных планов :D


Сообщение отредактировал alexsilent - Пятница, 13 Января 2017, 18:22
EchoITДата: Пятница, 13 Января 2017, 19:26 | Сообщение # 6
старожил
Сейчас нет на сайте
Цитата
Это как? Не могу понять принцип.

Тогда сомневаюсь, что вам стоит заниматься таким проектом в данный момент.

К слову, не думаю, что требуется 100% правдоподобность масштабов в данном случае. Если уменьшить планету в 10 раз относительно реального размера, обычный игрок всё равно не заметит разницы.


Долгожданный анонсик: State of War

Сообщение отредактировал EchoIT - Пятница, 13 Января 2017, 19:27
RangerДата: Суббота, 14 Января 2017, 10:04 | Сообщение # 7
почти ветеран
Сейчас нет на сайте
Цитата EchoIT ()
К слову, не думаю, что требуется 100% правдоподобность масштабов

Да.
При fov 60, чтобы планета заняла весь экран при d = 12 Mm, дистанция до нее составит 10.4Mm
Чтобы долететь до нее хотя бы за час потребуется скорость 3 км/c. Т.е космическую станцию размером с километр игрок пролетит за .3 сек.
А попасть на таких скоростях в небольшой кораблик вообще не будет никакой возможности.




Сообщение отредактировал Ranger - Суббота, 14 Января 2017, 10:04
RaterДата: Вторник, 17 Января 2017, 22:22 | Сообщение # 8
был не раз
Сейчас нет на сайте
Цитата Ranger ()
А попасть на таких скоростях в небольшой кораблик вообще не будет никакой возможности.

Хм. Попасть да трудно - а увидеть приближающийся/удаляющийся корабль...?
А если скорость маленькая - 0.1км/с и корабли по курсу друг за другом почти...
считать что корабль дальше 100 км уже не видно и не показывать пока ближе не прилетит?

PS Всем спасибо что обсуждаете. :-)


Всем удачного игростроя!
Мой первый "игроблин"!
alexsilentДата: Пятница, 20 Января 2017, 13:28 | Сообщение # 9
почти ветеран
Сейчас нет на сайте
К моему выше сказанному. Большие объекты должны быть маленького радиуса, НО они должны быть привязаны к позиции камеры.
И перемещаться и увеличиваться с помощью расчётного скрипта привязанного к каждой планете. Я не могу подсказать детали, ибо не люблю математику)
но даже маленькая планета, если будет привязана (не родительством, а скриптом, чтобы не изменять угол при изменении угла камеры) на небольшом расстоянии к камере, то будет казаться, что это что-то огромное и очень далеко.


Сообщение отредактировал alexsilent - Пятница, 20 Января 2017, 13:28
RaterДата: Вторник, 31 Января 2017, 20:47 | Сообщение # 10
был не раз
Сейчас нет на сайте
А вот меня посетила идея:
Использовать помимо position ещё и scale для отображения объектов.
Т.е. рисуем в 3D объекты 1:1 потом добавляем в юнити и при отдалении на некоторое расстояние начинаем Scale менять. С учётом того что мы знаем что реальный Scale = 1, то можно вычислить позицию относительно игрока. Интересно получится что-то таким методом или путаница будет?
cranky


Всем удачного игростроя!
Мой первый "игроблин"!


Сообщение отредактировал Rater - Вторник, 31 Января 2017, 20:48
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг