Naruto Shippuden Ultimate Ninja 5
#21
Отправлено 23 April 2011 - 16:19
#22
Отправлено 23 April 2011 - 16:38
Там эл.ящик есть и даже телефон
Вообщем то в уже созданых страничках описания 3d формата можно тоже задавать вопросы, я его к примеру попросил помочь распаковать архив игры для PS2 он обещал попробовать.
Здесь смотрел? http://forum.xentax.com/viewtopic.php?f=16&t=6470&view=previous
#23
Отправлено 23 April 2011 - 16:54
Есть правда такая штука ps2 sdk
#24
Отправлено 23 April 2011 - 17:02
#25
Отправлено 23 April 2011 - 17:06
#26
Отправлено 23 April 2011 - 17:13
сейчас внимательно посмотрел, версия 3.0 , какая последняя я незнаю.
#27
Отправлено 23 April 2011 - 18:37
#28
Отправлено 24 April 2011 - 04:22
http://ifolder.ru/23147882
Можешь дать ссылку на сайт CRIWAREРезультат часа сравнения списка игр с сайта который вы дали и с сайта CRIWARE дал 1 совпадение, которое ни к чему толком не привело, типы моделей разные.
#30
Отправлено 25 April 2011 - 11:13
#31
Отправлено 25 April 2011 - 15:41
А нет, остался 1 выход, на сорцах от pcsx2 написать собственный эмулятор, который будет не эмулировать, а выдирать модели, о как загнул
#32
Отправлено 25 April 2011 - 21:56
Думал что риппер неправильно настроил, испытал на компьютерной игре все работает.
А ты уже попробовал написать на Ps23dformat?
Как я уже говорил этот скрипт хоть и загружет из модели только первый меш, но он получается нормальным.
-- .mdg import
chunk_id = 0x6c028000
chunk_end_id = 0x14000000
chunk_size = 0xcc
verts_count = 0;
ids_count = 0;
vertex_array = #()
face_array = #()
function skip file offset = fseek file offset #seek_cur
file_name = getOpenFileName \
caption:"Blade Kitten Model File" \
types:"Blade Kitten Model File(*.mdg)|*.mdg" \
historyCategory:"Blade KittenObjectPresets"
if file_name != undefined then
f = fopen file_name "rb"
if f != undefined then (
skip f 40
while ReadLong f #unsigned == chunk_id do (
verts_count = ReadLong f #unsigned
weight = ReadFloat f
skip f 32
for i = 1 to verts_count do (
x = ReadFloat f
y = ReadFloat f
z = ReadFloat f
append vertex_array [x, z, y]
)
ids_count = ids_count + verts_count
while ReadLong f #unsigned != chunk_end_id do ()
)
fclose f
for i = 2 to ids_count - 1 do (
append face_array [ i-1, i, i + 1 ]
)
new_mesh = mesh vertices:vertex_array faces:face_array
)
А этот скрипт загружет все меши, но модель получается не очень верной
-- .mdg import
chunk_id = 0x6c028000
chunk_end_id = 0x14000000
chunk_size = 0xcc
verts_count = 0;
ids_count = 0;
vertex_array = #()
face_array = #()
file_name = getOpenFileName \
caption:"Blade Kitten Model File" \
types:"Blade Kitten Model File(*.mdg)|*.mdg" \
historyCategory:"Blade KittenObjectPresets"
if file_name != undefined then
f = fopen file_name "rb"
if f != undefined then (
fseek f 0 #seek_end
size = ftell f
fseek f 40 #seek_set
while size > ftell f do (
while ReadLong f #unsigned == chunk_id do (
verts_count = ReadLong f #unsigned
weight = ReadFloat f
fseek f 32 #seek_cur
for i = 1 to verts_count do (
x = ReadFloat f
y = ReadFloat f
z = ReadFloat f
append vertex_array [x, z, y]
)
ids_count = ids_count + verts_count
while ReadLong f #unsigned != chunk_end_id do ()
)
if ids_count != 0 do (
for i = 1 to ids_count - 2 do
append face_array [ i , i + 1 , i + 2 ]
new_mesh = mesh vertices:vertex_array faces:face_array
ids_count = 0;
vertex_array = #()
face_array = #()
)
)
fclose f
)
Вопрос можно ли их так сказать совместить, что бы и меши все загружались и модель получалась не искаженной.
Сам пробывал написать на их основе скрипт, но то ошибка выскочит, то загружается что-то непонятное
#33
Отправлено 26 April 2011 - 13:25
эти переменные служат для определения начала и конца данных (именно их мне и нужно было вычислить для своих моделей, вот тут то я и бессилен, тут нужно владеть HEX редактором и орлиным глазом )
chunk_id = 0x6c028000
chunk_end_id = 0x14000000
chunk_size = 0xcc
это процесс описания и зануления переменных
verts_count = 0;
ids_count = 0;
vertex_array = #()
face_array = #()
описание функции пропуска (в 2 версии нет)
function skip file offset = fseek file offset #seek_cur
открытие окна выбора файла (заголовок диалогового окна, расширение файлов и т.д.)
file_name = getOpenFileName \
caption:"Blade Kitten Model File" \
types:"Blade Kitten Model File(*.mdg)|*.mdg" \
historyCategory:"Blade KittenObjectPresets"
привязка потока данных файлу переменной (в режиме чтения байтов, rb - read byte)
if file_name != undefined then f = fopen file_name "rb"
если фаил существует и не пустой
if f != undefined then
(
переводим указатель на конец файла и присваиваем это значение переменной size (определяем длину файла)
fseek f 0 #seek_end
size = ftell f
указатель на 40 байт
fseek f 40 #seek_set
пока не вышли за пределы файла
while size > ftell f do
(
находим указатель на начало блока
while ReadLong f #unsigned == chunk_id do
(
считываем количество вершин
verts_count = ReadLong f #unsigned
далее идет переменная, которую он назвал ширина... не используется
weight = ReadFloat f
пропуск 32 байта
fseek f 32 #seek_cur
пока не превысили количество вершин
for i = 1 to verts_count do
(
считываем их
x = ReadFloat f
y = ReadFloat f
z = ReadFloat f
и помещаем в массив будущих треугольников (если поменяешь местами y и z, модель уйдет под пол )
append vertex_array [x, z, y]
)
к количеству индексов прибавляем количество вершин
ids_count = ids_count + verts_count
если ещё не конец блока (тут он не дописал загрузку ещё чегото, вероятно там могут быть координаты текстур)
while ReadLong f #unsigned != chunk_end_id do ()
)
если индексов не 0
if ids_count != 0 do
(
задает нормали, которые равны i, i+1, i+2 (если честно убило )
for i = 1 to ids_count - 2 do append face_array [ i , i + 1 , i + 2 ]
рисуем поверхность
new_mesh = mesh vertices:vertex_array faces:face_array
зануляем переменные
ids_count = 0;
vertex_array = #()
face_array = #()
)
)
fclose f
)
P.S. вот все что могу сделать незнаю твоего формата, надеюсь эта справка тебе хоть немного поможет и я незря потратил час
А пока занимаюсь правкой эмулятора, как уже писал вчера
ЗЗЫ Это была не шутка
Сообщение отредактировал Taliadon: 26 April 2011 - 14:05
#34
Отправлено 26 April 2011 - 14:57
Он задавал вместо нормали переменную i, которая была равна от 1 до "кол-ва вершин"
К вопросу что есть нормаль, это знак перед координатой вершины, по ур-ию плоскости ax + by + cz + d, где a b c - нормали.
Следовательно чтобы получить нормаль надо координату вершины поделить на её модуль:
normx = x / |x|
результатом будет число -1, 1 или 0 если вершина в 0 точке (на 0 делить незя мы же помним ?)
по аналогии остальные 2 нормали дял треугольника
ЗЫ Это конечно если я правильно вспомнил =) но вроде нигде не ошибся)
Сообщение отредактировал Taliadon: 26 April 2011 - 14:58
#35
Отправлено 26 April 2011 - 18:24
Я ничего не понимаю в 3D-моделях, но хочу поправить: weight - вес, ширина - width.далее идет переменная, которую он назвал ширина... не используется
weight = ReadFloat f
P.S. Пользуйтесь кнопой "Изменить", для редактирования своих сообщений. Особенно если последнее сообщение в теме ваше, а новое состоит всего из одного предложения.
#36
Отправлено 27 April 2011 - 03:08
Я ничего не понимаю в 3D-моделях, но хочу поправить: weight - вес, ширина - width.
P.S. Пользуйтесь кнопой "Изменить", для редактирования своих сообщений. Особенно если последнее сообщение в теме ваше, а новое состоит всего из одного предложения.
Извините, но вроде бы эта тема ведется не с вами, так что не вам решать как я обозвал какуюто левую переменную, которая даже неиспользуется =)
#37
Отправлено 27 April 2011 - 22:18
Если это действительно не шутка. Тогда такой вопрос, с помощью таково измененого эмулятора можно будет риппать модели из любой игры с PS2 и насколько, на вскидку, будет качество моделей?P.S. вот все что могу сделать незнаю твоего формата, надеюсь эта справка тебе хоть немного поможет и я незря потратил час
А пока занимаюсь правкой эмулятора, как уже писал вчера
ЗЗЫ Это была не шутка
#38
Отправлено 28 April 2011 - 05:22
1) Этот форум для всех. Здесь просто нет тем, которые велись бы тет-а-тет. Каждый может влезть и написать своё никому ненужное мнение, если оно так или иначе относится к теме.Извините, но вроде бы эта тема ведется не с вами, так что не вам решать как я обозвал какуюто левую переменную, которая даже неиспользуется =)
2) Я хотел поправить, а не решал за вас, о чём и написал в предыдущем сообщении. Перечиайте его ещё раз, можно даже несколько раз, пока смысл не дойдёт. Если же вы считаете, что моя поправка неверна - аргументированно обоснуйте.
3) Эту левую пременную обозвали не вы, а такое имя она имела изначально в скрипте. Вы же использовали неправильный перевод слова (то ли в силу незнания языка, то ли в силу лени, которая помешала заглянуть в словарь или даже online-переводчик). Разница между весом и шириной при написании полноценного конвертера моделей, как мне кажется, есть и она весьма серьёзная. Но для кого-то, конечно, она значения не имеет.
Так что своё замечание считаю существенным, а ваш неадекватный ответ на него - нет.
Если же вы, сударь, хотите продолжить нашу дискуссию - добро пожаловать в подфорум "Базар".
[/offtopic]
#39
Отправлено 29 April 2011 - 13:24
Да вполне, модели будут рватся на уровне рендера. Тоесть именно то что ты видишь в эмуляторе, правда вес анимации будет немаленьким, ибо каждый кадр - отдельная модель.Если это действительно не шутка. Тогда такой вопрос, с помощью таково измененого эмулятора можно будет риппать модели из любой игры с PS2 и насколько, на вскидку, будет качество моделей?
#40
Отправлено 30 April 2011 - 11:57
Если твоя идея с "эмулятором-риппером" выгорит сможешь его выложить куда нибудь?