WIP: write node tree structure into file
This commit is contained in:
parent
94af967fb1
commit
fc072a8967
|
@ -297,8 +297,8 @@ namespace SH_COMP
|
|||
static_cast<std::vector<IndexType> const&>(intermediate),
|
||||
node.rotation,
|
||||
node.translation,
|
||||
node.matrix,
|
||||
node.weights
|
||||
node.matrix
|
||||
//node.weights
|
||||
);
|
||||
}
|
||||
for (auto const& skin : data.skins)
|
||||
|
|
|
@ -145,7 +145,53 @@ namespace SH_COMP
|
|||
|
||||
void MeshWriter::WriteRigNodeData(FileReference file, RigData const& rig)
|
||||
{
|
||||
//TODO reimplement rig node data write
|
||||
std::vector<IndexType> treeNodeWrite;
|
||||
for (auto const& node : rig.nodes)
|
||||
{
|
||||
file.write(
|
||||
node.name.data(),
|
||||
node.name.size()
|
||||
);
|
||||
|
||||
file.write(
|
||||
reinterpret_cast<char const*>(&node.inverseBindMatrix),
|
||||
sizeof(SHMat4)
|
||||
);
|
||||
|
||||
//Build data flags
|
||||
NodeDataFlag flag{ 0 };
|
||||
|
||||
if (!node.rotation.empty())
|
||||
flag &= NODE_DATA_ROTATION;
|
||||
if (!node.scale.empty())
|
||||
flag &= NODE_DATA_SCALE;
|
||||
if (!node.translation.empty())
|
||||
flag &= NODE_DATA_TRANSLATION;
|
||||
if (!node.matrix.empty())
|
||||
flag &= NODE_DATA_MATRIX;
|
||||
|
||||
file.put(flag);
|
||||
|
||||
file.write(
|
||||
reinterpret_cast<char const*>(node.rotation.data()),
|
||||
sizeof(double) * NODE_COMPONENT_COUNT_ROTATION
|
||||
);
|
||||
|
||||
file.write(
|
||||
reinterpret_cast<char const*>(node.scale.data()),
|
||||
sizeof(double) * NODE_COMPONENT_COUNT_SCALE
|
||||
);
|
||||
|
||||
file.write(
|
||||
reinterpret_cast<char const*>(node.translation.data()),
|
||||
sizeof(double) * NODE_COMPONENT_COUNT_TRANSLATION
|
||||
);
|
||||
|
||||
file.write(
|
||||
reinterpret_cast<char const*>(node.matrix.data()),
|
||||
sizeof(double) * NODE_COMPONENT_COUNT_MATRIX
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void MeshWriter::WriteHeaders(FileReference file, ModelConstRef asset)
|
||||
|
|
|
@ -14,7 +14,12 @@ namespace SH_COMP
|
|||
constexpr NodeDataFlag NODE_DATA_SCALE = 0b00010;
|
||||
constexpr NodeDataFlag NODE_DATA_TRANSLATION = 0b00100;
|
||||
constexpr NodeDataFlag NODE_DATA_MATRIX = 0b01000;
|
||||
constexpr NodeDataFlag NODE_DATA_WEIGHTS = 0b10000;
|
||||
//constexpr NodeDataFlag NODE_DATA_WEIGHTS = 0b10000;
|
||||
|
||||
constexpr size_t NODE_COMPONENT_COUNT_ROTATION{ 4 };
|
||||
constexpr size_t NODE_COMPONENT_COUNT_SCALE{ 3 };
|
||||
constexpr size_t NODE_COMPONENT_COUNT_TRANSLATION{ 3 };
|
||||
constexpr size_t NODE_COMPONENT_COUNT_MATRIX{ 16 };
|
||||
|
||||
struct RigDataHeader
|
||||
{
|
||||
|
@ -32,8 +37,8 @@ namespace SH_COMP
|
|||
rotation,
|
||||
scale,
|
||||
translation,
|
||||
matrix,
|
||||
weights;
|
||||
matrix;
|
||||
//weights;
|
||||
SHMat4 inverseBindMatrix;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue