2015-01-19 3 views
0

http://jsfiddle.net/eho5g2go/установки с большими значениями координат х/у/г

var offset=10000000; 
... 
camera.position.set(offset,offset,400); 
mesh.position.set(offset-300,offset,0); 
camera.lookAt(mesh.position); 
... 
animate(); 

Переменная «смещение», она используется, чтобы указать положение камеры и сетки. Если вы установите его значение 100000000, то получите странное поведение во время анимации И если вы установили 10000000, тогда все нормально

Почему так? Как можно указать положение объектов с координатами более 100000000, например?

+0

Не знаю .. можете ли вы использовать оператор modulo ('%'), чтобы вернуть его в границы? – Halcyon

+0

Я могу использовать его, но это усложнит структуру. Я надеюсь, что есть и другие варианты: – NiSSaN

ответ

0

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

При использовании арифметики с плавающей точкой компьютеры, как правило, не очень хороши при очень больших или очень малых числах.

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

См https://stackoverflow.com/a/26090323/868679 взаимосвязанного ответ

Edit: После прочтения http://www.songho.ca/opengl/gl_projectionmatrix.html#perspective можно было увидеть, что близкие и дальние значения, которые вы используете для вашей матрицы камеры проекции может влиять точность ошибок. Чтобы уменьшить ошибку, держите свои близкие и дальние значения как можно ближе.

+0

В моем случае значения далекого и близкого влияния на проблему. Все дело в больших значениях координат вершин. http://jsfiddle.net/eho5g2go/4/ http://jsfiddle.net/eho5g2go/5/ – NiSSaN

Смежные вопросы