Ninja Ripper

Вопросы касающиеся рипа игр при помощи Ninja Ripper, открытии .rip файлов в различных программах и исправлении рипнутых текстур
Сообщение
Автор
lafugix
Прохожий
Прохожий
Сообщения: 21
Зарегистрирован: 26 окт 2012, 11:05
Благодарил (а): 0
Поблагодарили: 0

Re: Ninja Ripper

#571 Сообщение lafugix »

Nightwing, если интересуют сами модели персонажей, а не возможность/невозможность их рипать - http://facepunch.com/showthread.php?t=1215110

Аватара пользователя
Tosyk
Администратор
Сообщения: 1880
Зарегистрирован: 24 авг 2011, 03:11
Благодарил (а): 64 раза
Поблагодарили: 61 раз

Re: Ninja Ripper

#572 Сообщение Tosyk »

там не написано как он рипал? похоже в XP рипал, там 10 директа нет
При копировании материалов сайта ссылка на этот ресурс обязательна.
When copying materials from this site link to this resource is required.

Аватара пользователя
Kirov
Мега-Ветеран
Мега-Ветеран
Сообщения: 1228
Зарегистрирован: 04 янв 2012, 16:29
Благодарил (а): 33 раза
Поблагодарили: 58 раз

Re: Ninja Ripper

#573 Сообщение Kirov »

Tosyk писал(а):там не написано как он рипал? похоже в XP рипал, там 10 директа нет
Он уже писал, что не рипал. Модели доставал как описано в соответствующей здесь теме (хотя у меня сей метод не работает), а текстуры рипал из редактора карт, который на DX. Сама игра на Open AL.

Wlastas
Прохожий
Прохожий
Сообщения: 3
Зарегистрирован: 11 дек 2012, 05:17
Благодарил (а): 0
Поблагодарили: 0

Re: Ninja Ripper

#574 Сообщение Wlastas »

Доброго времени суток
Еще раз хочу поблагодарить создателя программы за столь крутой инструмент.
Возвращаясь к теме импорта из Dyablo3 (моя запись на 56стр, к сожалению не понял как туда сделать линк), упаковка оказалась довольно простой - 4 и 12 байты, как я и думал, являются флагом, в даннонм случае 128 - значения до 0,5f, 129 - больше 0,5f, тоесть с этим флагом они получают двойную байтовую точность - 512 - что очевидно им хватает.
готовая функция

Код: Выделить всё

float Decode(byte b1, byte flag)
        {
            float rez = 0; //flag=128
            if (flag == 129) rez += 0.5f;
            rez += 0.5f / 255 * b1;
            return rez;
        }
Изображение
Также хочу поделиться готовым C# классом, который можно использовать для импорта *.rip файлов в своём редакторе - может кому пригодится и сэкономит время
Развернуть
#region ЮСИНГ
using System;
using System.Collections.Generic;
using System.Collections;
using System.IO;
using System.Text.RegularExpressions;
using System.Linq;
using System.Globalization;
using System.ComponentModel;
using System.Text;
using System.Threading;
using System.Diagnostics;
using System.Runtime.InteropServices;
using MI.Core;
using SlimDX;
using System.Security.Cryptography;
#endregion

namespace MI.Graphics
{
public class Semantic
{
public string name;
public uint index;
public uint offset;
public uint size;
public List<uint> data_type = new List<uint>();

public override string ToString()
{
return name +" offs:"+offset+" size:"+size;
}
}
public struct d3
{
public Vector3 pos;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
public Byte[] normal;
public Vector4 color0;
public Vector4 color1;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
public Byte[] uv0;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
public Byte[] uv1;

public override string ToString()
{
return uv0[0] +" " +uv0[4] +" "+ uv0[8] +" "+ uv0[12] ;
}
}
public class dx_rip:Madel
{
ulong RipSignature = 0xDEADC0DE;
ulong RipFileVersion = 4;

public dx_rip(string file_name)
{
uint sign, vers, FacesCnt, VertexesCnt, VertexSize, TextureFilesCnt, ShaderFilesCnt, VertexAttributesCnt, s_type_count;
List<uint> atribs = new List<uint>();
List<string> tezturs = new List<string>();
List<string> shaders = new List<string>();
List<int> fases = new List<int>();
List<Vertex> vertex = new List<Vertex>();
List<Semantic> semantic_list = new List<Semantic>();
Semantic s;
if (!File.Exists(file_name))
throw new Exception("Не нашел файл с именем:" + file_name);
name = STRING.GetFileNameFromFullPath( file_name);
var strem = File.OpenRead(file_name);
using (BinaryReader br = new BinaryReader(strem))
{
sign = br.ReadUInt32();
if (sign != RipSignature) throw new Exception();
vers = br.ReadUInt32();
if (vers != RipFileVersion) throw new Exception();

FacesCnt = br.ReadUInt32();
VertexesCnt = br.ReadUInt32();
VertexSize = br.ReadUInt32();
TextureFilesCnt = br.ReadUInt32();
ShaderFilesCnt = br.ReadUInt32();
VertexAttributesCnt = br.ReadUInt32();

for (int i = 0; i < VertexAttributesCnt; i++)
{
s = new Semantic();

s.name = STRING.ReadToNull(br);
s.index = br.ReadUInt32();
s.offset = br.ReadUInt32();
s.size = br.ReadUInt32();
s_type_count = br.ReadUInt32();
for (int j = 0; j < s_type_count; j++ )
{
s.data_type.Add(br.ReadUInt32());
}
semantic_list.Add(s);
}

for (int i = 0; i < TextureFilesCnt; i++ )
{
tezturs.Add(STRING.ReadToNull(br));
}

for (int i = 0; i < ShaderFilesCnt; i++)
{
shaders.Add(STRING.ReadToNull(br));
}

for (int i = 0; i < FacesCnt; i++)
{
fases.Add(br.ReadInt32());
fases.Add(br.ReadInt32());
fases.Add(br.ReadInt32());
}

List<d3> raw_wertex = new List<d3>();

for (int i = 0; i < VertexesCnt; i++)
{
raw_wertex.Add(BYTE.ToStruct<d3>(br));
}

Data d = new Data();
d.vtype = VType.pnuv;
d.vertex = new Vertex[raw_wertex.Count];
for (int i=0; i< raw_wertex.Count; i++)
{
d.vertex = new Vertex(){pos = raw_wertex.pos};
d.vertex.normal = new Vector3() { X = BYTE.ToFloat(raw_wertex.normal[0]),
Y = BYTE.ToFloat(raw_wertex.normal[4]), Z = BYTE.ToFloat(raw_wertex[8].normal[0]) };
d.vertex.uv = new Vector2()
{
X = Decode(raw_wertex.uv0[0], raw_wertex.uv0[4]),
Y = Decode(raw_wertex.uv0[8], raw_wertex.uv0[12])
};
}
d.index.Add(fases.ToArray());
if (!Inst.datas.ContainsKey(d.name))
Inst.datas.Add(d.name, d);
// d.GetNormals();

Mesh m = new Mesh(){name = this.name};
this.Add(m);
m.data_name = d.name;
//m.SetTexturTrangle();
m.SetTexturTrangle(STRING.GetFileNameFromFullPath(tezturs[0]));
//m.SetTexturTrangle("Cheker.dds");
m.ready = true;
this.ready = true;
Inst.root.Add(this);
}
}

float Decode(byte b1, byte flag)
{
float rez = 0; //flag=128
if (flag == 129) rez += 0.5f;
rez += 0.5f / 255 * b1;
return rez;
}
}
}


