GLKit определяет местоположение касания

как я могу определить местоположение касания на объекте iphone GLKit 3d?

если это на объекте? и где?

у меня есть куб, который строится из треугольников, мне нужно знать на ощупь, даже если он был на объекте, и если да, то где

мой куб:

const Vertex Vertices[] = {
// Front - red
{{1, -1, 1}, {0.89, 0, 0, 1}, {1, 0}},
{{1, 1, 1}, {0.89, 0, 0, 1}, {1, 1}},
{{-1, 1, 1}, {0.89, 0, 0, 1}, {0, 1}},
{{-1, -1, 1}, {0.89, 0, 0, 1}, {0, 0}},
// Back - green
{{1, 1, -1}, {0, 0.92, 0, 1}, {0, 1}},
{{-1, -1, -1}, {0, 0.92, 0, 1}, {1, 0}},
{{1, -1, -1}, {0, 0.92, 0, 1}, {0, 0}},
{{-1, 1, -1}, {0, 0.92, 0, 1}, {1, 1}},
// Left - yellow
{{-1, -1, 1}, {1, 0.92, 0, 1}, {1, 0}}, 
{{-1, 1, 1}, {1, 0.92, 0, 1}, {1, 1}},
{{-1, 1, -1}, {1, 0.92, 0, 1}, {0, 1}},
{{-1, -1, -1}, {1, 0.92, 0, 1}, {0, 0}},
// Right - blue
{{1, -1, -1}, {0, 0, 0.89, 1}, {1, 0}},
{{1, 1, -1}, {0, 0, 0.89, 1}, {1, 1}},
{{1, 1, 1}, {0, 0, 0.89, 1}, {0, 1}},
{{1, -1, 1}, {0, 0, 0.89, 1}, {0, 0}},
// Top
{{1, 1, 1}, {0.35, 0.35, 0.35, 1}, {1, 0}},
{{1, 1, -1}, {0.35, 0.35, 0.35, 1}, {1, 1}},
{{-1, 1, -1},{0.35, 0.35, 0.35, 1}, {0, 1}},
{{-1, 1, 1}, {0.35, 0.35, 0.35, 1}, {0, 0}},
// Bottom
{{1, -1, -1}, {0.35, 0.35, 0.35, 1}, {1, 0}},
{{1, -1, 1}, {0.35, 0.35, 0.35, 1}, {1, 1}},
{{-1, -1, 1}, {0.35, 0.35, 0.35, 1}, {0, 1}}, 
{{-1, -1, -1}, {0.35, 0.35, 0.35, 1}, {0, 0}}

};

const GLubyte Indices[] = { // Спереди 0, 1, 2, 2, 3, 0, // Сзади 4, 6, 5, 4, 5, 7, // Слева 8, 9, 10, 10, 11, 8, // Правые 12, 13, 14, 14, 15, 12, // Верхние 16, 17, 18, 18, 19, 16, // Нижние 20, 21, 22, 22, 23, 20 };


person eti    schedule 11.09.2012    source источник


Ответы (1)


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

  2. Преобразуйте вершины куба в пространство для глаз (то же самое преобразование, которое вы используете при рендеринге).

  3. Проведите тест пересечения ray-box на преобразованном кубе.

person Minthos    schedule 28.11.2012