Страница 1 из 2

точность системы координат

СообщениеДобавлено: 24 мар 2010, 22:46
Kann
не кто случаем не в курсе как увеличить точность координат ? как оказалось вектора в юнити используют float и на больших расстояниях само сабой точности 8 бит не хватает... единственный выход как я вижу подправить вектора в самом движке дизасмом.... может кто лучше способ предложит ?

Re: точность системы координат

СообщениеДобавлено: 24 мар 2010, 23:51
DbIMok
Тип значения Single представляет 32-разрядное число с одинарной точностью в диапазоне от -3,402823e38 до +3,402823e38

видимо речь о 7 десятичных знаках. нужно думать, как в твоей конкретной ситуации обойти эту проблему.

Re: точность системы координат

СообщениеДобавлено: 24 мар 2010, 23:53
gnoblin
Нельзя бить пространство на сектора как-нить? :)

Re: точность системы координат

СообщениеДобавлено: 24 мар 2010, 23:56
Kann
угу, правильно 7 знаков после запятой, ентого мало..... бить на сектора, да не хотелось бы.....
вот видео, планета находится по центру координат, и даже при таком сравнительно небольшом удалении можно заметить что моделька кораблика начинает чуток прыгать....

Re: точность системы координат

СообщениеДобавлено: 25 мар 2010, 00:00
Caligo
Kann писал(а):угу, правильно 7 знаков после запятой, ентого мало..... бить на сектора, да не хотелось бы.....
вот видео, планета находится по центру координат, и даже при таком сравнительно небольшом удалении можно заметить что моделька кораблика начинает чуток прыгать....



Это некая модификация Инкома Т65?)


По сабжу:
Для движения ты юзаешь transform.Translate, если да то у меня такая же ерунда, (спишу на перегрузки))

Re: точность системы координат

СообщениеДобавлено: 25 мар 2010, 10:12
Paul Siberdt
Дело в накоплении погрешности при вычислениях с большим удалением от мирового нуля. Как решение - вычисления с векторами производить в мировом нуле, а уже после приращать им большое смещение в нужную позицию.

Re: точность системы координат

СообщениеДобавлено: 25 мар 2010, 11:40
Kann
не въехал.....
я для примера смещаю обычную сферу через transform.position.x само сабой position.x является Vector3, прибавляю ему смещение например так
Код: Выделить всё
var position:double;
FixedUpdate(){
position = position+ 10;
transform.position.x = position;
print(transform.position.x.ToString("F10"));
}

ну и через некоторое удаление от нулевых координат наблюдаем прыжки сферы
что здесь нужно считать в мировом нуле ?

Re: точность системы координат

СообщениеДобавлено: 25 мар 2010, 11:58
Paul Siberdt
Попробуйте так:
Код: Выделить всё
var position : Vector3;
var delta: Vector3 = Vector3(10,0,0);
FixedUpdate(){
position = transform.position;
transform.position = delta + position ;
}


а, возможно, будет хватать и:

Код: Выделить всё
var delta: Vector3 = Vector3(10,0,0);
FixedUpdate(){
transform.position += delta;
}


А, возможно, и не заработает :D

Re: точность системы координат

СообщениеДобавлено: 25 мар 2010, 12:05
Battle Angel Alita
А не проще ли уменьшить масштаб? Сделать радиус земли не 6000 киллометров, а 6?

Re: точность системы координат

СообщениеДобавлено: 25 мар 2010, 12:08
Paul Siberdt
Имелось в виду, желательно избегать рассчетов внутри длиннющего вектора.
Запоминайте позицию и дальше работайте со сравнительно короткими дирекшенами. Под конец, приращайте позицию.

На малом же масштабе очень сильно вылезут артефакты неточности физики. Но Ангел дело говорит. Можно разделить пространство на две части - планета будет считаться своей камерой в своем метровом масштабе, корабль - своей в своем. Останется верно скомпенсировать взаименое перемещение камер.

Re: точность системы координат

СообщениеДобавлено: 25 мар 2010, 12:11
Kann
один хрен....
тут по моему проблема все же в float и в том что тупо при больших значениях не хватает точности а именно знаков после запятой, так как объект смещенный например по Х начинает скакать только при смещении по Х координате, по Y и Z если они имеют небольшие значения не чего подобного не наблюдается,

с масштабом так же, проблема опять же в том что не хватает float чем меньше объект тем более точное позиционирование ему требуется

Re: точность системы координат

СообщениеДобавлено: 25 мар 2010, 12:16
Paul Siberdt
Я как-то ковырялся с несколькими камерами именно в условных полетах в звездной системе. Небесные тела у меня считались отдельно от корабля. Разница конечных размеров была колоссальная, но все работало в разумных масштабах.

Re: точность системы координат

СообщениеДобавлено: 25 мар 2010, 12:27
Kann
идею с камерами понел.... однако интересный финт ушами :D

Re: точность системы координат

СообщениеДобавлено: 25 мар 2010, 12:28
Paul Siberdt
Вот, гляньте... чертовски топорно написано и неюзерфрэндли реализовано, но тута главное идея.
Управление тупым осевым WASD, увеличьте скорость кубика в 1000 раз и сможете перемещаться между шариками. С единичной же скоростью относительно шариков, кубик практически неподвижен.

эээ.. надеюсь, все влезло в пак :D

Re: точность системы координат

СообщениеДобавлено: 25 мар 2010, 12:42
Kann
спасибо, посмотрел, такое я уже изобретал чуть раньше, но там у меня выползли какие то проблемы... по моему с компенсацией перемещения камер... но наверно придется вернутся к этому варианту....