응애맘마조

230517 강의 본문

공부/3D강의

230517 강의

TH.Wert 2023. 5. 17. 22:12

xml에 대해서 강의를 했었습니다. xml은 마크업 언어이며 이 파일 형식으로 전에 만들었던 형식의 태양계나 걷는 모션 등 이 파일로 저장하고 불러오기를 했습니다. HTML과 얼핏 비슷해 보일 수 있으며 열고 닫기의 형식이 존재하기 때문에 최상위의 루트 노드 안에 필요한 파일 형식과 값을 저장하고 닫는 언어를 작성해야 합니다.

 Xml::XMLDocument* doc = new Xml::XMLDocument();
        Xml::XMLElement* ob = doc->NewElement("Root");
        doc->LinkEndChild(ob);
        ob->SetAttribute("name", "Sun");
        
        {
            Xml::XMLElement* Transform = doc->NewElement("Transform");
            Xml::XMLElement* Pos = doc->NewElement("Position");
            Xml::XMLElement* Scale = doc->NewElement("Scale");
            Xml::XMLElement* Rot = doc->NewElement("Rotation");

            ob->LinkEndChild(Transform);
            Transform->LinkEndChild(Pos);
            Transform->LinkEndChild(Scale);
            Transform->LinkEndChild(Rot);

            Pos->SetAttribute("X", 1.0f);
            Pos->SetAttribute("Y", 10.0f);
            Pos->SetAttribute("Z", 0.0f);
        }

xml을 저장할 때 사용합니다. 예시로 저장할 때 사용했으며 SetAttribute는 key와 value값을 대입하여 나타낼 수 있습니다.

{
        Xml::XMLDocument* doc = new Xml::XMLDocument();
        doc->LoadFile("../Contents/GameObject/XMLTest.xml");
        Xml::XMLElement* ob;
        Xml::XMLElement* trans;
        Xml::XMLElement* Pos;
        ob = doc->FirstChildElement();
      
     
        trans = ob->FirstChildElement("Transform");
        Pos = trans->FirstChildElement("Position");
     
        cout << ob->Attribute("name") << endl;
        cout << Pos->FloatAttribute("X") << endl;
        cout << Pos->FloatAttribute("Y") << endl;
    }

불러오기를 할 때는 저장하기의 역순으로 불러오면 됩니다.

//Sun.xml
<Root Name="Sun">
    <Mesh File="1.Sphere.mesh"/>
    <Shader File="1.Cube.hlsl"/>
    <Transform>
        <Position X="0" Y="0" Z="0"/>
        <Scale X="1" Y="1" Z="1"/>
        <Rotation X="-0.41887903" Y="-0.33161256" Z="1.2740904"/>
    </Transform>
    <Children Size="2"/>
    <Child0 Name="EarthBone">
        <Mesh File="1.Point.mesh"/>
        <Shader File="1.Cube.hlsl"/>
        <Transform>
            <Position X="3.3499999" Y="-0.2" Z="-0.85000002"/>
            <Scale X="0.5" Y="0.5" Z="0.5"/>
            <Rotation X="-5" Y="276.43201" Z="0"/>
        </Transform>
        <Children Size="1"/>
        <Child0 Name="Earth">
            <Mesh File="1.Sphere.mesh"/>
            <Shader File="1.Cube.hlsl"/>
            <Transform>
                <Position X="8.3999996" Y="1.15" Z="-1.3"/>
                <Scale X="1" Y="1" Z="1"/>
                <Rotation X="-1.1" Y="-309.23199" Z="-0.89999998"/>
            </Transform>
            <Children Size="1"/>
            <Child0 Name="Moon">
                <Mesh File="1.Sphere.mesh"/>
                <Shader File="1.Cube.hlsl"/>
                <Transform>
                    <Position X="2.55" Y="0" Z="0"/>
                    <Scale X="0.5" Y="0.5" Z="0.5"/>
                    <Rotation X="0" Y="0" Z="0"/>
                </Transform>
                <Children Size="0"/>
            </Child0>
        </Child0>
    </Child0>
    <Child1 Name="MarsBone">
        <Mesh File="1.Point.mesh"/>
        <Shader File="1.Cube.hlsl"/>
        <Transform>
            <Position X="0" Y="0" Z="0"/>
            <Scale X="0.5" Y="0.5" Z="0.5"/>
            <Rotation X="0" Y="0" Z="0"/>
        </Transform>
        <Children Size="1"/>
        <Child0 Name="Mars">
            <Mesh File="1.Sphere.mesh"/>
            <Shader File="1.Cube.hlsl"/>
            <Transform>
                <Position X="12" Y="0" Z="0"/>
                <Scale X="1" Y="1" Z="1"/>
                <Rotation X="0" Y="0" Z="0"/>
            </Transform>
            <Children Size="0"/>
        </Child0>
    </Child1>
</Root>

태양계의 xml 코드입니다.

 

읽어주셔서 감사합니다.

'공부 > 3D강의' 카테고리의 다른 글

230519 강의  (0) 2023.05.19
230518 강의  (0) 2023.05.18
230516 강의  (0) 2023.05.16
230512 강의  (0) 2023.05.14
230511 강의  (0) 2023.05.11