Добавлен , опубликован
Алгоритмы, Наработки и Способности
Способ реализации:
Jass
Тип:
Наработка
Как оказалось, в класической версии варкрафта, у камеры есть недокументированые поля, которые могут оказаться полезными для картоделов.

Ближняя плоскость отсечения

// Принимаются значения от 0 до 100. Изначально = 100.
constant camerafield CAMERA_FIELD_NEARZ = ConvertCameraField(7)
Отвечает за ближнюю плоскость отсечения.
Если установить в 0, то игра зависнет, так что следует быть осторожным.
Если ставить низкие значения, то игра начинает глючить и некоторые полигоны становятся прозрачными.

Позиция приемника звука

// Принимаются значения от 100 до 10000.
constant camerafield CAMERA_FIELD_LISTENER_DISTANCE = ConvertCameraField(8)
// Принимаются значения от 0 до 90.
constant camerafield CAMERA_FIELD_LISTENER_AOA = ConvertCameraField(9)
Если прочие поля управляют "глазами", то эти отвечают за позицию "ушей".
Значения зависят от текущего положения камеры и обновляются когда игра считает нужным.
Чем больше заданое расстояние, тем отдаленее будут звуки и наоборот.
При триггерном отдалении камеры, игра не корректирует позицию "ушей", из-за чего громкость звуков битвы остается прежней даже при значительном отдалении, но используя эти параметры можно вручную синхронизировать позицию камеры и "микрофона".
`
ОЖИДАНИЕ РЕКЛАМЫ...
7
Крутейшая фишка. Я даже не знаю, куда применю, наверни-ка поможет ребятам делающим кампании, где как раз таки делают синематики.
31
Настолько секретная, что её в рефе добавили?
/**
@patch 1.30.0.9655
*/
constant camerafield CAMERA_FIELD_NEARZ                 = ConvertCameraField(7)
Ответы (2)
7
Настолько секретная, что её в рефе добавили?
/**
@patch 1.30.0.9655
*/
constant camerafield CAMERA_FIELD_NEARZ                 = ConvertCameraField(7)
🤞
16
nazarpunk, то что её добавили в рефе не указывает на её наличие в 1.26a версии.
Также, похоже, что там удалили настройку слушателя и добавили еще каких-то полей.
constant camerafield CAMERA_FIELD_NEARZ       = ConvertCameraField(7)
constant camerafield CAMERA_FIELD_LOCAL_PITCH = ConvertCameraField(8)
constant camerafield CAMERA_FIELD_LOCAL_YAW   = ConvertCameraField(9)
constant camerafield CAMERA_FIELD_LOCAL_ROLL  = ConvertCameraField(10)
24
Чёт да, "секретность" NearZ это перебор.
На рефе значение задаётся в пределах от 16 до 9500
Загруженные файлы
Ответы (1)
16
Makeba, мне казалось очевидным, что ресурс касается лишь класической версии игры, но раз не все так считают, я решил добавить этот факт в описание.
13
Почему здесь не указано ,что это касается только рефордж? В классике нет такого поля как CAMERA_FIELD_NEARZ. В классике оно появилось только в UjAPI
Ответы (6)
16
ValdionWorld, потому, что это касается только классики. Поля не объявлены в common.j, но их можно добавить самому и затем использовать.
10
ValdionWorld, потому, что это касается только классики. Поля не объявлены в common.j, но их можно добавить самому и затем использовать.
Что то я не очень допёр как добится чтобы это работало в классике путем добавления в common.j? Есть инструкция для чайников ?
16
prizraknadache, зачем редактировать common.j? Просто объяви эти константы у себя в коде карты и используй.
10
prizraknadache, зачем редактировать common.j? Просто объяви эти константы у себя в коде карты и используй.
Кхм, а можно карту пример тогда?)
16
prizraknadache, ты на JASS'е умеешь кодить?
Объяви константы, скопировав себе в код следующие строчки:
globals
	constant camerafield CAMERA_FIELD_NEARZ = ConvertCameraField(7)
	constant camerafield CAMERA_FIELD_LISTENER_DISTANCE = ConvertCameraField(8)
	constant camerafield CAMERA_FIELD_LISTENER_AOA = ConvertCameraField(9)
endglobals
А потом когда будешь вызывать нативную функцию SetCameraField передай нужную константу:
call SetCameraField(CAMERA_FIELD_NEARZ, 15.0, 0.0)
10
IceFog, Да я так, чуть чуть разбираюсь. Но теперь понял дошло. Сработало. Интересная находка! Но я так понимаю это можно повлиять только на одну конкретную камеру? Тоесть в самой игре то ограничение всё равно стоит 100 по умолчанию... вот бы до этого параметра дотянутся, но наверное этим способом не получится. Дело в том, что я использую мало известную функцию которая проигрывает движение камеры из модели. Но даже выставив в модели параметр NearClip (NearZ) в данном случае на 1 или 8, или любое ниже 100, то ограничение 100 все равно стоит. Но если использовать обычные объекты камер то всё работает конечно...
Этот комментарий удален
Чтобы оставить комментарий, пожалуйста, войдите на сайт.