Resources/Model Pointcloud: Difference between revisions
Appearance
Added Resources/Model Pointcloud |
No edit summary |
||
(7 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
'''Model Pointcloud''' is a fileformat used since [[ | {{Infobox Resource|type=[[Resources#Models|Models]]|extension=.pcmodel|games=* [[Sonic Frontiers|Sonic Frontiers]] | ||
* [[Shadow Generations|Shadow Generations]]|tools=* [[Tools/KnuxTools|KnuxTools]] | |||
* [[Tools/Restoration Issue Pocketknife|Restoration Issue Pocketknife]] | |||
* [[Tools/AshDumpTool|AshDumpTool]]|status=Done|container=BINA|name=Model Pointcloud}} | |||
'''Model Pointcloud''' is a fileformat used since [[Sonic Frontiers]], that's used to create terrains [[Resources/Terrain Model|(.terrain-model]][[Resources/Model|/.model)]] using a collection of instances with resource names. | |||
== File Format == | == File Format == | ||
This is one of the many BINA file formats | This is one of the many BINA file formats. | ||
The structure of this format is very simple, it contains a signature '''"CPIC"''', the version '''"2"''' ''(no instances have been found with the version 1)'' and the list of | The structure of this format is very simple, it contains a signature '''"CPIC"''', the version '''"2"''' ''(no instances have been found with the version 1)'' and the list of instances itself. | ||
The structure of | The structure of an instance is | ||
* '''Instance name,''' to easily differentiate between different | * '''Instance name,''' to easily differentiate between different instance. | ||
* '''Resource Name,''' to set the | * '''Resource Name,''' to set the [[Resources/Terrain Model|Terrain Model]] or [[Resources/Model|Model]] name of the instance. | ||
* '''Position,''' straight forward. | * '''Position,''' straight forward. | ||
* '''Rotation,''' straight forward. | * '''Rotation,''' straight forward. | ||
* '''Scale,''' straight forward. | * '''Scale,''' straight forward. | ||
* '''Unknown value'''. | * '''Unknown value'''. | ||
== Technical Info == | |||
Since this is a BINA file format, it's very easy to show this type in a struct/memory map it.<syntaxhighlight lang="c++"> | |||
struct Instance{ | |||
const char* instanceName; | |||
const char* resourceName; | |||
csl::math::Position position; | |||
csl::math::Position rotation; | |||
int unk0; | |||
csl::math::Position Scale; | |||
long unk1; | |||
}; | |||
struct PointcloudModel{ | |||
char signature[4]; | |||
uint version; | |||
int instanceCount; | |||
Instance* instances; | |||
}; | |||
</syntaxhighlight> |
Latest revision as of 14:10, 26 January 2025
Resource Type | Models |
---|---|
File Extension | .pcmodel |
Used In Games | |
Container Format | BINA |
Editing Tools | |
Reverse Engineering Status | Done |
Model Pointcloud is a fileformat used since Sonic Frontiers, that's used to create terrains (.terrain-model/.model) using a collection of instances with resource names.
File Format[edit | edit source]
This is one of the many BINA file formats.
The structure of this format is very simple, it contains a signature "CPIC", the version "2" (no instances have been found with the version 1) and the list of instances itself.
The structure of an instance is
- Instance name, to easily differentiate between different instance.
- Resource Name, to set the Terrain Model or Model name of the instance.
- Position, straight forward.
- Rotation, straight forward.
- Scale, straight forward.
- Unknown value.
Technical Info[edit | edit source]
Since this is a BINA file format, it's very easy to show this type in a struct/memory map it.
struct Instance{
const char* instanceName;
const char* resourceName;
csl::math::Position position;
csl::math::Position rotation;
int unk0;
csl::math::Position Scale;
long unk1;
};
struct PointcloudModel{
char signature[4];
uint version;
int instanceCount;
Instance* instances;
};