teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

ソースコードを追加しました。

2016/05/11 11:30

投稿

okutann0529
okutann0529

スコア10

title CHANGED
File without changes
body CHANGED
@@ -40,4 +40,81 @@
40
40
 
41
41
  ###
42
42
  コードは一部本来のものとは異なっております。
43
- 非常に困っておりまして、ご回答いただけるとありがたいです。
43
+ 非常に困っておりまして、ご回答いただけるとありがたいです。
44
+
45
+ ###追記
46
+ three.jsを用いてjson形式で書きだしたデータをファイル名で読み出して、
47
+ 取得データからメッシュを返すクラスを作りました。
48
+
49
+ C_Model = function() {
50
+ //ジオメトリを保持
51
+ this.Geometory = null;
52
+ //マテリアルを保持
53
+ this.Material = null;
54
+ //パーツ読み込み完了フラグ
55
+ this.LoadFlag = false;
56
+ //パーツファイル名
57
+ this.JSONfilename = false;
58
+
59
+ };
60
+
61
+ //保持しているジオメトリとマテリアルでメッシュを作って返す。
62
+ C_Model.prototype.Get_Model = function () {
63
+ var tmp = new THREE.Mesh(this.Geometory, this.Material);
64
+ return tmp;
65
+ };
66
+
67
+ //指定されたファイル名に基づいて、ジオメトリとマテリアルを取得
68
+ C_Model.prototype.Load_Model = function (JSONfilename) {
69
+ this.JSONfilename = JSONfilename;
70
+ var loader = new THREE.JSONLoader();
71
+ var obj = this;
72
+ var func = function (Geometory, Material) {
73
+ obj.Collback(Geometory, Material);
74
+ }
75
+
76
+ loader.load(JSONfilename, func);
77
+ };
78
+
79
+ C_Model.prototype.Collback = function(Geometory, Material) {
80
+ //console.log(Geometory);
81
+ //console.log(Material);
82
+ this.Geometory = Geometory;
83
+
84
+ this.Material = new THREE.MeshFaceMaterial(Material);
85
+
86
+ this.LoadFlag = true;
87
+ console.log("LOAD-"+this.JSONfilename+"-FINISH");
88
+
89
+ };
90
+
91
+ C_Model.prototype.Get_LoadState= function(){
92
+ return this.LoadFlag;
93
+ };
94
+
95
+ このクラスを用いて複数データのメッシュデータを得て、
96
+ それを配列要素に一つづつ読み込もうとしています。
97
+
98
+ こちらのクラスを使用して単一のモデルを読むだけであれば、
99
+
100
+ var model_data = new C_Model();
101
+
102
+ var Model = null;
103
+
104
+ model_data.Load_Model("model.json");
105
+
106
+ function waitforload() {
107
+ if (model_data.Get_LoadState() == false) {
108
+ setTimeout(waitforload, 10);
109
+ return;
110
+ }
111
+ Model = model_data.Get_Model();
112
+
113
+ scene.add(Model);
114
+ }
115
+
116
+ waitforload();
117
+
118
+ とすることでModelにデータを読み込めています。
119
+
120
+ modelを配列化してそれぞれにデータの取り込みをしたいと考えています。