Начало работы с Matrix3D (Silverlight)

Хорошо, я абсолютно ничего не знаю о 3D-проекции, но мне нужно найти способ проецировать изображения в Silverlight (<Matrix3D/>) на основе некоторых предопределенных переменных, которые у меня есть. Я перерыл множество примеров кода или очень простой набор статей «для дураков», но так и не нашел ничего, что имело бы хоть какой-то смысл. Даже великолепная Академия Хана оказалась для меня недостаточно простой. Камеры, поле зрения, повороты — мой мозг просто не может уложиться в эту ерунду.

Мне нужны следующие прогнозы:

  • Изометрический
  • Орфографический
  • Косой
  • Перспектива

Итак, у меня есть несколько переменных, таких как X, Y и иногда Z. Например, это -

Type: Orthographic
X:    70°
Y:    10°
Z:    20°

как-то превращает это -> normalв это -> ортографический и

Type: Isometric
X:    314.7°
Y:     35.4°
Z:    299.8°

в это -> isometric

У меня есть другая информация, например координаты места, где изображение появляется на холсте, его ширина/высота и т. д., если эта информация тоже полезна.

Кто-нибудь знает какие-либо ресурсы, которые могут объяснить это (пожалуйста, почистите Википедию - это не имеет для меня никакого смысла). Или вы знаете, как работают эти вычисления (.NET, без функций WPF 3D)?


person Todd Main    schedule 09.07.2010    source источник


Ответы (3)


На этом сайте есть довольно хорошее введение в выполнение матричных операций в .net: http://www.simple-talk.com/dotnet/.net-framework/building-a-simple-3d-engine-with-silverlight/

Кроме того, загляните в Википедию, чтобы узнать о поворотах матриц: http://en.wikipedia.org/wiki/Rotation_matrix

И вы никогда не ошибетесь, выбрав немного Петцольда: http://www.charlespetzold.com/blog/2009/07/Using-the-Matrix3DProjection-Class-in-Silverlight-3.html

Это также отличное введение в использование матриц для обработки линейных преобразований: http://polymathprogrammer.com/2008/09/01/cartesian-coordinates-and-transformation-matrices/

person NakedBrunch    schedule 09.07.2010
comment
Статья Petzold Matrix3D была именно тем, что я искал, отлично! - person Todd Main; 12.07.2010

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

  1. Любая книга по компьютерной графике
  2. 3D-программирование для Windows®: программирование трехмерной графики для Windows Presentation Foundation Чарльза Петцольда
  3. В худшем случае, если у вас нет времени, по крайней мере, прочитайте 3 главы Redbook opengl (Просто математика матриц преобразования).

Вы можете задаться вопросом, почему я прошу вас прочитать несколько огромных книг, в то время как вам нужно быстрое решение. На мой взгляд, программирование 3D-графики будет очень простым, если вы понимаете математику, стоящую за этим (это не сложно). Если нет, то вы потратите вдвое больше времени, пытаясь выяснить, почему ваша программа не делает то, что вам нужно.

person ferosekhanj    schedule 09.07.2010
comment
спасибо за рекомендации. я просмотрел красную книгу opengl, так как она есть в сети, и до сих пор мало что из этого вынес. Я поищу книгу Петцольда в книжном магазине позже сегодня и посмотрю, поможет ли это. я думаю, что мне не хватает здесь знания, что делать с деталями, которые у меня есть (ширина, высота, X, Y, Z). все, что я читал, касается реальных 3D-объектов, но, как вы видите, я имею дело только с 2D-изображениями. мне действительно просто нужно понять, с чего начать расчеты с использованием значений, которые у меня есть. - person Todd Main; 09.07.2010

Прочтите уроки здесь, чтобы получить потрясающие математические знания... http://chortle.ccsu.edu/vectorlessons/vectorIndex.html#01

person Muhammad Umer    schedule 06.03.2013