The Forum is up for sale: XeNTaX Forum looking for new owner

Spotlight: Señor Casaroja's Noesis

General game file tools that are useful for more than one game
chrrox
Moderator
Posts: 2602
Joined: Sun May 18, 2008 3:01 pm
Has thanked: 57 times
Been thanked: 1411 times

Re: Señor Casaroja's Noesis

Post by chrrox »

its a short
most developers convert shorts to floats by dividing by 32767
9729 / 32767 = 0.29691457869197668385876033814508
deepshit
advanced
Posts: 76
Joined: Tue Jan 31, 2012 9:43 pm
Has thanked: 41 times
Been thanked: 30 times

Re: Señor Casaroja's Noesis

Post by deepshit »

chrrox wrote:its a short
most developers convert shorts to floats by dividing by 32767
9729 / 32767 = 0.29691457869197668385876033814508
Thanks.That's it.
itoikenza
advanced
Posts: 52
Joined: Sat Jan 07, 2012 2:24 am
Has thanked: 9 times
Been thanked: 2 times

Re: Señor Casaroja's Noesis

Post by itoikenza »

Mr. Adults, "Please" add native file support for super street fighter 4 whatetever's (cause i got copies of pc or 360 models,dunno which, cause i can't remember. hope pc file isn't different than 360/ps3) and maybe you can add output support to clothe em' with native files...
chrrox
Moderator
Posts: 2602
Joined: Sun May 18, 2008 3:01 pm
Has thanked: 57 times
Been thanked: 1411 times

Re: Señor Casaroja's Noesis

Post by chrrox »

If people want noesis to support kinect 2.0 then you could buy him a developer kit.
http://www.engadget.com/2013/06/26/next ... ndows-sdk/
Darko
double-veteran
double-veteran
Posts: 723
Joined: Mon Jul 13, 2009 6:16 pm
Has thanked: 72 times
Been thanked: 138 times

Re: Señor Casaroja's Noesis

Post by Darko »

chrrox wrote:If people want noesis to support kinect 2.0 then you could buy him a developer kit.
http://www.engadget.com/2013/06/26/next ... ndows-sdk/
Lol Kinnect 2.0 for PC, now they're gonna spy you to see if there's no more than 1 person in front of a pc, If not, they're canceling your windows llicense for license infrigement xD.

I know, this is spam but some of M$'s policies are atupid.
Image
howfie
double-veteran
double-veteran
Posts: 929
Joined: Fri Jul 08, 2011 12:06 pm
Location: Torrance, CA
Has thanked: 10 times
Been thanked: 274 times

Re: Señor Casaroja's Noesis

Post by howfie »

yo rich, got a question for ya...

I coded my own PS3 index buffer decompression routine based on docs from the SDK and help from chris, but it still doesn't generate the same indices that you get. It doesn't crash and it generates valid indices, but I think something is wrong with my two-bit stream processing. I think I am doing something out of order... is the processing like so?

two bytes, 8 triangles, 2-bits per triangle

is order
11010010-10101001 -> 11 01 00 10 10 10 10 01 (bits right-to-left, bytes left-to-right)

or

11010010-10101001 -> 10 00 01 11 01 10 10 10 (bits left-to-right, bytes left-to-right)

or something else? This is my code, processing the two-bit stream is the last step, coming after processing deltas and the one-bit stream (the incremental indices step).

Code: Select all

 // delta processing crap
 // ...

 // one-bit processing crap
 // ...

 // process two-bit data stream
 std::deque<uint32> idxbuffer;
 uint08* ptr = reinterpret_cast<uint08*>(&bs[(8 + onebits_bytes)]);
 uint32 new_index = 0;
 for(uint32 i = 0; i < twobits_bytes; i++)
    {
     uint08 b[4];
     b[0] = ((ptr[i] >> 6));
     b[1] = ((ptr[i] & 0x30) >> 4);
     b[2] = ((ptr[i] & 0x0C) >> 2);
     b[3] = ((ptr[i] & 0x03));

     for(uint32 j = 0; j < 4; j++)
        {
         uint32 size = idxbuffer.size();
         if(b[j] == 0) {
            uint32 i0 = idxbuffer[size - 3];
            uint32 i1 = idxbuffer[size - 2];
            idxbuffer.push_back(i1);
            idxbuffer.push_back(i0);
            idxbuffer.push_back(newlist[new_index++]);
           }
         else if(b[j] == 1) {
            uint32 i0 = idxbuffer[size - 3];
            uint32 i2 = idxbuffer[size - 1];
            idxbuffer.push_back(i0);
            idxbuffer.push_back(i2);
            idxbuffer.push_back(newlist[new_index++]);
           }
         else if(b[j] == 2) {
            uint32 i1 = idxbuffer[size - 2];
            uint32 i2 = idxbuffer[size - 1];
            idxbuffer.push_back(i2);
            idxbuffer.push_back(i1);
            idxbuffer.push_back(newlist[new_index++]);
           }
         else {
            idxbuffer.push_back(newlist[new_index++]);
            idxbuffer.push_back(newlist[new_index++]);
            idxbuffer.push_back(newlist[new_index++]);
           }

         std::cout << (idxbuffer[idxbuffer.size() - 3] + 1) << " ";
         std::cout << (idxbuffer[idxbuffer.size() - 2] + 1) << " ";
         std::cout << (idxbuffer[idxbuffer.size() - 1] + 1) << std::endl;
        }
    }
thx
MrAdults
Moderator
Posts: 1007
Joined: Mon Mar 23, 2009 2:57 am
Has thanked: 44 times
Been thanked: 505 times

Re: Señor Casaroja's Noesis

Post by MrAdults »

Sorry, Edge stuff is a work-related conflict of interest for me now, so no comment.
howfie
double-veteran
double-veteran
Posts: 929
Joined: Fri Jul 08, 2011 12:06 pm
Location: Torrance, CA
Has thanked: 10 times
Been thanked: 274 times

Re: Señor Casaroja's Noesis

Post by howfie »

lol, no problem rich hahahahaha i will eventually figure it out.
Demonsangel
mega-veteran
mega-veteran
Posts: 241
Joined: Fri Aug 05, 2011 9:31 pm
Location: Antwerp
Has thanked: 13 times
Been thanked: 41 times

Re: Señor Casaroja's Noesis

Post by Demonsangel »

I know there is a binary find tool, but I'm not sure if it actually works from a Noesis script.
Bascally I'm trying to find certain byte groups within a NoeBitStream() and get their position.

I'm currently using

Code: Select all

def SearchChunk(self,byteArray,readFlag=1):
        found = 0
        byte1 = int(byteArray[:2],16)
        type2 = len(byteArray[2:])//2
        if type2 == 2:
            byte2 = int(byteArray[4:]+byteArray[2:4],16)
        else:byte2 = int(byteArray[2:],16)
        while found!=1:
            byte = self.data.readByte()
            if byte == byte1:
                if type2 == 2:flag = self.data.readShort()
                else:flag = self.data.readByte()
                if flag ==byte2:found=1
        if readFlag == 0: self.data.seek(-3,1)
        return
to find chunk headers and

Code: Select all

def findGEOM(self):
        fName=rapi.getInputName().split('\\')[-1]
        dirPath = rapi.getDirForFilePath(rapi.getInputName())
        f = open(dirPath + "/" + fName,'rb')
        file = f.read()
        f.close()
        offset = file.find(b"GEOM")
        self.data.seek(offset)
to find strings

But this isn't really efficient or failsafe. Just wondering what your input on this was.


EDIT:
I changed my string method to the following, which I guess is as good as any other.

Code: Select all

o3d = rapi.loadPairedFileOptional("Skeleton File","o3d")
offset = o3d.find(name.encode('utf-8'))
MrAdults
Moderator
Posts: 1007
Joined: Mon Mar 23, 2009 2:57 am
Has thanked: 44 times
Been thanked: 505 times

Re: Señor Casaroja's Noesis

Post by MrAdults »

I couldn't tell you what the absolute best Python method is for finding data in a bytearray, cause I'm not all that well-versed in Python myself. But I bet it's a question that's been addressed on stackoverflow.com if you can manage to figure out the right thing to search for.
Alsair
advanced
Posts: 66
Joined: Fri Jun 15, 2012 10:55 am
Has thanked: 4 times

Re: Señor Casaroja's Noesis

Post by Alsair »

Would be cool if Noesis in the future adds support for model creation and modification, what do ya say MrAdults, is it part of your plans?
MrAdults
Moderator
Posts: 1007
Joined: Mon Mar 23, 2009 2:57 am
Has thanked: 44 times
Been thanked: 505 times

Re: Señor Casaroja's Noesis

Post by MrAdults »

Sorry for disappearing for a week again. My life is hell and stress and chaos.

I don't have any plans to really expand the visual editing capabilities of Noesis. It's meant more for processing of an automated nature. But you can build all of those things into it via the plugin framework, so anyone is free to if they really want to. There's a triangle picker plugin up on the official Noesis plugins repo that demonstrates how you'd go about something like that. All it does is let you select triangles of a(n optionally animated) model and export the selection as another model, but you could do anything you want there from assorted modeling functions to a full-blown topology-based modeling tool.

You can also override the rendering completely (that particular plugin just demonstrates rendering on top of the existing scene) and you have all the data you need to replace the base model renderer. So there's that too.
Justdragos
advanced
Posts: 69
Joined: Tue Feb 21, 2012 8:19 am

Re: Señor Casaroja's Noesis

Post by Justdragos »

Hy guys! Is there any way to export maps or animation from dragon ball raging blast?
I am willing to donate 15 euro to the person who cand help me do that:D.
kilian277
ultra-n00b
Posts: 9
Joined: Sat Oct 13, 2012 2:45 pm
Has thanked: 2 times

Re: Señor Casaroja's Noesis

Post by kilian277 »

Any change of getting multiexport , like that you can select multiple items in the listview and then export them all together ?

Thanks
kawayide
beginner
Posts: 37
Joined: Wed Nov 09, 2011 2:03 am
Has thanked: 7 times

Re: Señor Casaroja's Noesis

Post by kawayide »

Wrote an export plugin. When exporting a .GMO which has external texture file, texture count always be zero (i.e. pmdl->matData->numTextures zero). also can't get texture's filenames. Help plz.

(the obj dae exporters can find the texture filename)
Post Reply