| Космосим в Unity | 
|  | 
| 
| Rater | Дата: Пятница, 23 Декабря 2016, 07:46 | Сообщение # 1 |  | был не раз Сейчас нет на сайте | Здравствуйте. 
 Подскажите принцип обхода ограничения размерности float для сцены при рисовании космоса?
 И как одновременно показать, например вражеский корабль, который на расстоянии 10 км от игрока и планету которая занимает весь экран. Т.е. корабль на фоне планеты.
 Скайбокс, мне кажется, не подходит т.к. планета должна освещаться с одной стороны и менять размер при приближении удалении.
 Если изменить масштаб всего чтоб влезло во float, то как быть с передвижениями на небольшие расстояния?
 
 Надеюсь понятно объяснил...
  
 Спасибо.
 Добавлено (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 м в диаметре.  
 
 Цитата 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, или больше или меньше, всё зависит от ваших амбициозных планов
   
 
 Сообщение отредактировал 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, то можно вычислить позицию относительно игрока. Интересно получится что-то таким методом или путаница будет?
 
   
 Всем удачного игростроя!
 Мой первый "игроблин"!
 
 
 Сообщение отредактировал Rater - Вторник, 31 Января 2017, 20:48 |  |  |  |  |