1) SkiaSharp
: 오픈 소스 Skia 그래픽 엔진으로 구동되는 .NET 및 C#용 2D 그래픽 시스템
a) SkiaSharp SKBitmap
: SkiaSharp.SKBitmap ~~ = ImageUtil.~ReadFromBinary( ~~ );
( Binary단위로 읽은 Image를 SKBitmap으로 뽑아낸 후 "SaveToFile로 out 시킴)
2) Materials
: 여기에 적힌 대부분은 "Khronos Group"의 "GlTF"양식을 따름
: Draw call을 줄이기 위해서 Material별로 사전작업으로 모아놓음.
{
"materials": [
{
"name": "gold",
"pbrMetallicRoughness": {
"baseColorFactor": [ 1.000, 0.766, 0.336, 1.0 ],
"metallicFactor": 1.0,
"roughnessFactor": 0.0
}
}
]
}
여기에 더해 Material별로 작업할떄 Image도 같이 사전작업을 함.
ImgIdx에 img별 Key로 저장 후 images.Length가 imgIdx보다 클 때, Material.~Texture에 images[imgIdx]의 Path로 전달.
전달 후 materials의 materialsId 별로 위의 Value를 전달함.
3) Node
: Nodes and Hierarchy 구조를 가지고 있어 점진적인 Value값이 필요함.(=재귀구현)
: evaluate 된 매트릭스를 원래의 매트릭스에 곱해지고 그것을 누적해서 전달함.
ex) m = new Matrix4x4( ~~~~ // );
node.evaluateM = m * ownerNode.evaluateM;
→ Node를 통한 재귀 생성
: Parameter로 만들어진 gltf와 GlTf의 Node, Action으로 무명 메서드 생성(GlTfNode, GlTfNode)
if (ChildrenNode != null)
{
for (var i = 0; i < ChildrenNode.Length; i++)
{
var childNodeId = ChildrenNode[i];
var childNode = gltf.nodes[childNodeId];
action(ownerNode, childNode);
VisitChildren(gltf, childNode, childNode.children, action); // 재귀
}
}