C# XSLT преобразовывает добавление 
 и 
 к выводу

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

Более конкретно: представьте себе, что вы управляете камерой от первого лица. Посмотрите вниз, затем поверните налево и направо. Ваш взгляд будет двигаться совсем иначе, чем если бы вы поворачивались, глядя прямо перед собой. Однако ваши расчеты ведут себя так, как будто камера будет вести себя одинаково.

Каждый тик вы умножаете view справа на матрицу рыскания, затем на матрицу основного тона. Это означает, что через некоторое время ваша матрица вида станет чередующимся произведением множества матриц высоты и рыскания. Однако матрицы высоты тона и рыскания не коммутируют. На самом деле вы хотите, чтобы все матрицы высоты звука были слева от всех матриц рыскания (или справа, в зависимости от того, позволяете ли вы матрице вида работать слева или справа, и от того, представляет ли ваша матрица вид для представления). -глобальное или глобальное преобразование для просмотра).

Так что быстрым решением этой проблемы было бы написать view = yrot @ view @ xrot. Таким образом, все ваши y-повороты заканчиваются слева от ваших x-поворотов, и все будет хорошо. Ну, по крайней мере, какое-то время, но тогда ваша матрица представления может в конечном итоге накапливать ошибки округления, и представление может стать свернутым или искаженным или хуже.

Я рекомендую, чтобы вы вообще не использовали матрицу просмотра . Вместо этого просто сохраните текущую высоту тона и рыскания игрока, обновляя его при движении мыши, а затем каждый раз пересчитывайте матрицу вида непосредственно из высоты тона и рыскания. Таким образом, вы также можете использовать тангаж и рыскание другими способами (например, вы захотите ограничить высоту звука до определенного диапазона, чтобы ваш игрок не делал стойки на руках или сальто), и вы также не будете накапливать ошибки в своей матрице. [ 117]

19
задан luiges90 30 November 2012 в 08:37
поделиться

2 ответа

& # xD; & # xA; - это символы возврата каретки и перевода строки в вашем XML или XSLT. Убедитесь, что xml похож на

<Value>3</Value>

, а не на

<Value>
    3
</Value>

. Я считаю, что есть способ остановить использование пробелов в вашем преобразовании, хотя я не знаю об этом изначально.

28
ответ дан 30 November 2019 в 03:12
поделиться

Вы получаете пробелы из исходного документа. Используйте

style="width:{normalize-space(Data/PercentSpaceUsed)}%;"

, чтобы убрать пробелы. Другой вариант в вашем случае - использовать

style="width:{number(Data/PercentSpaceUsed)}%;"
11
ответ дан 30 November 2019 в 03:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: