Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.07.13;
Скачать: [xml.tar.bz2];

Вниз

Изменение камеры и т.д.   Найти похожие ветки 

 
MovieMaker   (2008-05-18 17:53) [0]

Вот что интересно. Возможно ли какимто боком "влезть" в игру и там поменять отдалить допустим камеру изменить угол  и т.д? Если там движек использует например Direct3D


 
Renegat   (2008-05-18 19:02) [1]

ДвижОк там может использовать хоть DX, хоть OGL, хоть даже GDI. Всё дело в том, что без реверсирования программы ты ниразу не поймёшь где что можно изменить, чтобы поуправлять двигом извне. Вывод: OllyDBG в руки и вперёд.


 
MovieMaker   (2008-05-19 01:26) [2]

че ток так??
Ведь вообще поидеи если игрушка 3D, то еслиб разработчик хотел мог крутить камеру у себя как хочет.
Как представляю себе это я. Камера передвигается ведь не просто так. А выполняется какаято функция типа MoveCam(x,y,z,angel1,angel2) или это както по другому делается? И можно перехватить эту функцию, сплайсингом там, и менять на что нам нада? или я совсем не так думаю?
Вот как это все устроено? в конечном ведь итоге за положение камеры отвечает "Драйвер"(хоть DX, хоть OGL, хоть даже GDI) и там гдето есть функция.. определяющая её положение?

Нужно это все для студии создания ВидеоРоликов к Играм.. еслиб можно было изменять положение камеры...цены бы этому не было. Далеко не в каждой топовой игре есть чето типа HLTV, хотя даже к ней придумали расширение для смещение камеры.


 
Германн ©   (2008-05-19 02:11) [3]


> MovieMaker   (19.05.08 01:26) [2]
>
> че ток так??
> Ведь вообще поидеи если игрушка 3D, то еслиб разработчик
> хотел мог крутить камеру у себя как хочет.

Разработчик явно говорил не на таком языке.


 
Renegat   (2008-05-19 09:14) [4]

> выполняется какаято функция типа MoveCam(x,y,z,angle1,angle2)

Так-то оно так. Только вот каким образом ты без полной отладки екзешника игры (и плюс её многокилометровых библиотек!) собираешься понять, где она расположена и каков формат её вызова?


 
МистерТ   (2008-05-19 12:42) [5]

"Драйвер"(хоть DX, хоть OGL) получает только одну команду, "установить матрицу трансформации". Причем функция одна и для перемещения объекта (персонаж, NPC и т.п.) и для камеры, различаются только параметры. Эти параметры задаются "движком" и не факт, что у него на камеру заведен отдельный класс или функция.


 
@!!ex ©   (2008-05-19 16:00) [6]

> [0] MovieMaker   (18.05.08 17:53)

Не подвигаешь камеру  из вне. Игру переписать проще, чем в машкодах найти устаноку камеры.


 
Sapersky   (2008-05-19 16:30) [7]

В принципе можно, перехватывая функцию установки видовой/проекционной матрицы (IDirect3DDevice.SetTransform). Пробовал делать таким образом "снайперский прицел" в любой игре - но выяснилось, что хотя картинка и приближается, управление оказывается слишком дискретным. Перехватывать ещё и DirectInput было совсем уж лениво - на этом всё и закончилось.

Опять же, при махинациях с камерой практически неизбежно начинают глючить механизмы игровых движков, непосредственно не связанные с API - расчёт видимой области, выбор LOD"ов для моделей и т.п. С какой-то конкретной игрой может и повезти - если она не хранит отдельно все матрицы, а при необходимости получает их через GetTransform. Но чаще, AFAIK, хранят отдельно.


 
Style ©   (2008-05-19 16:34) [8]


> MovieMaker   (18.05.08 17:53)


Читер чтоля?

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

А так в целом - брось ты эту затею, плохо это все - не честно )


 
@!!ex ©   (2008-05-19 16:35) [9]

> В принципе можно, перехватывая функцию установки видовой/проекционной
> матрицы (IDirect3DDevice.SetTransform).

У мну камера через мировую матрицу выставляется...
Так что не так то просто найти универсальное решение. да и для одной игры - тоже не просто.


 
MovieMaker   (2008-05-27 15:17) [10]

