История изменений
Исправление KivApple, (текущая версия) :
У тебя есть матрица трансформации, которая из 3Д координат даёт тебе 2Д координаты. Можно найти обратную матрицу и с её помощью делать наоборот. Но нужно ещё достать глубину пикселя под курсором с помощью, например, glGetPixels. Так как чистые 2Д координаты дадут тебе 3Д луч, а не точку.
Ещё можно взять координаты камеры и вектор направления взгляда (у тебя должны быть эти данные, чтобы построить матрицу lookAt) и идти по этому лучу небольшими шажками по миру, пока не найдёшь уже имеющийся воксель, чтобы поставить новый рядом с ним.
В любому случае, чтобы из координат мыши получить 3Д, нужно найти на какой уже имеющийся объект в сцене смотрит юзер. Как в Майнкрафте нельзя поставить куб в пустоту, только сбоку от уже имеющегося куба. Это фундаментальное ограничение двумерного указателя мыши.
Рисовать в пустоте можно только другими способами ввода (например, прямым указанием 3Д координат цифрами, либо хотя бы третью координату заставить юзера явно указывать полем ввода или каким-нибудь ползунком).
Исправление KivApple, :
У тебя есть матрица трансформации, которая из 3Д координат даёт тебе 2Д координаты. Можно найти обратную матрицу и с её помощью делать наоборот. Но нужно ещё достать глубину пикселя под курсором с помощью, например, glGetPixels. Так как чистые 2Д координаты дадут тебе 3Д луч, а не точку.
Ещё можно взять координаты камеры и вектор направления взгляда (у тебя должны быть эти данные, чтобы построить матрицу lookAt) и идти по этому лучу небольшими шажками по миру, пока не найдёшь уже имеющийся воксель, чтобы поставить новый рядом с ним.
В любому случае, чтобы из координат мыши получить 3Д, нужно найти на какой уже имеющийся объект в сцене смотрит юзер. Как в Майнкрафте нельзя поставить куб в пустоту, только сбоку от уже имеющегося куба. Это фундаментальное ограничение двумерного указателя мыши.
Рисовать в пустоте можно только другими способами ввода (например, прямым указанием 3Д координат цифрами, либо хотя бы третью координату заставить юзера явно указывать).
Исправление KivApple, :
У тебя есть матрица трансформации, которая из 3Д координат даёт тебе 2Д координаты. Можно найти обратную матрицу и с её помощью делать наоборот. Но нужно ещё достать глубину пикселя под курсором с помощью, например, glGetPixels. Так как чистые 2Д координаты дадут тебе 3Д луч, а не точку.
Ещё можно взять координаты камеры и вектор направления взгляда (у тебя должны быть эти данные, чтобы построить матрицу lookAt) и идти по этому лучу небольшими шажками по миру, пока не найдёшь уже имеющийся воксель, чтобы поставить новый рядом с ним.
В любому случае, чтобы из координат мыши получить 3Д, нужно найти на какой уже имеющийся объект в сцене смотрит юзер. Как в Майнкрафте нельзя поставить куб в пустоту, только сбоку от уже имеющегося куба. Это фундаментальное ограничение двумерного указателя мыши.
Рисовать в пустоте можно только другими способами ввода (например, прямым указанием 3Д координат цифрами).
Исправление KivApple, :
У тебя есть матрица трансформации, которая из 3Д координат даёт тебе 2Д координаты. Можно найти обратную матрицу и с её помощью делать наоборот. Но нужно ещё достать глубину пикселя под курсором с помощью, например, glGetPixels. Так как чистые 2Д координаты дадут тебе 3Д луч, а не точку.
Ещё можно взять координаты камеры и вектор направления взгляда (у тебя должны быть эти данные, чтобы построить матрицу lookAt) и идти по этому лучу небольшими шажками по миру, пока не найдёшь уже имеющийся воксель, чтобы поставить новый рядом с ним.
В любому случае, чтобы из координат мыши получить 3Д, нужно найти на какой уже имеющийся объект в сцене смотрит юзер. Как в Майнкрафте нельзя поставить куб в пустоту, только сбоку от уже имеющегося куба. Это фундаментальное ограничение двумерного указателя мыши.
Исправление KivApple, :
У тебя есть матрица трансформации, которая из 3Д координат даёт тебе 2Д координаты. Можно найти обратную матрицу и с её помощью делать наоборот. Но нужно ещё достать глубину пикселя под курсором с помощью, например, glGetPixels. Так как чистые 2Д координаты дадут тебе 3Д луч, а не точку.
Ещё можно взять координаты камеры и вектор направления взгляда (у тебя должны быть эти данные, чтобы построить матрицу lookAt) и идти по этому лучу небольшими шажками по миру, пока не найдёшь уже имеющийся вексель, чтобы поставить новый рядом с ним.
В любому случае, чтобы из координат мыши получить 3Д, нужно найти на какой уже имеющийся объект в сцене смотрит юзер. Как в Майнкрафте нельзя поставить куб в пустоту, только сбоку от уже имеющегося куба. Это фундаментальное ограничение двумерного указателя мыши.
Исходная версия KivApple, :
У тебя есть матрица трансформации, которая из 3Д координат даёт тебе 2Д координаты. Можно найти обратную матрицу и с её помощью делать наоборот. Но нужно ещё достать глубину пикселя под курсором с помощью, например, glGetPixels. Так как чистые 2Д координаты дадут тебе 3Д луч, а не точку.