Все фреймы в варкрафте размещаются по экрану, т.е. по координатам окна. В рефорджете внесли возможность отслеживать координаты мыши, но выдают координаты положения мыши в карте, короче не то.
В рефордже я нашел пример с сеткой из фреймов Можно отслеживать как курсор проходит по фреймам. Но и минусы: перемещают рывками, при уменьшении шага сетки - игра зависает.
В рефордже я нашел пример с сеткой из фреймов Можно отслеживать как курсор проходит по фреймам. Но и минусы: перемещают рывками, при уменьшении шага сетки - игра зависает.
Мб проще конвертировать.
DGUI - в этой системе есть конверт из мировых координат в оконные координаты. Или наоборот, из оконных в мировые. Однако, я не знаю как применить, че то может код упростить чем мне такие матрицы. Тут как бы матрицы, пробую упростить - так тут индексы пусты матриц пусты.
Lua-wgeometry - эта 3D библиотека. Просто переписанная с DGUI. Аналогично как и с DGUI
DGUI - в этой системе есть конверт из мировых координат в оконные координаты. Или наоборот, из оконных в мировые. Однако, я не знаю как применить, че то может код упростить чем мне такие матрицы. Тут как бы матрицы, пробую упростить - так тут индексы пусты матриц пусты.
Lua-wgeometry - эта 3D библиотека. Просто переписанная с DGUI. Аналогично как и с DGUI
По этой теме понял, что ничего нет такого путного.
Можно получить упрощенный код конверта?
Можно получить упрощенный код конверта?
Есть ли нормальные конверт координат? Мне пока не понятны в
Принятый ответ
можно получить обзор/плоскость камеры?
у нас есть
у нас есть
//координаты камеры
x1 = GetCameraEyePositionX()
y1 = GetCameraEyePositionY()
z1 = GetCameraEyePositionZ()
координаты цели
//координаты центра обзора камеры
x2 = GetCameraTargetPositionX()
y2 = GetCameraTargetPositionY()
z2 = GetCameraTargetPositionZ()
смещение высоты камеры
ZOffset = GetCameraField(CAMERA_FIELD_ZOFFSET)
расстояние между камерой и целью
r = GetCameraField(CAMERA_FIELD_TARGET_DISTANCE)
обзоры камеры
//размеры экрана
real WidthScreen = 0.544
real HeightScreen = 0.302
//размеры границ камеры GetCameraBoundMaxX и GetCameraBoundMaxY равны 2816x2816
//размеры обзора камеры GetCameraBoundMaxX*WidthScreen и GetCameraBoundMaxY*HeightScreen равны 1531.904x850.432
CameraMaxX = GetCameraBoundMaxX()*WidthScreen
CameraMaxY = GetCameraBoundMaxY()*HeightScreen
Кроме того нужны 3 угла для плоскости:
//эти три параметра alpha, beta, gamma поворачиваются относительно дефольтных размеров
//надо проверять разницу, т.е. изменения с чем-то. А то смотрите угол 360, он возмет и перевернет. Потом выпадет опять 360, снова перевернет
local real alpha = ModuloReal((GetCameraField(CAMERA_FIELD_ROTATION)-bj_CAMERA_DEFAULT_ROTATION* bj_DEGTORAD), bj_PI*2)
//вращение камеры аокруг оси X относительно дефолтного размера
local real beta = ModuloReal((GetCameraField(CAMERA_FIELD_ROLL)-bj_CAMERA_DEFAULT_ROLL* bj_DEGTORAD), bj_PI*2)
//наклоны камеры вокруг оси Y относительного дефолтного размера
local real gamma = ModuloReal((GetCameraField(CAMERA_FIELD_ANGLE_OF_ATTACK)-bj_CAMERA_DEFAULT_AOA* bj_DEGTORAD), bj_PI*2)
как не пытаюсь сам понять, так и не получается. Не верна это, то что написал выше. Верно работает только для одной оси поворот. Шарнирный замок.
нашел ее информацию здесь матрицу не понимаю от чего берут.
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ред. MpW
-- Create a new vector from coords. Skip the coords to create a zero vector
new = function(self, x, y, z)
local o = {}
setmetatable(o,self)
o.x = x or 0.
o.y = y or 0.
o.z = z or 0.
return o
end,
Ред. MpW
у нас есть