Серию видеороликов делать нада будет в скором времени для гонок типа NFS ну и там разных еще.
Sapersky а исходников не осталося?? оч...нада мб докручу чего..(


 
@!!ex ©   (2008-05-27 20:11) [11]

> [10] MovieMaker   (27.05.08 15:17)
> Серию видеороликов делать нада будет в скором времени для
> гонок типа NFS ну и там разных еще.

Круче и качественней будет сделать ролик в том же Максе или Блендере.


 
MovieMaker   (2008-05-29 02:49) [12]

Моделлеры наши делают и в Максе и в Майе... дело не в этом. КонтрСтрайк можно полностью все модели собрать сцену. А вот как с другими быть..


 
Sapersky   (2008-05-29 11:15) [13]

Делалось на основе примера к библиотеке madCodeHook, вроде бы HookDirect3D он назывался.
Но для создания роликов этот метод плохо подходит. Даже при относительно невинном подкручивании "фокусного расстояния" камеры в Ил-2 лезли неслабые артефакты, связанные (как уже говорилось в [7]) с тем, что игра не "чувствует" изменение параметров камеры. Положение/направление камеры с учётом [9], возможно, вообще не получится изменить.
ИМХО, лучше смотреть в сторону [не]официальных инструментов для модифицирования игры. Пресловутое "расширение для смещение камеры HLTV" наверняка с помощью таких инструментов сделано, а не перехватом API.


 
ds   (2008-05-29 11:17) [14]

перехватывать SetTransform не поможет. В любой более-менее современной игре используются шейдеры.


 
Renegat   (2008-05-29 11:29) [15]

Более того, из-за отсечения по пирамиде видимости, там куда мы "неофициальными методами" развернули камеру, может вообще ничего не отрисоваться :)


 
ds   (2008-05-29 11:53) [16]

Точно, об этом я не подумал)) View frustum, окклюдеры, порталы, и бог знает
какие технологии. Нет, если уж менять насильно, то только подменив сам код класса камеры. Или можно "насильно" перемещать персонажа. В любом случае не зная устройство всей системы может что-то выйти только в самых примитивных играх


 
Sapersky   (2008-05-29 12:11) [17]

перехватывать SetTransform не поможет. В любой более-менее современной игре используются шейдеры.

Да, это не учёл, т.к. вертексными шейдерами не занимался и думал, что матрицы им передаются через SetTransform.
Вообще перехватом при желании можно отключить нафиг все шейдеры и установить-таки нужные матрицы. Но что при этом останется от визуализации современной игры - страшно даже думать :)


 
@!!ex ©   (2008-05-29 18:36) [18]

> [14] ds   (29.05.08 11:17)
> перехватывать SetTransform не поможет. В любой более-менее
> современной игре используются шейдеры.

И как это связано?
ИМХо вы бредите.


> [17] Sapersky   (29.05.08 12:11)
> перехватывать SetTransform не поможет. В любой более-менее
> современной игре используются шейдеры.
>
> Да, это не учёл, т.к. вертексными шейдерами не занимался
> и думал, что матрицы им передаются через SetTransform.

Они и передаются. Что в GL что в DX. шейдер - это замена стандартного конвейера, и работает она как стандартный конвеер.
Да, можно нспиать шейдер, который будет стандартные матрицы игнорировать. Но я никогда в жизни не видел, чтобы так делали. Ибо это просто глупо и нафиг не надо.


 
Sapersky   (2008-06-02 16:32) [19]

Посмотрел примеры из DX SDK - в DX8 матрицы передаются через константные регистры (SetVertexShaderConstant), в DX9 через интерфейс эффектов, что-то вроде:
g_pEffect.SetMatrix("g_mWorldViewProjection", mWorldViewProjection);
Работает это, скорее всего, через те же SetVertexShaderConstant, т.к. имена не фиксированные, если их поменять в шейдере и программе - всё нормально работает. SetTransform в примерах либо вообще нет, либо есть, но можно безболезненно отключить. При попытке его перехватить - ошибка.
Опять же, в документации по DX8-шейдерам нет такого понятия, как "стандартные матрицы". Только константные (+временные, адресные) регистры, данные вершины, выходные регистры.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2008.07.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.011 c
2-1213459535
VovKul
2008-06-14 20:05
2008.07.13
Как узнать полный путь к выделенному файлу в ShellListView?


11-1172423656
Vladimir Kladov
2007-02-25 20:14
2008.07.13
Версия 2.54


2-1213347467
TForumHelp
2008-06-13 12:57
2008.07.13
Получение класса по его имени


15-1211962980
{RASkov}
2008-05-28 12:23
2008.07.13
defrag


2-1213098806
ciborg
2008-06-10 15:53
2008.07.13
TComboBox только для чтения





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский