ColladaとR
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
目次
#contents
*目的 [#scd22263]
Colladaは多くの3Dアプリケーションで作成できる3次元モデリ...
GoogleEarthのKMLフォーマットと組み合わせることで、GoogleE...
また、ColladaはKMLと同様XMLファイルなのでXMLパッケージを...
根気がない方はGoogle3DギャラリーからColladaデータを仕入れ...
仕入れたColladaデータを種にして、KMLを作成することで、Goo...
注)この方法はTMEを参考にしています。http://thematicmappi...
*コメント [#fdaf6383]
#comment(below)
- XMLパッケージでColladaデータ(***.dae)を変更を追加。これ...
- XMLパッケージでdoc.kmlを変更を追加。簡単でしょ? -- [[o...
- おっ!考えてますね。平面や空中に3Dグラフ表示ってのもあ...
- GEの主題図表示は、一度に世界全体を見ることができないこ...
- ごくろうさまです -- &new{2009-05-03 (日) 20:47:54};
*本家および参考 [#a8c27f11]
-http://www.khronos.org/collada/~
-https://collada.org/mediawiki/index.php/Main_Page~
-スキーマ:http://www.google.co.jp/url?sa=t&source=web&ct...
-[[XMLパッケージ覚書]]~
*サンプルデータ [#a232a5a8]
Google3Dギャラリー:http://www.google.com/intl/ja/sketchu...
**Cube [#kb28f286]
http://sketchup.google.com/3dwarehouse/details?mid=275448...
~
Cubeをダウンロードした後、zipを解凍する。(このデータは基...
フォルダ名:Cube
doc.kml :kmlデータ
models - Untitled.dae :Colladaデータ本体。拡張子は.dae
textures.txt :テクスチャーのパス
~
doc.kmlをダブルクリックして、GoogleEarthを起動させると立...
#ref(ColladaとR/cube.png,30%)~
doc.kml~
<?xml version='1.0' encoding='UTF-8'?>
<kml xmlns='http://earth.google.com/kml/2.1'>
<Folder>
<name>model</name>
<description><![CDATA[Created with <a href="http://sk...
<DocumentSource>SketchUp</DocumentSource>
<visibility>1</visibility>
<LookAt>
<heading>262.191</heading>
<tilt>44.1136</tilt>
<latitude>40.01699238066453</latitude>
<longitude>-105.28299564475</longitude>
<range>24.53937342688344</range>
<altitude>19.53467884911257</altitude>
</LookAt>
<Folder>
<name>Tour</name>
<Placemark>
<name><![CDATA[Camera]]></name>
<visibility>1</visibility>
<LookAt>
<heading>262.191</heading>
<tilt>44.1136</tilt>
<latitude>40.01699238066453</latitude>
<longitude>-105.28299564475</longitude>
<range>24.53937342688344</range>
<altitude>19.53467884911257</altitude>
</LookAt>
</Placemark>
</Folder>
<Placemark>
<name>Model</name>
<description><![CDATA[]]></description>
<Style id='default'>
</Style>
<Model>
<altitudeMode>relativeToGround</altitudeMode>
<Location>
<longitude>-105.283000000000</longitude>
<latitude>40.017000000000</latitude>
<altitude>0.000000000000</altitude>
</Location>
<Orientation>
<heading>0</heading>
<tilt>0</tilt>
<roll>0</roll>
</Orientation>
<Scale>
<x>1.0</x>
<y>1.0</y>
<z>1.0</z>
</Scale>
<Link>
<href>models/Untitled.dae</href>
</Link>
</Model>
</Placemark></Folder>
</kml>
モデルの大きさをコントロールしているのは、
<Scale>
<x>1.0</x>
<y>1.0</y>
<z>1.0</z>
</Scale>
の部分なので、この部分を調整することでモデルを変形させる...
例えば、<z>10.0</z>をとすることで、モデルに高さを与えるこ...
#ref(ColladaとR/cube2.png,30%)~
モデルのデータへのリンクは~
<Link>
<href>models/Untitled.dae</href>
</Link>
で、~
モデルの位置は
<Location>
<longitude>-105.283000000000</longitude>
<latitude>40.017000000000</latitude>
<altitude>0.000000000000</altitude>
</Location>
で表されている。ここを変更することで、任意の位置にモデル...
#ref(ColladaとR/cube3.png,30%)~
**Earth(テクスチャー付きモデル) [#jdac5075]
http://sketchup.google.com/3dwarehouse/details?mid=e28ae2...
フォルダ名:Earth
doc.kml :kmlデータ
models - Earth.dae :Colladaデータ本体
images - texture0.jpg :テクスチャー画像本体
textures.txt :テクスチャーのパス
~
doc.kmlの構造は、Cubeと同じ。imagesフォルダ内にテクスチャ...
~
textures.txt
<../images/texture0.jpg> <../images/texture0.jpg>
#ref(ColladaとR/earth.PNG,30%)~
*XMLパッケージでdoc.kmlを変更 [#o44738f4]
注)R2.9.0 XML1.96で実行。R2.9.0 XML2.3だと ' がうまく処...
library(XML)
doc<-xmlTreeParse("c:/Cube/doc.kml")
x<-xmlRoot(doc)
nameの取り出し
> x[["Folder"]][["name"]]
<name>Untitled</name>
LookAtの取り出し
> x[["Folder"]][["LookAt"]]
<LookAt>
<heading>262.191</heading>
<tilt>44.1136</tilt>
<latitude>40.01701377579173</latitude>
<longitude>-105.2827974289775</longitude>
<range>21.03339538452086</range>
<altitude>19.53467884911257</altitude>
</LookAt>
カメラ位置
> x[["Folder"]][["Folder"]][["Placemark"]][["LookAt"]]
<LookAt>
<heading>262.191</heading>
<tilt>44.1136</tilt>
<latitude>40.01701377579173</latitude>
<longitude>-105.2827974289775</longitude>
<range>21.03339538452086</range>
<altitude>19.53467884911257</altitude>
</LookAt>
>
Locationの取り出し
> x[["Folder"]][["Placemark"]][["Model"]][["Location"]]
<Location>
<longitude>-105.283000000000</longitude>
<latitude>40.017000000000</latitude>
<altitude>0.000000000000</altitude>
</Location>
>
Scaleの取り出し
> x[["Folder"]][["Placemark"]][["Model"]][["Scale"]]
<Scale>
<x>1.0</x>
<y>1.0</y>
<z>1.0</z>
</Scale>
>
モデルの高さを10倍にしてノードに書き込む。書き込む時はxml...
> x[["Folder"]][["Placemark"]][["Model"]][["Scale"]][["z...
> x[["Folder"]][["Placemark"]][["Model"]][["Scale"]][["z...
[1] "<z>10.0</z>"
保存
>saveXML(x,"c:/Cube/doc2.kml",prefix = '<?xml version="1...
#ref(ColladaとR/cube2.png,30%)~
Earthモデルでこんなこともできる
#ref(ColladaとR/earth2.PNG,30%)~
*XMLパッケージでColladaデータ(***.dae)を変更 [#c3c4de1f]
次にColladaデータを変更してみよう。変更場所は、主に色関係...
<?xml version="1.0" encoding="utf-8"?>
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASc...
〜中略〜
<library_effects>
<effect id="FrontColorNoCulling-effect" name="Front...
<profile_COMMON>
<technique sid="COMMON">
<phong>
<emission>
<color>0.000000 0.000000 0.000000 1<...
</emission>
<ambient>
<color>0.000000 0.000000 0.000000 1<...
</ambient>
<diffuse>
<color>1.000000 1.000000 1.000000 1<...
</diffuse>
<specular>
<color>0.330000 0.330000 0.330000 1<...
</specular>
<shininess>
<float>20.000000</float>
</shininess>
<reflectivity>
<float>0.100000</float>
</reflectivity>
<transparent>
<color>1 1 1 1</color>
</transparent>
<transparency>
<float>0.000000</float>
</transparency>
</phong>
</technique>
<extra>
<technique profile="GOOGLEEARTH">
<double_sided>1</double_sided>
</technique>
</extra>
</profile_COMMON>
</effect>
<effect id="ForegroundColor-effect" name="Foregroun...
<profile_COMMON>
<technique sid="COMMON">
<phong>
<emission>
<color>0.000000 0.000000 0.000000 1<...
</emission>
<ambient>
<color>0.000000 0.000000 0.000000 1<...
</ambient>
<diffuse>
<color>0.000000 0.000000 0.000000 1<...
</diffuse>
<specular>
<color>0.330000 0.330000 0.330000 1<...
</specular>
<shininess>
<float>20.000000</float>
</shininess>
<reflectivity>
<float>0.100000</float>
</reflectivity>
<transparent>
<color>1 1 1 1</color>
</transparent>
<transparency>
<float>0.000000</float>
</transparency>
</phong>
</technique>
<extra>
<technique profile="GOOGLEEARTH">
<double_sided>1</double_sided>
</technique>
</extra>
</profile_COMMON>
</effect>
</library_effects>
〜中略〜
<scene>
<instance_visual_scene url="#SketchUpScene"/>
</scene>
</COLLADA>
色関係のタグは2種類ある。ここでは最初のタグだけ変えてみ...
で、プログラムは~
library(XML)
doc<-xmlTreeParse("c:/Cube/models/Untitled.dae")
x<-xmlRoot(doc)
各要素の値を取り出す
> x[["library_effects"]][[1]][[1]][[1]][["phong"]][["emi...
<color>0.000000 0.000000 0.000000 1</color>
> x[["library_effects"]][[1]][[1]][[1]][["phong"]][["amb...
<color>0.000000 0.000000 0.000000 1</color>
> x[["library_effects"]][[1]][[1]][[1]][["phong"]][["dif...
<color>1.000000 1.000000 1.000000 1</color>
> x[["library_effects"]][[1]][[1]][[1]][["phong"]][["tra...
<float>0.000000</float>
値の変更(emissionを赤に)
> x[["library_effects"]][[1]][[1]][[1]][["phong"]][["emi...
> saveXML(x,"c:/Cube/models/Untitled.dae",prefix = '<?xm...
#ref(ColladaとR/cube4.PNG,30%)~
**Colladaのタグ<phong>要素 [#mf8517f8]
Colladaのスキーマ参照
<phong>要素の子要素
<emission>このオブジェクトから放射される光源の量
<ambient>このオブジェクトから放射される環境光の量
<diffuse>このオブジェクトから反射される拡散光の量
<specular>このオブジェクトから反射される鏡面反射光の量
<transparency>反射されたカラーに追加する完全鏡面反射の量...
終了行:
目次
#contents
*目的 [#scd22263]
Colladaは多くの3Dアプリケーションで作成できる3次元モデリ...
GoogleEarthのKMLフォーマットと組み合わせることで、GoogleE...
また、ColladaはKMLと同様XMLファイルなのでXMLパッケージを...
根気がない方はGoogle3DギャラリーからColladaデータを仕入れ...
仕入れたColladaデータを種にして、KMLを作成することで、Goo...
注)この方法はTMEを参考にしています。http://thematicmappi...
*コメント [#fdaf6383]
#comment(below)
- XMLパッケージでColladaデータ(***.dae)を変更を追加。これ...
- XMLパッケージでdoc.kmlを変更を追加。簡単でしょ? -- [[o...
- おっ!考えてますね。平面や空中に3Dグラフ表示ってのもあ...
- GEの主題図表示は、一度に世界全体を見ることができないこ...
- ごくろうさまです -- &new{2009-05-03 (日) 20:47:54};
*本家および参考 [#a8c27f11]
-http://www.khronos.org/collada/~
-https://collada.org/mediawiki/index.php/Main_Page~
-スキーマ:http://www.google.co.jp/url?sa=t&source=web&ct...
-[[XMLパッケージ覚書]]~
*サンプルデータ [#a232a5a8]
Google3Dギャラリー:http://www.google.com/intl/ja/sketchu...
**Cube [#kb28f286]
http://sketchup.google.com/3dwarehouse/details?mid=275448...
~
Cubeをダウンロードした後、zipを解凍する。(このデータは基...
フォルダ名:Cube
doc.kml :kmlデータ
models - Untitled.dae :Colladaデータ本体。拡張子は.dae
textures.txt :テクスチャーのパス
~
doc.kmlをダブルクリックして、GoogleEarthを起動させると立...
#ref(ColladaとR/cube.png,30%)~
doc.kml~
<?xml version='1.0' encoding='UTF-8'?>
<kml xmlns='http://earth.google.com/kml/2.1'>
<Folder>
<name>model</name>
<description><![CDATA[Created with <a href="http://sk...
<DocumentSource>SketchUp</DocumentSource>
<visibility>1</visibility>
<LookAt>
<heading>262.191</heading>
<tilt>44.1136</tilt>
<latitude>40.01699238066453</latitude>
<longitude>-105.28299564475</longitude>
<range>24.53937342688344</range>
<altitude>19.53467884911257</altitude>
</LookAt>
<Folder>
<name>Tour</name>
<Placemark>
<name><![CDATA[Camera]]></name>
<visibility>1</visibility>
<LookAt>
<heading>262.191</heading>
<tilt>44.1136</tilt>
<latitude>40.01699238066453</latitude>
<longitude>-105.28299564475</longitude>
<range>24.53937342688344</range>
<altitude>19.53467884911257</altitude>
</LookAt>
</Placemark>
</Folder>
<Placemark>
<name>Model</name>
<description><![CDATA[]]></description>
<Style id='default'>
</Style>
<Model>
<altitudeMode>relativeToGround</altitudeMode>
<Location>
<longitude>-105.283000000000</longitude>
<latitude>40.017000000000</latitude>
<altitude>0.000000000000</altitude>
</Location>
<Orientation>
<heading>0</heading>
<tilt>0</tilt>
<roll>0</roll>
</Orientation>
<Scale>
<x>1.0</x>
<y>1.0</y>
<z>1.0</z>
</Scale>
<Link>
<href>models/Untitled.dae</href>
</Link>
</Model>
</Placemark></Folder>
</kml>
モデルの大きさをコントロールしているのは、
<Scale>
<x>1.0</x>
<y>1.0</y>
<z>1.0</z>
</Scale>
の部分なので、この部分を調整することでモデルを変形させる...
例えば、<z>10.0</z>をとすることで、モデルに高さを与えるこ...
#ref(ColladaとR/cube2.png,30%)~
モデルのデータへのリンクは~
<Link>
<href>models/Untitled.dae</href>
</Link>
で、~
モデルの位置は
<Location>
<longitude>-105.283000000000</longitude>
<latitude>40.017000000000</latitude>
<altitude>0.000000000000</altitude>
</Location>
で表されている。ここを変更することで、任意の位置にモデル...
#ref(ColladaとR/cube3.png,30%)~
**Earth(テクスチャー付きモデル) [#jdac5075]
http://sketchup.google.com/3dwarehouse/details?mid=e28ae2...
フォルダ名:Earth
doc.kml :kmlデータ
models - Earth.dae :Colladaデータ本体
images - texture0.jpg :テクスチャー画像本体
textures.txt :テクスチャーのパス
~
doc.kmlの構造は、Cubeと同じ。imagesフォルダ内にテクスチャ...
~
textures.txt
<../images/texture0.jpg> <../images/texture0.jpg>
#ref(ColladaとR/earth.PNG,30%)~
*XMLパッケージでdoc.kmlを変更 [#o44738f4]
注)R2.9.0 XML1.96で実行。R2.9.0 XML2.3だと ' がうまく処...
library(XML)
doc<-xmlTreeParse("c:/Cube/doc.kml")
x<-xmlRoot(doc)
nameの取り出し
> x[["Folder"]][["name"]]
<name>Untitled</name>
LookAtの取り出し
> x[["Folder"]][["LookAt"]]
<LookAt>
<heading>262.191</heading>
<tilt>44.1136</tilt>
<latitude>40.01701377579173</latitude>
<longitude>-105.2827974289775</longitude>
<range>21.03339538452086</range>
<altitude>19.53467884911257</altitude>
</LookAt>
カメラ位置
> x[["Folder"]][["Folder"]][["Placemark"]][["LookAt"]]
<LookAt>
<heading>262.191</heading>
<tilt>44.1136</tilt>
<latitude>40.01701377579173</latitude>
<longitude>-105.2827974289775</longitude>
<range>21.03339538452086</range>
<altitude>19.53467884911257</altitude>
</LookAt>
>
Locationの取り出し
> x[["Folder"]][["Placemark"]][["Model"]][["Location"]]
<Location>
<longitude>-105.283000000000</longitude>
<latitude>40.017000000000</latitude>
<altitude>0.000000000000</altitude>
</Location>
>
Scaleの取り出し
> x[["Folder"]][["Placemark"]][["Model"]][["Scale"]]
<Scale>
<x>1.0</x>
<y>1.0</y>
<z>1.0</z>
</Scale>
>
モデルの高さを10倍にしてノードに書き込む。書き込む時はxml...
> x[["Folder"]][["Placemark"]][["Model"]][["Scale"]][["z...
> x[["Folder"]][["Placemark"]][["Model"]][["Scale"]][["z...
[1] "<z>10.0</z>"
保存
>saveXML(x,"c:/Cube/doc2.kml",prefix = '<?xml version="1...
#ref(ColladaとR/cube2.png,30%)~
Earthモデルでこんなこともできる
#ref(ColladaとR/earth2.PNG,30%)~
*XMLパッケージでColladaデータ(***.dae)を変更 [#c3c4de1f]
次にColladaデータを変更してみよう。変更場所は、主に色関係...
<?xml version="1.0" encoding="utf-8"?>
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASc...
〜中略〜
<library_effects>
<effect id="FrontColorNoCulling-effect" name="Front...
<profile_COMMON>
<technique sid="COMMON">
<phong>
<emission>
<color>0.000000 0.000000 0.000000 1<...
</emission>
<ambient>
<color>0.000000 0.000000 0.000000 1<...
</ambient>
<diffuse>
<color>1.000000 1.000000 1.000000 1<...
</diffuse>
<specular>
<color>0.330000 0.330000 0.330000 1<...
</specular>
<shininess>
<float>20.000000</float>
</shininess>
<reflectivity>
<float>0.100000</float>
</reflectivity>
<transparent>
<color>1 1 1 1</color>
</transparent>
<transparency>
<float>0.000000</float>
</transparency>
</phong>
</technique>
<extra>
<technique profile="GOOGLEEARTH">
<double_sided>1</double_sided>
</technique>
</extra>
</profile_COMMON>
</effect>
<effect id="ForegroundColor-effect" name="Foregroun...
<profile_COMMON>
<technique sid="COMMON">
<phong>
<emission>
<color>0.000000 0.000000 0.000000 1<...
</emission>
<ambient>
<color>0.000000 0.000000 0.000000 1<...
</ambient>
<diffuse>
<color>0.000000 0.000000 0.000000 1<...
</diffuse>
<specular>
<color>0.330000 0.330000 0.330000 1<...
</specular>
<shininess>
<float>20.000000</float>
</shininess>
<reflectivity>
<float>0.100000</float>
</reflectivity>
<transparent>
<color>1 1 1 1</color>
</transparent>
<transparency>
<float>0.000000</float>
</transparency>
</phong>
</technique>
<extra>
<technique profile="GOOGLEEARTH">
<double_sided>1</double_sided>
</technique>
</extra>
</profile_COMMON>
</effect>
</library_effects>
〜中略〜
<scene>
<instance_visual_scene url="#SketchUpScene"/>
</scene>
</COLLADA>
色関係のタグは2種類ある。ここでは最初のタグだけ変えてみ...
で、プログラムは~
library(XML)
doc<-xmlTreeParse("c:/Cube/models/Untitled.dae")
x<-xmlRoot(doc)
各要素の値を取り出す
> x[["library_effects"]][[1]][[1]][[1]][["phong"]][["emi...
<color>0.000000 0.000000 0.000000 1</color>
> x[["library_effects"]][[1]][[1]][[1]][["phong"]][["amb...
<color>0.000000 0.000000 0.000000 1</color>
> x[["library_effects"]][[1]][[1]][[1]][["phong"]][["dif...
<color>1.000000 1.000000 1.000000 1</color>
> x[["library_effects"]][[1]][[1]][[1]][["phong"]][["tra...
<float>0.000000</float>
値の変更(emissionを赤に)
> x[["library_effects"]][[1]][[1]][[1]][["phong"]][["emi...
> saveXML(x,"c:/Cube/models/Untitled.dae",prefix = '<?xm...
#ref(ColladaとR/cube4.PNG,30%)~
**Colladaのタグ<phong>要素 [#mf8517f8]
Colladaのスキーマ参照
<phong>要素の子要素
<emission>このオブジェクトから放射される光源の量
<ambient>このオブジェクトから放射される環境光の量
<diffuse>このオブジェクトから反射される拡散光の量
<specular>このオブジェクトから反射される鏡面反射光の量
<transparency>反射されたカラーに追加する完全鏡面反射の量...
ページ名: