Jump to content

[PS2] EyeToy:Play


Go to solution Solved by Bigchillghost,

Recommended Posts

Posted
  On 6/6/2024 at 2:02 PM, shak-otay said:

@Thatonebruh196: because you seem to use the original .etc file, not the cut one.

------------

As Bigchillghost mentioned there's a mix of triangles and tri strips.

(I've used C code to reproduce roocker666's script but without normals.

I had adapted TriList(skipList) from the ShaolinMonks' thread already, that's why I didn't use the updated script from Bigchillghost.)

What confuses me a little bit is rapi.rpgCommitTriangles(triangles, noesis.RPGEODATA_INT, len(triangles)// 4, noesis.RPGEO_TRIANGLE, 1)

Usually CommitTriangles creates faces from a face index buffer (pointer? to buffer triangles here) and modifies it depending on the parameter RPGEO_xxx,

where xxx=TRANGLE or TRIANGLE_STRIP for example. From my understanding. But what does it do here exactly? Just copy the index values?

That's why I prefer using C which is more transparent to me.  In a createTriList() clone I directly log the auto created face indices like so:

if (faceDir > 0) fprintf( stream, "f %d %d %d\n", f1+1, f2+1, f3+1 ) ;
                else fprintf( stream, "f %d %d %d\n", f2+1, f1+1, f3+1 ) ;

But I get a different shading when dragging/dropping the C-apps obj output onto Noesis (for "toggle face cull"):

https://imgbox.com/06Myv6HF

I hope that's because I didn't create normals from the .etc file.

Expand  

I'm not using the original .etc, I'm using the edited one it comes with, is there anything up with that file? 

  • Engineers
Posted (edited)
  On 6/6/2024 at 2:17 PM, Thatonebruh196 said:

I'm not using the original .etc,

Expand  

Sorry, then. Because I could reproduce the error (partially) using the original etc file.

Original versus cut file

And yes, the displayed model is from .obj. I was too lazy to create a new picture. The outcome is the same.

edit:

Kieu, left hand

Yeah, it's left, not right.

Yume, mesh missing

edit: missing one is at 0x60DBC, vCnt= 165

edit2: couldn't track Vernon's sub meshes automatically, found 8 so far,

Vernon head etc

Edited by shak-otay
Posted
  On 6/6/2024 at 1:48 PM, Thatonebruh196 said:

Ah, thanks for looking at it, unfortunately I get the same error...

Expand  

Just noticed that the original script was using the NoeBitStream::read() handler to read bytes which on your system apparently triggered a false judgement. You may try download the script again and see if it works this time.

Posted
  On 6/6/2024 at 3:11 PM, Bigchillghost said:

Just noticed that the original script was using the NoeBitStream::read() handler to read bytes which on your system apparently triggered a false judgement. You may try download the script again and see if it works this time.

Expand  

image.thumb.png.3cef7ddfbad7c1286ea45d2f1b35f4f4.png

It worked great! Tysm!! Unfortunately my lack of hex knowledge is stopping me from tracking down Kieu's other parts, I wonder if someone would be able to create a script to automatically disassemble the files.. 

  • Engineers
Posted (edited)
  On 6/7/2024 at 12:03 AM, Thatonebruh196 said:

 I wonder if someone would be able to create a script to automatically disassemble the files.. 

 

Expand  

roocker666 said there's no pointers (to blocks). You can use the string "Shape" as a ref for finding them.

Works good for Kieu, for Yume partially.

For Vernon there's only 2 findings, Finally I'll try counts and calculation; for Kieu the vertex starts were startOfString (containing "Shape") + vCount*32 +0x58

For vernon the vStarts are 0x42C8, 0xc6b0, 0xFBBC, 0x20954,..., 0x44510

Just checking a formula vStart_next= vstart-prev + vcount*16 +something

(My results so far see my previous post.)

 

Edited by shak-otay
Posted

The skeleton can be parsed correctly with ASH:

skel.thumb.png.64d99f29d4dab05fc3ca5886b3ad78a3.png

skelPV.png.5282dee5ea6acb209506747fe10c3f53.png

 

Yet the anim data seem weird.

anim.thumb.png.e5566b6c20f31e4d777d19e75e9c5b4c.png

Most of the translations match with the bind pose factor of correspond bone, while rotations look a bit off. And for both of them, there's a huge difference between the 1st frame and the rest.

animKeys.thumb.png.73057d167508b016b84c8ce9414a0390.png

Anim preview:

animPV.png.98bc7af4de5a988465dd472d82c4926a.png

 

Still, there's no blend indices attribute in the file so it doesn't make much sense to care for the skinning info or anim, etc.

  • Thanks 1
  • Engineers
Posted (edited)
  On 6/7/2024 at 7:09 AM, Bigchillghost said:

The structure seem pretty straight-forward to me:

Expand  

For Kieu, yes. For Vernon it says: meshcnt=2, but there's many sub meshes, (biggest ones at 0x42C8, vCnt 1676?; 0x16D8C, vCnt 699; 0x20954, vCnt 1091?; 0x2A7A0, vCnt 1439, 0x33CC4, vCnt 599; 0x44510, vCnt 1814 etc )

edit: ok, see, you've found long subMeshCnt...

I'm too lame for it.:classic_sad:

Edited by shak-otay
  • Engineers
Posted (edited)
  On 6/7/2024 at 6:23 AM, shak-otay said:

roocker666 said there's no pointers (to blocks).,,

Expand  

Sorry about that, later I found the pointer to meshes but I was trying to understand mesh header, lol. But yes,  Bigchillghost info is correct, submesh count appears in mesh header, like in KIEU first mesh header has two submeshes(body and face). In Lhand and Rhand headers says 1 submesh. 

Edited by roocker666
Posted
  On 6/7/2024 at 6:26 AM, Bigchillghost said:

The skeleton can be parsed correctly with ASH:

skel.thumb.png.64d99f29d4dab05fc3ca5886b3ad78a3.png

skelPV.png.5282dee5ea6acb209506747fe10c3f53.png

 

Yet the anim data seem weird.

anim.thumb.png.e5566b6c20f31e4d777d19e75e9c5b4c.png

Most of the translations match with the bind pose factor of correspond bone, while rotations look a bit off. And for both of them, there's a huge difference between the 1st frame and the rest.

animKeys.thumb.png.73057d167508b016b84c8ce9414a0390.png

Anim preview:

animPV.png.98bc7af4de5a988465dd472d82c4926a.png

 

Still, there's no blend indices attribute in the file so it doesn't make much sense to care for the skinning info or anim, etc.

Expand  

image.png.ec12fd264c9801275f119e259d9db7c5.png

Animations are stored elsewhere, it might be acting weird cause it doesn't have the right data... I've listed the animations that correspond with the minigame (Rocket Rumble) 

ANIMS.zipFetching info...

Posted
  On 6/8/2024 at 8:50 AM, Bigchillghost said:

Same structure, still bad outcome...

(KieuIntroEnter.ETA)

KieuIntroEnterArgs.thumb.png.0e4e6f5c727238e1acc3ec20b7fc3045.png

KieuIntroEnter.gif.3b74ceca70a4f48e955ab825b72cbe10.gif

 

Maybe the bind-pose skeleton is required instead of the posed one in the ETC file.

Expand  

Hmm, unfortunately I don't think I ever found a bind-pose file in the folders, weird... Maybe if we ever update the plugin to have the rigs we should leave out the animations. 

Posted
  On 6/7/2024 at 6:23 AM, shak-otay said:

roocker666 said there's no pointers (to blocks). You can use the string "Shape" as a ref for finding them.

Works good for Kieu, for Yume partially.

For Vernon there's only 2 findings, Finally I'll try counts and calculation; for Kieu the vertex starts were startOfString (containing "Shape") + vCount*32 +0x58

For vernon the vStarts are 0x42C8, 0xc6b0, 0xFBBC, 0x20954,..., 0x44510

Just checking a formula vStart_next= vstart-prev + vcount*16 +something

(My results so far see my previous post.)

 

Expand  

Also I'd like to ask. How much data do you need to put into a new file? I've tried multiple times but it always ended with failure (I get an error basically) 

Posted
  On 6/8/2024 at 12:14 PM, Thatonebruh196 said:

Hmm, unfortunately I don't think I ever found a bind-pose file in the folders, weird...

Expand  

Is there any skel file similiar to the ani?

  On 6/8/2024 at 12:14 PM, Thatonebruh196 said:

Maybe if we ever update the plugin to have the rigs we should leave out the animations. 

Expand  

Well, don't get me wrong, I was just looking for a chance to test my ARC app.🙃

Seems several world-space matrices of the skeleton use negative scaling factors. Though the left hand looks correcttly within Noesis, it's wrong when exported to FBX and imported into 3ds Max. There's a similar issue with ASH so one more problem to tackle.

diff.thumb.png.8b42c393b0ad9a1a61b1c40beb4b5bd2.png

  • Like 1
Posted
  On 6/9/2024 at 2:37 PM, Bigchillghost said:

Is there any skel file similiar to the ani?

Well, don't get me wrong, I was just looking for a chance to test my ARC app.🙃

Seems several world-space matrices of the skeleton use negative scaling factors. Though the left hand looks correcttly within Noesis, it's wrong when exported to FBX and imported into 3ds Max. There's a similar issue with ASH so one more problem to tackle.

diff.thumb.png.8b42c393b0ad9a1a61b1c40beb4b5bd2.png

Expand  

To answer your first one, no there's only animations and models, everything else is audio, textures, subtitles, particles and fonts. 

And second, is that the original not edited file? And would I be able to try it out for myself? 

Posted
  On 6/9/2024 at 4:34 PM, Thatonebruh196 said:

And would I be able to try it out for myself? 

Expand  

Sorry but it was just a test script and I'm not in the mood for potential maintenance.

 

On second thought I just realized that it's not a problem about the bind-pose skeleton coz every single bone has at least one T, R and S frame so even if I wiped the transformation and use a fake skeleton it'll still produce the same result.

If taking account of the scaling curves, half of the body looks fine while the other half not.

KieuIntroEnter_WithScaling.gif.615fb28f0fa50eba3610ca3c5e8ce99a.gif

 

Multiplying the rotation key with the last matrix among the four of each bone from the ETC skeleton, however, do reveal the correct result.

Kieu_Final.gif.5f194f99ce0171dad76d4668f5a70e4f.gif

KieuIntroEnter_Final.gif.356910d2c369a6442bd900f7013b965d.gif

  • Like 1
Posted
  On 6/10/2024 at 5:17 PM, Bigchillghost said:

Sorry but it was just a test script and I'm not in the mood for potential maintenance.

 

On second thought I just realized that it's not a problem about the bind-pose skeleton coz every single bone has at least one T, R and S frame so even if I wiped the transformation and use a fake skeleton it'll still produce the same result.

If taking account of the scaling curves, half of the body looks fine while the other half not.

KieuIntroEnter_WithScaling.gif.615fb28f0fa50eba3610ca3c5e8ce99a.gif

 

Multiplying the rotation key with the last matrix among the four of each bone from the ETC skeleton, however, do reveal the correct result.

Kieu_Final.gif.5f194f99ce0171dad76d4668f5a70e4f.gif

KieuIntroEnter_Final.gif.356910d2c369a6442bd900f7013b965d.gif

Expand  

Well shoot, seems like were getting somewhere! (Also I wanted the test script cause of it getting all of Kieu's model) 

  • Solution
Posted

It appeared that the implicit indices encoding is not as simple as it may seem. For example the one on the left of the following image is what the script generated (with fixes of the existing code) while the one on the right seems more desirable. But I'll leave it just like that.

image.thumb.png.635b56fea2f8d9bc82c1a3622f4bb960.png

  On 6/10/2024 at 5:32 PM, Thatonebruh196 said:

Also I wanted the test script cause of it getting all of Kieu's model

Expand  

Here is the final script that will work with all samples.

fmt_EyeToyPlay_PS2_ETC.zipFetching info...

Posted
  On 6/12/2024 at 2:32 PM, Bigchillghost said:

It appeared that the implicit indices encoding is not as simple as it may seem. For example the one on the left of the following image is what the script generated (with fixes of the existing code) while the one on the right seems more desirable. But I'll leave it just like that.

image.thumb.png.635b56fea2f8d9bc82c1a3622f4bb960.png

Here is the final script that will work with all samples.

fmt_EyeToyPlay_PS2_ETC.zip 1.34 kB · 0 downloads

Expand  

The first one is actually accurate to the model in-Game specifically in that one minigame! For some reason in that minigame, all the models are edited to be more low poly, with the messier verts, I know this as I have tried to rip from the game before using Ninjaripper, and thank you the script works like a charm!

image.thumb.png.84a6aea8b06949083033077b975754ad.png

Every character model in the game works with it perfectly, some even have T-Poses

image.png.9a77e7832fcbdc37e30b5fa8979aa854.pngimage.png.d13ed17860b45e82eb16d53553e33585.png

It's probably down to what animation frame is first (Which is a T-pose for these two) 

 

  • 3 weeks later...
Posted
  On 6/5/2024 at 6:30 PM, roocker666 said:

I remember some scripts to generate faces, Sparagas created these. I think are based on a function by Bigchillghost, I can't remember very well, lol.

Maybe these could help:

Generate-Faces last version.zip 1.99 kB · 4 downloads

Expand  

Hi, I made this script. They were quickly made for private use (by private I mean, it has no explanation of what it does, and not that no one can use it).

So I updated it with an explanation of what it does and how to use it:
https://github.com/Sparagas/Triangle-Generator/tree/main

Feel free to use it if it helps.

  • Like 1

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...