1
Scripting and Reverse Engineering / Re: [FF7]Jet Coaster 3D model
« on: 2024-12-03 02:02:39 »
@Kaiseran
The Coaster mini-game has its own format for 3D models and stuffs, so the plugin cannot work for anything else. Sorry about that.
@myst6re
thanks
And now, a word on visibility.
As I say in a previous post, the visibility (or culling, or whatever it is, I'm not sure which word is the correct one in this case) of the static part of the 3D model is pre-computed.
Here is a short explanation of its implementation:
The track on which the cart is moving is defined by 2 sets of points, one the left part of the track and the other for the right. Each point has a distance with the next point of an average of 35 units.
Now, these points defined what we can call "STEP"s in the trajectory.
For each of these "STEP" there is an array of 16 bit values in the next streams:
-stream 2: TrackId to add
-stream 3: TrackId to remove
-stream 8: TriangleID to add
-stream 9: TriangleID to remove
These arrays do not have a constant size for each step. As a matter of fact, they are more like strings whose ending is marked by the value 0xffff.
Because of that, to get the position in the array for a particulare "STEP" you would need to scan it from the first "STEP" until the one you are interested in.
TriangleID is an index in the stream 10.
TrackID is a little bit more complicated, but basically is it the same thing for the track
As you ca see, the program maintains two lists of visible objects; one for the track, and one for the scenery.
They are both implemented as double-linked lists and the detail can be found in the file C_005ED8F0.cpp.
I'm pretty sure this particular implementation was conceived in-house by Square's developers.
As for the information in itself, I wonder:
.Is it possible that the list of visible triangles for each "STEP" of the trajectory, may have been created with whichever modeling tool the staff was using then ?
.Or did they write their own tool ?
If someone reading this has any insight on this, or a good documentation from that time (around 1996 I would say) that would be greatly appreciated.
The Coaster mini-game has its own format for 3D models and stuffs, so the plugin cannot work for anything else. Sorry about that.
@myst6re
thanks
And now, a word on visibility.
As I say in a previous post, the visibility (or culling, or whatever it is, I'm not sure which word is the correct one in this case) of the static part of the 3D model is pre-computed.
Here is a short explanation of its implementation:
The track on which the cart is moving is defined by 2 sets of points, one the left part of the track and the other for the right. Each point has a distance with the next point of an average of 35 units.
Now, these points defined what we can call "STEP"s in the trajectory.
For each of these "STEP" there is an array of 16 bit values in the next streams:
-stream 2: TrackId to add
-stream 3: TrackId to remove
-stream 8: TriangleID to add
-stream 9: TriangleID to remove
These arrays do not have a constant size for each step. As a matter of fact, they are more like strings whose ending is marked by the value 0xffff.
Because of that, to get the position in the array for a particulare "STEP" you would need to scan it from the first "STEP" until the one you are interested in.
TriangleID is an index in the stream 10.
TrackID is a little bit more complicated, but basically is it the same thing for the track
As you ca see, the program maintains two lists of visible objects; one for the track, and one for the scenery.
They are both implemented as double-linked lists and the detail can be found in the file C_005ED8F0.cpp.
I'm pretty sure this particular implementation was conceived in-house by Square's developers.
As for the information in itself, I wonder:
.Is it possible that the list of visible triangles for each "STEP" of the trajectory, may have been created with whichever modeling tool the staff was using then ?
.Or did they write their own tool ?
If someone reading this has any insight on this, or a good documentation from that time (around 1996 I would say) that would be greatly appreciated.