LINUX.ORG.RU

Нарисовать воксель по клику мыши в 3D пространстве.

 


0

1

Всем привет! Мне нужно нарисовать воксель (просто точку) по клику мыши в 3D пространстве. Все с нуля делаю, не Юнити и подобное. Хоть и пишу на OpenGL, но не предлагать как это сделать средствами OpenGL.



Последнее исправление: wadic2 (всего исправлений: 2)

нужно нарисовать воксель (просто точку) по клику мыши в 3D пространстве. Все с нуля делаю, не Юнити и подобное. Хоть и пишу на OpenGL, но не предлагать как это сделать средствами OpenGL.

мощно.

//сходи в «кено» чтоле.. в современных блокбастардах и не такое рисуют. в тридЭ-пространстве…

mrjaggers
()

У тебя есть матрица трансформации, которая из 3Д координат даёт тебе 2Д координаты. Можно найти обратную матрицу и с её помощью делать наоборот. Но нужно ещё достать глубину пикселя под курсором с помощью, например, glGetPixels. Так как чистые 2Д координаты дадут тебе 3Д луч, а не точку.

Ещё можно взять координаты камеры и вектор направления взгляда (у тебя должны быть эти данные, чтобы построить матрицу lookAt) и идти по этому лучу небольшими шажками по миру, пока не найдёшь уже имеющийся воксель, чтобы поставить новый рядом с ним.

В любому случае, чтобы из координат мыши получить 3Д, нужно найти на какой уже имеющийся объект в сцене смотрит юзер. Как в Майнкрафте нельзя поставить куб в пустоту, только сбоку от уже имеющегося куба. Это фундаментальное ограничение двумерного указателя мыши.

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

KivApple ★★★★★
()
Последнее исправление: KivApple (всего исправлений: 5)