Традиционно, когда вы хотите перемещать модель, вместо того, чтобы изменять каждую из вершин модели, вы изменяете матрицу мира.
Найдите эту строку в Primitives3DGame.cs:
Matrix world = Matrix.CreateFromYawPitchRoll(yaw, pitch, roll);
И измените его на что-то вроде этого:
Matrix world = Matrix.CreateFromYawPitchRoll(yaw, pitch, roll)
* Matrix.CreateTranslation(-3, 0, 0);
(И, конечно же, удалите внесенное вами изменение, как указано в вашем вопросе.)
Насколько я могу судить, твой код действительно работает.Но, возможно, вы ожидали, что куб будет вращаться, но останется на том же месте (что и делает приведенный выше код).То, что вы делаете, фактически совпадает с:
Matrix world = Matrix.CreateTranslation(-3, 0, 0)
* Matrix.CreateFromYawPitchRoll(yaw, pitch, roll);
Обратите внимание на обратный порядок - сначала выполняется перевод вашей модели, а затем , а затем , вращающийся вокруг начала координат.