ПОжелания автору программы:
Былобы здорово, еслибы в Вашей программе была реализована возможность использования неких профилей на простом скриптовом языке, редактируюя которые, можно было бы поправить правила декодирования для конкретной игры. Со временем накопится коллекция таких профилей для большинства популярных игр, что значительно облегчит использование программы.
Последний раз редактировалось Wlastas 20 дек 2012, 14:05, всего редактировалось 1 раз.

black_ninja
Ветеран
Ветеран
Сообщения: 424
Зарегистрирован: 08 дек 2011, 04:17
Благодарил (а): 0
Поблагодарили: 0

Re: Ninja Ripper

#575 Сообщение black_ninja »

Wlastas
Спасибо за отзыв.

Насчет профилей, это нужно добавлять в импортер, интерактивность и все такое.
Риппер тупо вытаскивает данные без конвертации
Когда все это будет, и будет ли сложно сказать, rip-формат открытый, меняться не должен, кому очень надо могут сделать

Nightwing
Прохожий
Прохожий
Сообщения: 32
Зарегистрирован: 27 июн 2012, 09:47
Благодарил (а): 0
Поблагодарили: 0

Re: Ninja Ripper

#576 Сообщение Nightwing »

lafugix, спасибо ) Думаю модели пригодятся, хотя Т-поза там странная, но это поправимо. Надеюсь что скоро появятся модели оружия )

luxox_18
Прохожий
Прохожий
Сообщения: 36
Зарегистрирован: 12 янв 2012, 21:09
Благодарил (а): 0
Поблагодарили: 0

Re: Ninja Ripper

#577 Сообщение luxox_18 »

lafugix писал(а):Nightwing, если интересуют сами модели персонажей, а не возможность/невозможность их рипать - http://facepunch.com/showthread.php?t=1215110
about darkest of days models.

darkest of days work under Open GL no DX10 , SMB converter for mesh models and I capture the textures with GLXtractor from marmoset toolbag (the original marmoset toolbag from the mod tools )

Mohammed64rus
Прохожий
Прохожий
Сообщения: 13
Зарегистрирован: 02 ноя 2012, 21:45
Благодарил (а): 0
Поблагодарили: 0

Re: Ninja Ripper

#578 Сообщение Mohammed64rus »

Ребят,может кто сказать UV моделей армы 2?а то измучалсо весь...
кстате,проблему с моделями battlefield bc2 так и не решили?

Аватара пользователя
Tosyk
Администратор
Сообщения: 1880
Зарегистрирован: 24 авг 2011, 03:11
Благодарил (а): 64 раза
Поблагодарили: 61 раз

Re: Ninja Ripper

#579 Сообщение Tosyk »

Mohammed64rus писал(а):проблему с моделями battlefield bc2 так и не решили?
а что там за проблема?
При копировании материалов сайта ссылка на этот ресурс обязательна.
When copying materials from this site link to this resource is required.

Mohammed64rus
Прохожий
Прохожий
Сообщения: 13
Зарегистрирован: 02 ноя 2012, 21:45
Благодарил (а): 0
Поблагодарили: 0

Re: Ninja Ripper

#580 Сообщение Mohammed64rus »

Tosyk с текстурами,да и с самой моделью:)я же говорил уже)

Закрыто

Вернуться в «Ninja Ripper»