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),
|
static_cast<std::vector<IndexType> const&>(intermediate),
|
||||||
node.rotation,
|
node.rotation,
|
||||||
node.translation,
|
node.translation,
|
||||||
node.matrix,
|
node.matrix
|
||||||
node.weights
|
//node.weights
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
for (auto const& skin : data.skins)
|
for (auto const& skin : data.skins)
|
||||||
|
|
|
@ -145,7 +145,53 @@ namespace SH_COMP
|
||||||
|
|
||||||
void MeshWriter::WriteRigNodeData(FileReference file, RigData const& rig)
|
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)
|
void MeshWriter::WriteHeaders(FileReference file, ModelConstRef asset)
|
||||||
|
|
|
@ -14,7 +14,12 @@ namespace SH_COMP
|
||||||
constexpr NodeDataFlag NODE_DATA_SCALE = 0b00010;
|
constexpr NodeDataFlag NODE_DATA_SCALE = 0b00010;
|
||||||
constexpr NodeDataFlag NODE_DATA_TRANSLATION = 0b00100;
|
constexpr NodeDataFlag NODE_DATA_TRANSLATION = 0b00100;
|
||||||
constexpr NodeDataFlag NODE_DATA_MATRIX = 0b01000;
|
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
|
struct RigDataHeader
|
||||||
{
|
{
|
||||||
|
@ -32,8 +37,8 @@ namespace SH_COMP
|
||||||
rotation,
|
rotation,
|
||||||
scale,
|
scale,
|
||||||
translation,
|
translation,
|
||||||
matrix,
|
matrix;
|
||||||
weights;
|
//weights;
|
||||||
SHMat4 inverseBindMatrix;
|
SHMat4 inverseBindMatrix;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue