2013-05-08 4 views
1

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

Я четко понимаю, как создать модель в 3ds max и загрузить ее в программу XNA (например), мне нужно, чтобы вы могли выбрать точку на модели в приложении 3ds MAX, а затем способный проследить ее место в мировом пространстве в моем приложении XNA в любой момент времени.

Почему? Мне нужно, чтобы он проследил, где дужка игрока-пистолета должна создать эффект мордочки в нужном месте, когда игрок стреляет.

Буду признателен за любую помощь, спасибо.

ответ

1

Ну, в XNA проблема решена довольно легко путем копирования костных преобразований точки. Нужно просто установить точку как ModelMesh в 3D-инструменте создания. E. g. в 3ds MAX он устанавливается, как отдельный элемент сцены. Затем в движке вы можете получить доступ к ModelMesh по свойству .Name и получить его позицию, выполнив Model.CopyAbsoluteBoneTransformsTo(). Есть еще несколько шагов, но если вы будете искать CopyAbsoluteBoneTransformsTo, вы найдете все, что вам нужно.

Вот статья Stack Overfrol, которые помогли мне:

Position of a modelmesh in XNA

0

Обычно вы используете в своем приложении Scene Graph для управления объектами и их трансформационными отношениями. 3DS Max также использует граф сцены, и ваш экспортер и формат файла экспорта должны позаботиться об этом.

Оттуда вы можете прикрепить пустой узел (фиктивный объект и т. Д.) В нужную позицию в 3ds max и экспортировать его в приложение. Предположим, что ваш график сцены работает, вы можете получить мировые космические координаты пустого узла или прикрепить (как дети) другие объекты, такие как дульная вспышка.

+0

Не могли бы вы предложить какую-либо статью о реализации сюжетный-графа в XNA 4.0? Кажется, я ничего не могу найти по этой теме. Насколько я понял, мне особенно нужно иметь возможность импортировать график 3ds MAX в мой движок, чтобы иметь возможность разделить работу между кодером и художником (указать точку в программном обеспечении для моделирования и прочитать ее в моей игре) , это правильно? – cubrman

+0

Все еще я сомневаюсь, что это должно быть так сложно. Графы сцены существуют по целому ряду причин, но для моей крошечной игры это может быть излишним. Я скоро углубится в моделирование, и я чувствую, что это должно быть реалистично, давая название определенной части сетки. Я видел это в одной анимационной библиотеке, они привязывали модель к точке на анимированной модели, просто переходя к определенному узлу последнего, используя свое имя. – cubrman

0

Другое Решение, не связанное с графиком сцены, определяет положение из положений вершин или лицевой позиции сетки (субместа).

Это, однако, может быть довольно сложным, так как я не уверен, соответствуют ли VertexID или FaceID 3ds max экспортированным идентификаторам.

Если вы модель статична, вы можете использовать это picking example, чтобы определить лицо и выбранное положение на лице (речь о барицентрических координатах) внутри XNA.

Теперь вы можете записать свой идентификатор лица, а затем вы сможете использовать трансформацию модели, чтобы в любой момент вычислить позицию выбранной точки в мировом пространстве.