{"id":309,"date":"2007-04-06T13:59:00","date_gmt":"2007-04-06T13:59:00","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=309"},"modified":"2017-01-29T13:25:35","modified_gmt":"2017-01-29T04:25:35","slug":"wpf-3d-%ec%9e%85%eb%ac%b8-22","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=309","title":{"rendered":"Dip2K&#8217;s WPF 3D \uc785\ubb38 (2\/3)"},"content":{"rendered":"<p>\uc774\uc81c \uc55e\uc5d0\uc11c XAML\ub97c \ud1b5\ud574 \ub9cc\ub4e4\uc5b4 \ub193\uc740 UI\uc5d0 \ub300\ud55c \ub85c\uc9c1\uc744 CS(C# \uc18c\uc2a4) \ucf54\ub4dc\ub85c \uc791\uc131\ud574 \ubcf4\ub294 \uac83\uc744 \uc815\ub9ac\ud574\ubcf4\uc790. \ucf54\ub4dc\ub97c \uc791\uc131\ud558\uae30\uc5d0 \uc55e\uc11c \uc774\ud574\ud558\uace0 \ub118\uc5b4\uac00\uc57c \ud560 \uac83\uc740 WPF\uc758 3D \ubd80\ubd84\uc744 \uad6c\uc131\ud558\uace0 \uc788\ub294 \ud074\ub798\uc2a4\uc774\ub2e4. \uc774 \ud074\ub798\uc2a4\ub294 System.Windows.Media.Media3D \ub124\uc784\uc2a4\ud398\uc774\uc2a4\uc5d0 \uc704\uce58\ud558\uba70 \uc774 \uae00\uc5d0\uc11c \uc0ac\uc6a9\ud558\ub294 \uc8fc\uc694 \ud074\ub798\uc2a4\uc758 \uad00\uacc4\ub3c4\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/1\/1246170206.png\" alt=\"\" width=\"415\" height=\"267\" \/><br \/>\n\uac01 \ud074\ub798\uc2a4\uc758 \ubaa9\uc801(\uc6a9\ub3c4)\uc744 \uac04\ub2e8\uc774 \uc815\ub9ac\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<p>MeshGeometry3D\ub294 Mesh\uc758 Vertex, Normal, Vertex Index, Textture Coordnate \uc815\ubcf4\ub97c \uac00\uc9c0\uace0 \uc788\uc73c\uba70, Material\uc740 Mesh\uc5d0 \ub300\ud55c \uc7ac\uc9c8 \uc815\ubcf4\ub97c, GeometryModel3D\ub294 MeshGeometry3D\uc640 Material \uc815\ubcf4\ub97c \ud558\ub098\ub85c \ubb36\uc5b4 \uc8fc\ub294 \uc5ed\ud65c\uc744 \ud55c\ub2e4. Model3DGroup\ub294 \uc5ec\ub7ec\uac1c\uc758 GeometryModel3D\uc744 \ubb36\uc5b4 \ub9c8\uce58 \ud558\ub098\uc758 GeometryModel3D \ucc98\ub7fc \uc0ac\uc6a9\ud560 \uc218 \uc788\ub3c4\ub85d \ud558\uba70, ModelVisual3D\ub294 \ucd5c\uc885\uc801\uc73c\ub85c \ud654\uba74\uc5d0 \ub80c\ub354\ub9c1\ud558\uae30 \uc704\ud55c \ubaa9\uc801\uc744 \uac16\ub294\ub2e4.<\/p>\n<p>\uc6b0\ub9ac\ub294 \ucd5c\uc885\uc801\uc73c\ub85c \ub2e4\uc74c\uacfc \uac19\uc740 \uacb0\uacfc\uc744 \uc5bb\uace0\uc790 \ud55c\ub2e4. \ud654\uba74\uc0c1\uc5d0 \uc815\uc721\uba74\uccb4 Mesh\ub97c \ub80c\ub354\ub9c1\ud558\uace0 \uc0ac\uc6a9\uc790\uac00 \ubc84\ud2bc\uc744 \ub20c\ub7ec \uc774 Mesh\ub97c \ud68c\uc804\uc2dc\ucf1c \ubcf4\ub294 \uac83\uc774\ub2e4.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/1\/1079283792.png\" alt=\"\" width=\"324\" height=\"325\" \/><br \/>\nWindow1.xaml.cs \uc18c\uc2a4 \ud30c\uc77c\uc744 \ubcf4\uba74 \uae30\ubcf8\uc801\uc73c\ub85c Window1 \ud074\ub798\uc2a4\uac00 \uc788\ub294\ub370, \uc774 Window1 \ud074\ub798\uc2a4\uc758 \ub9f4\ubc84 \ubcc0\uc218\ub85c \uc544\ub798\uc758 \ud56d\ubaa9\uc744 \ucd94\uac00\ud55c\ub2e4.<\/p>\n<pre>private ModelVisual3D model = null;\r\nprivate Transform3DGroup transformGroup = new Transform3DGroup();<\/pre>\n<p>model\uc740 \ucd5c\uc885\uc801\uc73c\ub85c \ud654\uba74\uc0c1\uc5d0 \ub80c\ub354\ub9c1\ud560 Mesh\ub85c \uc0ac\uc6a9\ub418\uba70 transformGroup\uc740 \uc774\ub3d9, \ud68c\uc804, \ud06c\uae30\uc870\uc815\uacfc \uac19\uc740 Transform\uc744 \uc704\ud574\uc11c \ud544\uc694\ud55c\ub370, model\uc758 Transform \uc18d\uc131\uc5d0 \ubc14\ub85c \uc774 transformGroup\ub97c \ub300\uc785\ud574\uc8fc\uba74 \uc6b0\ub9ac\uac00 \uc6d0\ud558\ub294 \ud68c\uc804\uc774 \uc774\ub8e8\uc5b4\uc9c4\ub2e4.<\/p>\n<p>\uc774\uc81c \uc55e\uc5d0\uc11c \uad6c\uc131\ud55c UI\uc758 \uc774\ubca4\ud2b8\ub97c \ud558\ub098 \ud558\ub098 \uad6c\ud604\ud574 \ubcf4\ub3c4\ub85d \ud558\uc790. \uba3c\uc800 Cube \ubc84\ud2bc\uc744 \ub20c\ub800\uc744 \uacbd\uc6b0 \uc2e4\ud589\ub418\ub294 \ucf54\ub4dc\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<pre>private void ClickCubeButton(object Sender, RoutedEventArgs e)\r\n{\r\n     if (model != null) return;\r\n\r\n     Model3DGroup cube = new Model3DGroup();\r\n\r\n     Point3D p0 = new Point3D(-1, -1, -1);\r\n     Point3D p1 = new Point3D(1, -1, -1);\r\n     Point3D p2 = new Point3D(1, -1, 1);\r\n     Point3D p3 = new Point3D(-1, -1, 1);\r\n     Point3D p4 = new Point3D(-1, 1, -1);\r\n     Point3D p5 = new Point3D(1, 1, -1);\r\n     Point3D p6 = new Point3D(1, 1, 1);\r\n     Point3D p7 = new Point3D(-1, 1, 1);\r\n\r\n     \/\/front side triangles\r\n     cube.Children.Add(CreateTriangleModel(p3, p2, p6));\r\n     cube.Children.Add(CreateTriangleModel(p3, p6, p7));\r\n     \/\/right side triangles\r\n     cube.Children.Add(CreateTriangleModel(p2, p1, p5));\r\n     cube.Children.Add(CreateTriangleModel(p2, p5, p6));\r\n     \/\/back side triangles\r\n     cube.Children.Add(CreateTriangleModel(p1, p0, p4));\r\n     cube.Children.Add(CreateTriangleModel(p1, p4, p5));\r\n     \/\/left side triangles\r\n     cube.Children.Add(CreateTriangleModel(p0, p3, p7));\r\n     cube.Children.Add(CreateTriangleModel(p0, p7, p4));\r\n     \/\/top side triangles\r\n     cube.Children.Add(CreateTriangleModel(p7, p6, p5));\r\n     cube.Children.Add(CreateTriangleModel(p7, p5, p4));\r\n     \/\/bottom side triangles\r\n     cube.Children.Add(CreateTriangleModel(p2, p3, p0));\r\n     cube.Children.Add(CreateTriangleModel(p2, p0, p1));\r\n\r\n     model = new ModelVisual3D();\r\n     model.Content = cube;\r\n\r\n     mainViewport.Children.Add(model);\r\n}<\/pre>\n<p>\uc815\uc721\uba74\uccb4\ub294 \ubaa8\ub450 8\uac1c\uc758 Vertex\ub85c \uc774\ub8e8\uc5b4\uc838 \uc788\uc73c\uba70 \ucd1d 6\uac1c\uc758 \uc0ac\uac01\ud615\uc758 \uba74\uc73c\ub85c \uc774\ub8e8\uc5b4\uc838 \uc788\ub2e4. 3D\uc5d0\uc11c\ub294 \uba74\uc744 \uc0bc\uac01\ud615\uc73c\ub85c \ud45c\ud604\ud558\ubbc0\ub85c, \uacb0\uacfc\uc801\uc73c\ub85c \ucd1d 12\uac1c\uc758 \uc0bc\uac01\ud615\uc758 \uba74\uc73c\ub85c \uc774\ub8e8\uc5b4\uc9c4\ub2e4. \uc704\uc758 \ucf54\ub4dc\uc5d0\uc11c Point3D\ub97c \uc774\uc6a9\ud574 \ucd1d 8\uac1c\uc758 Vertex\ub97c \uad6c\uc131\ud558\uace0 Model3DGroup \ud074\ub798\uc2a4\uc758 \ubcc0\uc218\uc778 cube\uc5d0 \uc0bc\uac01\ud615 \uba74\uc744 \uad6c\uc131\ud574\uc11c cube\uc758 Children \uc18d\uc131\uc5d0 \ub123\uc5b4\uc900\ub2e4. \uc0bc\uac01\ud615 \uba74\uc744 \uad6c\uc131\ud558\uae30 \uc704\ud574\uc11c\ub294 3\uac1c\uc758 Vertex\uac00 \ud544\uc694\ud55c\ub370, \uc774\ub807\uac8c \uc0bc\uac01\ud615 \uba74\uc744 \uad6c\uc131\ud558\ub294 \ud568\uc218\ub97c \ub530\ub85c \ub9cc\ub4e4\uc5c8\ub2e4. \uadf8 \ud568\uc218\ub294 \uc544\ub798\uc758 CreateTriangleModel\uc774\ub2e4.<\/p>\n<pre>private Model3DGroup CreateTriangleModel(Point3D p0, Point3D p1, Point3D p2)\r\n{\r\n    MeshGeometry3D mesh = new MeshGeometry3D();\r\n        \r\n    mesh.Positions.Add(p0);\r\n    mesh.Positions.Add(p1);\r\n    mesh.Positions.Add(p2);\r\n\r\n    mesh.TriangleIndices.Add(0);\r\n    mesh.TriangleIndices.Add(1);\r\n    mesh.TriangleIndices.Add(2);\r\n\r\n    Vector3D normal = CalculateNormal(p0, p1, p2);\r\n            \r\n    mesh.Normals.Add(normal);\r\n    mesh.Normals.Add(normal);\r\n    mesh.Normals.Add(normal);\r\n\r\n    Material material = new DiffuseMaterial(new SolidColorBrush(Colors.Blue));\r\n    GeometryModel3D model = new GeometryModel3D(mesh, material);\r\n            \r\n    Model3DGroup group = new Model3DGroup();\r\n    group.Children.Add(model);\r\n            \r\n    return group;\r\n}<\/pre>\n<p>CreateTriangleModel\uc740 \uc138\uac1c\uc758 Vertex\ub97c \ubc1b\uc544\uc11c MeshGeometry3D\ub97c \ub9cc\ub4e4\uc5b4\uc8fc\uac8c \ub418\ub294\ub370, \uc774 MeshGeometry3D\ub294 \uc55e\uc11c \uc124\uba85\ud588\ub358 \uac83\ucc98\ub7fc Vertex\uc640 \uc774 Vertex\uc758 \uc778\ub371\uc2a4\ub85c\ubd80\ud130 \uc0bc\uac01\ud615\uc758 \uba74\uc744 \uad6c\uc131\ud558\uae30 \uc704\ud55c Vertex Inddex \uc9c0\uc815, \uadf8\ub9ac\uace0 \ube5b\uc5d0 \ub300\ud55c \uc0ac\uc2e4\uc801\uc778 \uc7ac\uc9c8 \ub80c\ub354\ub9c1\uc744 \uc704\ud55c \ubc95\uc120 \ubca1\ud130\ub97c \uac16\ub294\ub2e4. \uadf8\ub9ac\uace0 \ud30c\ub791\uc0c9\uc758 \uc7ac\uc9c8\uc744 \ub9cc\ub4e4\uae30 \uc704\ud574 Material \ud074\ub798\uc2a4\ub97c \uc0ac\uc6a9\ud558\uc600\uace0, \uc774\ub807\uac8c \ub9cc\ub4e4\uc5b4\uc9c4 \ub450\uac1c\uc758 MeshGeometry3D\uc640 Material\uc744 \ubb36\uc5b4\uc11c GeometryModel3D \ud074\ub798\uc2a4\uc758 \uc778\uc2a4\ud134\uc2a4\ub97c \ub9cc\ub4e4\uc5b4\uc5c8\ub2e4. \uadf8\ub9ac\uace0 \ucd5c\uc885\uc801\uc73c\ub85c Model3DGroup\uc744 \uc0dd\uc131\ud574 GeometryModel3D\uc758 \uc778\uc2a4\ud134\uc2a4\ub97c \uc790\uc2dd\uc73c\ub85c \ucd94\uac00\ud574\uc900\ud6c4 \ubc18\ud658\ud574\uc8fc\uac8c \ub418\uba74 \ud30c\ub791\uc0c9\uc758 \uc0bc\uac01\ud615\uba74\uc774 \ud558\ub098 \ub9cc\ub4e4\uc5b4\uc9c0\uac8c\ub41c\ub2e4. \uc5ec\uae30\uc11c \ube5b\uc5d0 \ub300\ud55c \uc0ac\uc2e4\uc801\uc778 \ub80c\ub354\ub9c1\uc744 \uc704\ud55c \ubc95\uc120 \ubca1\ud130\ub97c \ub9cc\ub4e4\uae30 \uc704\ud574 \ub610 \ud558\ub098\uc758 \ud568\uc218\ub97c \ub9cc\ub4e4\uc5c8\ub294\ub370 \uc544\ub798\uc640 \uac19\ub2e4.<\/p>\n<pre>private Vector3D CalculateNormal(Point3D p0, Point3D p1, Point3D p2)\r\n{\r\n    Vector3D v0 = new Vector3D(p1.X - p0.X, p1.Y - p0.Y, p1.Z - p0.Z);\r\n    Vector3D v1 = new Vector3D(p2.X - p1.X, p2.Y - p1.Y, p2.Z - p1.Z);\r\n\r\n    return Vector3D.CrossProduct(v0, v1);\r\n}<\/pre>\n<p>\ubc95\uc120\ubca1\ud130\ub294 \uba74\uc5d0 \ub300\ud55c \uc218\uc9c1\ubca1\ud130\uc774\ub2e4. \ubca1\ud130\uc758 \uc678\uc801\uc744 \uc774\uc6a9\ud558\uc5ec \uad6c\ud560 \uc218 \uc788\uc73c\uba70 \uc704\uc758 \ucf54\ub4dc\uac00 \uadf8 \uc678\uc801\uc744 \uad6c\ud604\ud558\uace0 \uc788\ub2e4.<\/p>\n<p>\uc5ec\uae30\uac00\uc9c0 \ucf54\ub529\uc744 \ud558\uace0 \uc2e4\ud589\ud55c\ud6c4, Cube \ubc84\ud2bc\uc744 \ub20c\ub7ec\ubcf4\uba74 \ud654\uba74\uc0c1\uc5d0 Mesh\uac00 \ub098\ud0c0\ub098\uac8c \ub41c\ub2e4. \uc774\uc81c X, Y, Z \ucd95\uc5d0 \ub300\ud55c \ud68c\uc804 \ubc84\ud2bc\uc744 \ub20c\ub800\uc744 \uacbd\uc6b0\uc5d0 \ub300\ud55c \uc774\ubca4\ud2b8\ub97c \uad6c\ud604\ud574\ubcf4\uc790. \uba3c\uc800 RotateX \ubc84\ud2bc\uc5d0 \ub300\ud55c \uad6c\ud604\ubd80\ub294 \uc544\ub798\uc640 \uac19\ub2e4.<\/p>\n<pre>private void ClickRotateXButton(object Sender, RoutedEventArgs e) \r\n{\r\n    AxisAngleRotation3D rotation = new AxisAngleRotation3D(\r\n        new Vector3D(1, 0, 0), 5);\r\n\r\n    RotateTransform3D rt = new RotateTransform3D(rotation);\r\n            \r\n    transformGroup.Children.Add(rt);\r\n\r\n    model.Transform = transformGroup;\r\n}<\/pre>\n<p>X\ucd95\uc744 \uae30\uc900\uc73c\ub85c \ud558\ub294 \ud68c\uc804\uc5d0 \ub300\ud55c \u00a0\uc815\ubcf4\ub97c \ub9cc\ub4e4\uae30 \uc704\ud574\uc11c AxisAngleRotation3D \ud074\ub798\uc2a4\ub97c \uc0ac\uc6a9\ud558\uc600\ub2e4. X\ucd95\uc774\ubbc0\ub85c (1,0,0)\uc640 5\ub3c4 \ub9cc\ud07c\uc758 \ud68c\uc804\uac12\uc744 \uc778\uc790\ub85c \uc8fc\uc5b4 \uc0dd\uc131\uc744 \ud558\uc600\ub2e4. (\ucc38\uace0\ub85c \ud68c\uc804\uc740 \ucd95\uc5d0 \ub300\ud55c \ud68c\uc804\uacfc \ucffc\ud130\ub2c8\uc5b8\uc5d0 \uc758\ud55c \ud68c\uc804\uc774 \uc788\uc73c\uba70 WPF\ub294 \ub458 \ubaa8\ub450\ub97c \uc9c0\uc6d0\ud55c\ub2e4) \uc774\uc81c AxisAngleRotation3D\ub97c \uc774\uc6a9\ud574 \uc2e4\uc81c \ud68c\uc804 Matrix(\ud589\ub82c)\uc744 \ub9cc\ub4e4\uae30 \uc704\ud574 RotateTransform3D \ud074\ub798\uc2a4\ub97c \uc0dd\uc0c1\ud558\uba70, \uc774\ub807\uac8c \uc0dd\uc131\ub41c RotateTransform3D\ub97c \uc55e\uc11c Window1 \ud074\ub798\uc2a4\uc758 \ub9f4\ubc84\ub85c \ucd94\uac00\ud55c Transform3DGroup \ud074\ub798\uc2a4 \ud0c0\uc785\uc778 transformGroup\uc758 Children\uc73c\ub85c \ucd94\uac00\ud55c\ub2e4. \uc790\uc2dd\uc73c\ub85c\uc368 \ucd94\uac00\ud558\ub294 \uc774\uc720\ub294 \ud68c\uc804\ubfd0\ub9cc\uc774 \uc544\ub2c8\ub77c \uc774\ub3d9\uc774\ub098 \ud06c\uae30\uc870\uc815 \ub4f1\uacfc \uac19\uc740 \uc5ec\ub7ec\uac1c\uc758 Transform\uc744 \ub2e4\uc911\uc73c\ub85c \uc801\uc6a9\ud560 \uc218 \uc788\ub3c4\ub85d \ud558\uae30 \uc704\ud574\uc11c\uc774\ub2e4. \uacb0\uad6d \uc774\ub807\uac8c \uc124\uc815\ub41c transformGroup\ub97c model\uc758 Transform \uc18d\uc131\uc5d0 \ub123\uc5b4\uc8fc\uac8c \ub418\uba74 \ubc84\ud2bc\uc744 \ub204\ub97c\ub54c\ub9c8\ub2e4 X\ucd95\uc73c\ub85c \ud68c\uc804\uc774 \uc77c\uc5b4\ub098\uac8c \ub41c\ub2e4. Y\ucd95\uacfc Z\ucd95\uc5d0 \ub300\ud55c \ud68c\uc804\uc740 \uadf8 \ucd95\ub9cc \ub2e4\ub974\uace0 \ub098\uba38\uc9c0\ub294 \ub3d9\uc77c\ud558\ubbc0\ub85c \uc124\uba85\uc740 \uc0dd\ub7b5\ud55c\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uc774\uc81c \uc55e\uc5d0\uc11c XAML\ub97c \ud1b5\ud574 \ub9cc\ub4e4\uc5b4 \ub193\uc740 UI\uc5d0 \ub300\ud55c \ub85c\uc9c1\uc744 CS(C# \uc18c\uc2a4) \ucf54\ub4dc\ub85c \uc791\uc131\ud574 \ubcf4\ub294 \uac83\uc744 \uc815\ub9ac\ud574\ubcf4\uc790. \ucf54\ub4dc\ub97c \uc791\uc131\ud558\uae30\uc5d0 \uc55e\uc11c \uc774\ud574\ud558\uace0 \ub118\uc5b4\uac00\uc57c \ud560 \uac83\uc740 WPF\uc758 3D \ubd80\ubd84\uc744 \uad6c\uc131\ud558\uace0 \uc788\ub294 \ud074\ub798\uc2a4\uc774\ub2e4. \uc774 \ud074\ub798\uc2a4\ub294 System.Windows.Media.Media3D \ub124\uc784\uc2a4\ud398\uc774\uc2a4\uc5d0 \uc704\uce58\ud558\uba70 \uc774 \uae00\uc5d0\uc11c \uc0ac\uc6a9\ud558\ub294 \uc8fc\uc694 \ud074\ub798\uc2a4\uc758 \uad00\uacc4\ub3c4\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4. \uac01 \ud074\ub798\uc2a4\uc758 \ubaa9\uc801(\uc6a9\ub3c4)\uc744 \uac04\ub2e8\uc774 \uc815\ub9ac\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4. MeshGeometry3D\ub294 Mesh\uc758 Vertex, Normal, Vertex Index, &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=309\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Dip2K&#8217;s WPF 3D \uc785\ubb38 (2\/3)&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20],"tags":[19],"class_list":["post-309","post","type-post","status-publish","format-standard","hentry","category-wpf","tag-wpf-3d"],"_links":{"self":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/309","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=309"}],"version-history":[{"count":2,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/309\/revisions"}],"predecessor-version":[{"id":3644,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/309\/revisions\/3644"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=309"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=309"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=309"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}