changeset 1260:fde4e3de9806 draft

merge
author Daichi Toma <toma@cr.ie.u-ryukyu.ac.jp>
date Sat, 19 Nov 2011 07:42:21 +0900
parents 52667b4c31e0 (current diff) 880f989ce52a (diff)
children 800e6e7abc59
files
diffstat 12 files changed, 227 insertions(+), 82 deletions(-) [+]
line wrap: on
line diff
--- a/Renderer/Engine/Camera.cc	Sat Nov 19 07:41:45 2011 +0900
+++ b/Renderer/Engine/Camera.cc	Sat Nov 19 07:42:21 2011 +0900
@@ -176,9 +176,9 @@
     float cx[4], cy[4], cz[4], p[4];
     float tm[16];
 
-    radx = angle[0]*3.14/180;
-    rady = angle[1]*3.14/180;
-    radz = angle[2]*3.14/180;
+    radx = angle[0]*M_PI/180;
+    rady = angle[1]*M_PI/180;
+    radz = angle[2]*M_PI/180;
 
     float sinx = sin(radx);
     float cosx = cos(radx);
--- a/Renderer/Engine/ChangeLog	Sat Nov 19 07:41:45 2011 +0900
+++ b/Renderer/Engine/ChangeLog	Sat Nov 19 07:42:21 2011 +0900
@@ -1,3 +1,14 @@
+2011-9-7  Shinji Kono  <kono@ie.u-ryukyu.ac.jp>
+
+	allExecute 使わない方の Camera の処理をしないとだめ。
+
+	    Camera のbrother ===> sprite
+	    Camera のchildren ===> sceneGraph
+
+	じゃないの? Camera に座標と行列をcopyする必要があると思われる。
+
+	matrix/real_matrix は重複っぽい。そもそも、なんで別なんだ? 普通は同じ値?
+
 2011-2-14 Yutaka Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
 
 	CreatePolygonFromScenenGraph を SPEで動くようにTask化。もうできるのはわかっているけど
@@ -25,16 +36,16 @@
 2009-12-19  Shinji Kono  <kono@ie.u-ryukyu.ac.jp>
 
 	SgChange/viewer は大域変数使いすぎ。禁止って言ったのに。
-        linda api は、federated linda 対応でないものが使われている。
-        対応したものは、どこにあるんだろう?
+	linda api は、federated linda 対応でないものが使われている。
+	対応したものは、どこにあるんだろう?
 
-        他の例題いじるのは、自分の例題を動かしてからにして欲しい。
+	他の例題いじるのは、自分の例題を動かしてからにして欲しい。
 
-        まぁねぇ。Pipeline execution するのに、sgpack とかも Pipeline buffer
-        にするのは気づかないものなんだろうな... なくても、動かないことは
-        ないのか。
+	まぁねぇ。Pipeline execution するのに、sgpack とかも Pipeline buffer
+	にするのは気づかないものなんだろうな... なくても、動かないことは
+	ないのか。
 
-        viewer.cc の大域変数を落すところから始めるべきか?
+	viewer.cc の大域変数を落すところから始めるべきか?
 
 2009-11-15  Shinji Kono  <kono@ie.u-ryukyu.ac.jp>
 
@@ -80,7 +91,7 @@
 	       ---------------------------------------
 	data = |   vertex   |   normal   |  texture  | sizeof(data) = size*3
 	       ---------------------------------------
-                \  size    / \   size   / \  size   /
+		\  size    / \   size   / \  size   /
 
 	てな感じで、SceneGraph->data の中に 3 つ入ってたわけです。
 	これだと、アクセスする時にどれがどれかわからんくなるし、
--- a/Renderer/Engine/Makefile	Sat Nov 19 07:41:45 2011 +0900
+++ b/Renderer/Engine/Makefile	Sat Nov 19 07:42:21 2011 +0900
@@ -26,7 +26,7 @@
 
 FORCE:
 	-mkdir -p ../../include/Cerium
-	rsync `find . -name Test -prune -or -name spe -prune -or -name task -prune -or -name '*.h' -print` ../../include/Cerium
+	rsync `find . -name Test -prune -or -name spe -prune -or -name task -prune -or -name '*.h' -print|sed -e 's-^./--'` ../../include/Cerium
 
 
 clean:
--- a/Renderer/Engine/SceneGraph.cc	Sat Nov 19 07:41:45 2011 +0900
+++ b/Renderer/Engine/SceneGraph.cc	Sat Nov 19 07:42:21 2011 +0900
@@ -135,6 +135,10 @@
       matrix[i]      = 0;
       real_matrix[i] = 0;
     }
+    for (int i = 0; i < 4; i++) {
+      matrix[i*4+i]      = 1;
+      real_matrix[i*4+i] = 1;
+    }
 
 
     finalize = &SceneGraph::finalize_copy;
@@ -210,8 +214,13 @@
     if (size % 3 != 0) {
       printf("vertex size is error. size %% 3 = %lld\n", size % 3);
     }
-
+    /*
+     * MAX_SIZE_TRIANGLE:128
+     */
     if (size > 0) {
+      /* size/3 : 三角形の数?
+       * MAX_SIZE_TRIANGLE : 128
+       */
       pp_num = (size/3 + MAX_SIZE_TRIANGLE - 1) / MAX_SIZE_TRIANGLE;
       pp = (PolygonPack*)manager->allocate(sizeof(PolygonPack)*pp_num);
     } else {
@@ -225,6 +234,7 @@
 
 }
 
+
 SceneGraph::SceneGraph(TaskManager *manager,const char *font,int pixels,Uint32 color,const char *string_name) {
 
     init();
--- a/Renderer/Engine/SceneGraphRoot.cc	Sat Nov 19 07:41:45 2011 +0900
+++ b/Renderer/Engine/SceneGraphRoot.cc	Sat Nov 19 07:42:21 2011 +0900
@@ -141,14 +141,14 @@
 
 /*文字列の生成*/
 void
-SceneGraphRoot::createStringFont(TaskManager *manager, SceneGraphPtr root, 
+SceneGraphRoot::createStringFont(TaskManager *manager, SceneGraphPtr root,
 				 const char *string,int pixels,int screen_w,
 				 int screen_h,Uint32 color)
 {
     SceneGraphPtr text;
   float width_shift = 0;
   int i;
-  int length = strlen(string); 
+  int length = strlen(string);
   for (i = 0; i < length;) {
     int len = 0;
     unsigned char initial = string[i];
@@ -172,7 +172,7 @@
     width_shift += text->seq;
     root->addChild(text);
     get_matrix_scale(text->matrix, text->angle, text->xyz, scale, root->matrix);
-    get_matrix(text->real_matrix, text->angle, text->xyz, root->real_matrix);
+    // get_matrix(text->real_matrix, text->angle, text->xyz, root->real_matrix);
     i += len;
   }
 }
@@ -204,7 +204,11 @@
     xmlNodePtr cur;
     SceneGraphPtr tmp;
 
-    /* パース DOM生成 */
+    /* パース DOM生成
+       xmlParseFile:ファイルに含まれるXML文書を分析する
+       xmlDocGetRootElement:ドキュメントルートを指定する。
+       よって、以下のcurにはドキュメントルートの位置が入っている
+     */
     doc = xmlParseFile(xmlfile);
     cur = xmlDocGetRootElement(doc);
 
@@ -213,24 +217,78 @@
 
     /* XMLのノードを一つずつ解析  */
     for (cur=cur->children; cur; cur=cur->next) {
-	/* 扱うのはsurfaceオンリー  */
-	if (xmlStrcmp(cur->name,(xmlChar*)"surface") != 0) {
-	    continue;
-	}
+      /*初期化:curをドキュメントルートの一個下に設定
+	継続条件:curが真である
+	再初期化:次のノードへ
+       */
 
-	/* ポリゴン(SceneGraph)生成  */
-	tmp = new SceneGraph(manager, cur);	
+      /* 扱うのはsurfaceオンリーなので、ノードの名前がsurfaceでないなら
+	 以下の処理を行なわずにスキップする
+      */
+      if (xmlStrcmp(cur->name,(xmlChar*)"surface") != 0) {
+	continue;
+      }
+      
+      /* ポリゴン(SceneGraph)生成
+	 SceneGraph:SceneGraph.cc、L186
+      */
+	tmp = new SceneGraph(manager, cur);
+	
+	//シーングラフを登録
 	registSceneGraph(tmp);
     }
+    //解放
     xmlFreeDoc(doc);
 }
 
 void
+SceneGraphRoot::createFromCOLLADAfile(TaskManager *manager, const char *xmlColladafile)
+{
+	/*make parse dom*/
+	xmlDocPtr doc;
+	xmlNodePtr cur,cur_images,cur_effects,cur_geometries,cur_visual_scenes;
+	SceneGraphPtr tmp;
+
+	doc = xmlParseFile(xmlColladafile);
+	cur = xmlDocGetRootElement(doc);
+
+	/*エラー処理……だけど何書けばいいのか謎。とりあえず-1返してみる*/
+	if(xmlStrcmp(cur->name, (xmlChar*)"COLLADA")){
+		return ;
+       };
+
+	/* node analyze */
+	for(cur=cur->children; cur_images; cur_images=cur_images->next){
+
+	  if(xmlStrcmp(cur->name,(xmlChar*)"library_imeges") != 0){
+	    cur_images = cur;
+	    continue;
+	  }
+	  if(xmlStrcmp(cur->name,(xmlChar*)"library_effects") != 0){
+	    cur_effects = cur;
+	    continue;
+	  }
+	  if(xmlStrcmp(cur->name,(xmlChar*)"library_geometries") != 0){
+	    cur_geometries = cur;
+	    continue;
+	  }
+	  if(xmlStrcmp(cur->name,(xmlChar*)"library_visual_scenes")!=0){
+	    cur_visual_scenes = cur;
+	    continue;
+	  }
+	  
+	  tmp = new SceneGraph(manager, cur);
+	  registSceneGraph(tmp);
+	}
+	xmlFreeDoc(doc);
+}
+
+void
 SceneGraphRoot::createFromXMLmemory(TaskManager *manager, SceneGraph *node, char *data, int len)
 {
     xmlDocPtr doc;
     xmlNodePtr cur;
-    
+
     // size は取れるはず、テスト用に mmap したデータを使う
     /* パース DOM生成 */
 
@@ -247,7 +305,7 @@
 	    continue;
 	}
 	/* ポリゴン(SceneGraph)生成  */
-	SceneGraphPtr original = new SceneGraph(manager, cur);	
+	SceneGraphPtr original = new SceneGraph(manager, cur);
 	registSceneGraph(original);
 	SceneGraphPtr clone = createSceneGraph(original->sgid);
 	node->addChild(clone);
@@ -294,13 +352,13 @@
 	printf("error: createSceneGraph(name): name object not found.\n");
 	return NULL;
     }
-    
+
     /* オリジナルの SceneGraph */
     src = sg_src[id];
 
     /* ユーザーにはオリジナルの clone を返す */
     p = src->clone(this->tmanager);
-    
+
     /* move, collision に sgroot を渡したいのでここで sgroot を渡しておく*/
     p->sgroot = (void *)this;
 
@@ -312,7 +370,7 @@
 int
 SceneGraphRoot::getSgid(const char *name)
 {
-  return sgid_hash.get_sgid(name);    
+  return sgid_hash.get_sgid(name);
 }
 
 int
@@ -349,14 +407,14 @@
     for (int i = 0; i < light_num; i++) {
 
 	get_matrix(light[i]->matrix, light[i]->angle, light[i]->xyz, camera->matrix);
-      
+
 	light_vector[i*4] = 0.0f;
 	light_vector[i*4+1] = 0.0f;
 	light_vector[i*4+2] = 0.0f;
 	light_vector[i*4+3] = 1.0f;
 
 	ApplyMatrix(&light_vector[i*4], light[i]->matrix);
-      
+
 	light_vector[i*4] /= light_vector[i*4+2];
 	light_vector[i*4+1] /= light_vector[i*4+2];
 
@@ -400,11 +458,11 @@
     while (list) {
 
         list->move_execute(screen_w, screen_h);
-        list->collision_check(screen_w, screen_h, list);	
-        
-	list->frame++; 
+        list->collision_check(screen_w, screen_h, list);
+
+	list->frame++;
         list = list->next;
-    }    
+    }
 
     lightCalc();
 
@@ -424,7 +482,7 @@
 
     sg_exec_tree = camera->children;
 }
-   
+
 void
 SceneGraphRoot::copyTree(SceneGraphPtr t, SceneGraphPtr cur_parent)
 {
@@ -441,11 +499,11 @@
 	    /*親の回転、座標から、子の回転、座標を算出*/
 	    get_matrix(c->matrix, c->angle, c->xyz, cur_parent->matrix);
 	    /*法線用の行列。Cameraの行列を抜いている(Cameraのコンストラクタで、単位行列にしている)*/
-	    get_matrix(c->real_matrix, c->angle, c->xyz, cur_parent->real_matrix);
+	    // get_matrix(c->real_matrix, c->angle, c->xyz, cur_parent->real_matrix);
 	    //get_matrix(c->real_matrix, c->angle, c->xyz, camera->real_matrix);
 
-	} 
-	
+	}
+
 	if (t->children != NULL && c != NULL) {
 	    cur_parent = c;
 	    t = t->children;
@@ -465,12 +523,21 @@
                         t = t->parent;
 		    }
 		}
-	    }	    
+	    }
 	}
     }
 
 }
 
+
+void
+SceneGraphRoot::treeApply(int screen_w, int screen_h)
+{
+    // don't calcurate sg_draw_tree's brother
+    transTree(sg_draw_tree->children, camera);
+}
+
+
 /**
  *     破壊的に変換行列の親子関係を計算する
  */
@@ -486,9 +553,8 @@
 	    /*親の回転、座標から、子の回転、座標を算出*/
 	    matrix4x4(t->matrix,t->matrix,cur_parent->matrix);
 	    /*法線用の行列。Cameraの行列を抜いている(Cameraのコンストラクタで、単位行列にしている)*/
-	    matrix4x4(t->real_matrix,t->real_matrix,cur_parent->real_matrix);
+	    // matrix4x4(t->real_matrix,t->real_matrix,cur_parent->real_matrix);
 	} 
-	
 	if (t->children != NULL && c != NULL) {
 	    cur_parent = t;
 	    t = t->children;
@@ -508,7 +574,7 @@
                         t = t->parent;
 		    }
 		}
-	    }	    
+	    }
 	}
     }
 
@@ -519,31 +585,31 @@
 */
 void
 SceneGraphRoot::move_finish()
-{    
-    list->collision_check(screen_w, screen_h, list);	
+{
+    list->collision_check(screen_w, screen_h, list);
 
-    list->frame++; 
+    list->frame++;
     //list = list->next;
 
     int light_num = 4;
     for (int i = 0; i < light_num; i++) {
 
 	get_matrix(light[i]->matrix, light[i]->angle, light[i]->xyz, camera->matrix);
-      
+
 	light_vector[i*4] = 0.0f;
 	light_vector[i*4+1] = 0.0f;
 	light_vector[i*4+2] = 0.0f;
 	light_vector[i*4+3] = 1.0f;
 
 	ApplyMatrix(&light_vector[i*4], light[i]->matrix);
-      
+
 	light_vector[i*4] /= light_vector[i*4+2];
 	light_vector[i*4+1] /= light_vector[i*4+2];
 
 	light_vector[i*4+2] *= -1;
 	light_vector[i*4+3] *= -1;
-    }    
-    
+    }
+
     //sgchange->viewer->light_xyz_stock = getLightVector();
 }
 
@@ -564,7 +630,7 @@
 SceneGraphRoot::allRemove(SceneGraphPtr list)
 {
     SceneGraphPtr p = list;
-    
+
     while (p) {
 	SceneGraphPtr p1 = p->next;
 	delete p;
@@ -578,7 +644,7 @@
 {
     SceneGraphPtr p = sg_available_list;
     SceneGraphPtr p1;
-    
+
     while (p) {
 	p1 = p->next;
 	if (p->isRemoved()) {
@@ -604,7 +670,7 @@
 	if (!t->isRemoved()) {
 	    if (t->name) printf("name: %s ",t->name);
 	    printf("x=%g y=%g z=%g\n",t->xyz[0],t->xyz[1],t->xyz[2]);
-	} 
+	}
 	if (t->children != NULL) {
 	    t = t->children;
 	} else if (t->brother != NULL) {
@@ -622,7 +688,7 @@
                         t = t->parent;
 		    }
 		}
-	    }	    
+	    }
 	}
     }
 }
--- a/Renderer/Engine/SceneGraphRoot.h	Sat Nov 19 07:41:45 2011 +0900
+++ b/Renderer/Engine/SceneGraphRoot.h	Sat Nov 19 07:42:21 2011 +0900
@@ -91,6 +91,7 @@
     void createStringFont(TaskManager *manager, SceneGraphPtr root,const char *string, int pixeles, int screen_w,int screen_h, Uint32 color);
     void createFont(TaskManager *manager,const char *font,int pixels,Uint32 color,const char *filename, int len, char **obj_name);    
     void createFromXMLfile(TaskManager *manager, const char *);
+    void createFromCOLLADAfile(TaskManager *manager, const char *);
     void createFromXMLmemory(TaskManager *manager, SceneGraph * node, char *data, int len);
     SceneGraphPtr createSceneGraph(int id);
     SceneGraphPtr createSceneGraph();
@@ -123,6 +124,7 @@
 
     /* Other System API */
     void allExecute(int screen_w, int screen_h);
+    void treeApply(int screen_w, int screen_h);
     void lightCalc();
     void flip();
     void copyTree(SceneGraphPtr from, SceneGraphPtr to);
--- a/Renderer/Engine/matrix_calc.cc	Sat Nov 19 07:41:45 2011 +0900
+++ b/Renderer/Engine/matrix_calc.cc	Sat Nov 19 07:42:21 2011 +0900
@@ -5,12 +5,6 @@
 #include "matrix_calc.h"
 using namespace std;
 
-void noMoreMemory()
-{
-  cout << "can't allocate memory\n";
-  exit(1);
-}
-
 void
 transMatrix(float *m0, float *m1, float *v)
 {
@@ -40,17 +34,16 @@
 
     for (int i = 0; i < 4; i++) {
 	for (int j = 0; j < 4; j++) {
-	    m[i*4+j] = m1[j*4+i];
+	    m0[i*4+j] = m[i*4+j] = m1[j*4+i];
 	}
     }
 
-    m[12] = -(m1[12]*m[0] + m1[13]*m[1] + m1[14]*m[2]);
-    m[13] = -(m1[12]*m[4] + m1[13]*m[5] + m1[14]*m[6]);
-    m[14] = -(m1[12]*m[8] + m1[13]*m[9] + m1[14]*m[10]);
-    m[3] = m[7] = m[11] = 0.0f;
-    m[15] = 1.0f;
+    m0[12] = -(m1[12]*m[0] + m1[13]*m[1] + m1[14]*m[2]);
+    m0[13] = -(m1[12]*m[4] + m1[13]*m[5] + m1[14]*m[6]);
+    m0[14] = -(m1[12]*m[8] + m1[13]*m[9] + m1[14]*m[10]);
+    m0[3] = m0[7] = m0[11] = 0.0f;
+    m0[15] = 1.0f;
 
-    memcpy(m0, m, sizeof(float)*16);
 }
 
 /**
@@ -67,6 +60,7 @@
     }
 }
 
+
 /**
  * ベクトルの正規化
  *
@@ -117,13 +111,14 @@
 {
     float t[16];
 
+    // こういう小細工よりベクタ使った方が良いんだが
     for (int i = 0; i < 4; i++) {
-	for (int j = 0; j < 4; j++) {
+	for (int j = i+1; j < 4; j++) {
+	    float tmp = t[j*4+i];
 	    t[i*4+j] = m1[j*4+i];
+	    m1[j*4+i] = tmp;
 	}
     }
-
-    memcpy(m0, t, sizeof(float)*16);
 }
 
 /**
@@ -149,6 +144,17 @@
     }
 }
 
+void matrix4x4R(float xyz[16], float xyz1[16], float xyz2[16]) 
+{
+  for(int t=0; t<16; t+=4)
+    {
+      for(int i=0; i<4; i++)
+	{
+	  xyz[t+i] = xyz1[t]*xyz2[i] + xyz1[t+1]*xyz2[4+i] + xyz1[t+2]*xyz2[8+i] + xyz1[t+3]*xyz2[12+i];
+	}
+    }
+}
+
 /**
  *   c_xyz を中心に sacle 倍する
  */
@@ -185,9 +191,9 @@
 get_matrix( float *matrix, float *rxyz, float *txyz, float *stack)
 {
   float radx,rady,radz;
-  radx = rxyz[0]*3.141562/180;
-  rady = rxyz[1]*3.141562/180;
-  radz = rxyz[2]*3.141562/180;
+  radx = rxyz[0]*M_PI/180;
+  rady = rxyz[1]*M_PI/180;
+  radz = rxyz[2]*M_PI/180;
 
   float sinx = sin(radx);
   float cosx = cos(radx);
@@ -228,9 +234,9 @@
 get_matrix_scale( float *matrix, float *rxyz, float *txyz, float *scale, float *stack)
 {
   float radx,rady,radz;
-  radx = rxyz[0]*3.14/180;
-  rady = rxyz[1]*3.14/180;
-  radz = rxyz[2]*3.14/180;
+  radx = rxyz[0]*M_PI/180;
+  rady = rxyz[1]*M_PI/180;
+  radz = rxyz[2]*M_PI/180;
 
   float sinx = sin(radx)*scale[0];
   float cosx = cos(radx)*scale[0];
@@ -267,9 +273,43 @@
 
 }
 
+void
+rotate_matrix( float m[16], float rxyz[4] )
+{
+  float radx,rady,radz;
+  radx = rxyz[0]*M_PI/180;
+  rady = rxyz[1]*M_PI/180;
+  radz = rxyz[2]*M_PI/180;
+
+  float sinx = sin(radx);
+  float cosx = cos(radx);
+  float siny = sin(rady);
+  float cosy = cos(rady);
+  float sinz = sin(radz);
+  float cosz = cos(radz);
+
+  /* View Transform */
+  m[0] = cosz*cosy+sinz*sinx*siny;
+  m[1] = sinz*cosx;
+  m[2] = -cosz*siny+sinz*sinx*cosy;
+  m[3] = 0;
+  m[4] = -sinz*cosy+cosz*sinx*siny;
+  m[5] = cosz*cosx;
+  m[6] = sinz*siny+cosz*sinx*cosy;
+  m[7] = 0;
+  m[8] = cosx*siny;
+  m[9] = -sinx;
+  m[10] = cosx*cosy;
+  m[11] = 0;
+  m[12] = 0;
+  m[13] = 0;
+  m[14] = 0;
+  m[15] = 1;
+}
+
 void rotate_x(float *xyz, float r)
 {
-  float rad = r*3.14/180;
+  float rad = r*M_PI/180;
 
   xyz[0] = xyz[0];
   xyz[1] = xyz[1]*cos(rad) - xyz[2]*sin(rad);
@@ -278,7 +318,7 @@
 
 void rotate_y(float *xyz, float r)
 {
-  float rad = r*3.14/180;
+  float rad = r*M_PI/180;
 
   xyz[0] = xyz[0]*cos(rad) + xyz[2]*sin(rad);
   xyz[1] = xyz[1];
@@ -287,7 +327,7 @@
 
 void rotate_z(float *xyz, float r)
 {
-  float rad = r*3.14/180;
+  float rad = r*M_PI/180;
 
   xyz[0] = xyz[0]*cos(rad) - xyz[1]*sin(rad);
   xyz[1] = xyz[0]*sin(rad) + xyz[1]*cos(rad);
--- a/Renderer/Engine/polygon.cc	Sat Nov 19 07:41:45 2011 +0900
+++ b/Renderer/Engine/polygon.cc	Sat Nov 19 07:42:21 2011 +0900
@@ -56,8 +56,12 @@
 
       TrianglePackPtr tri =  pp[i].tri;
       // TrianglePack の size のチェック
+      
       int tri_size = (count < MAX_SIZE_TRIANGLE) ? count : MAX_SIZE_TRIANGLE ;
+      
+      //それを構造体に登録
       pp[i].info.size = tri_size;
+      
 
       for (int j = 0; j < tri_size; j++) {
 
--- a/Renderer/Engine/task/DrawSpan.cc	Sat Nov 19 07:41:45 2011 +0900
+++ b/Renderer/Engine/task/DrawSpan.cc	Sat Nov 19 07:42:21 2011 +0900
@@ -65,8 +65,7 @@
 static    int drawLine1(SchedTask *smanager, Gptr g, SpanPtr span, int startx, int endx, int wait_tag);
 // static    void drawLine2(SchedTask *smanager, SpanPtr span, int startx, int endx, int js, int wait_tag);
 
-static int getDrawParam(SchedTask *smanager, Gptr g, SpanPtr span, int localy, int startx, 
-                       int endx, int index, int j, DrawParamPtr param);
+//static int getDrawParam(SchedTask *smanager, Gptr g, SpanPtr span, int localy, int startx, int endx, int index, int j, DrawParamPtr param);
 
 static    int infinity_light_calc(int color,float normal_x, float normal_y, float normal_z,
                                   SchedTask *smanager,int x, int y, float z, int world_x, int world_y, float world_z);
@@ -469,7 +468,7 @@
 
     return ret;
 }
-
+#if 0
 static int
 getDrawParam(SchedTask *smanager, Gptr g, SpanPtr span, int localy, int startx, int endx, int index, int j, DrawParamPtr param) {
 
@@ -536,6 +535,7 @@
     return 1; 
 
 }
+#endif
 
 static int
 infinity_light_calc(int color,float normal_x, float normal_y,
--- a/Renderer/Engine/viewer.cc	Sat Nov 19 07:41:45 2011 +0900
+++ b/Renderer/Engine/viewer.cc	Sat Nov 19 07:42:21 2011 +0900
@@ -293,6 +293,8 @@
 	} else {
 	    sgroot->allExecute(width, height);	
 	}
+    } else {
+	sgroot->treeApply(width, height);	
     }
 
     light_xyz_stock = sgroot->getLightVector();
--- a/Renderer/Test/xml_file/Ball.xml	Sat Nov 19 07:41:45 2011 +0900
+++ b/Renderer/Test/xml_file/Ball.xml	Sat Nov 19 07:42:21 2011 +0900
@@ -4345,4 +4345,4 @@
 			vLPuT//Z
 		</image>
 	</surface>
-</OBJECT-3D>
\ No newline at end of file
+</OBJECT-3D>
--- a/example/Prime/ppe/Prime.cc	Sat Nov 19 07:41:45 2011 +0900
+++ b/example/Prime/ppe/Prime.cc	Sat Nov 19 07:42:21 2011 +0900
@@ -11,7 +11,11 @@
 {
 	long start = (long)smanager->get_param(0);	/* 素数判定の開始地点 */
 	long end   = (long)smanager->get_param(1);	/* 素数判定の終了地点 */
+<<<<<<< local
+	long range = end - start;		        /* 判定する範囲	      */
+=======
 	long range = end - start;					/* 判定する範囲		  */
+>>>>>>> other
 
 	/* 判定結果を収める配列を受け取る */
 	bool *output = (bool*)smanager->get_output(wbuf, 0);
@@ -22,10 +26,16 @@
 	}
 
 
+<<<<<<< local
+ 	for (int i = start, index = 0; i < end; i++, index++) {
+ 		int limit = (int)sqrt((double) i);	       /* 割る数の最大値を求める */
+		for (int j = 2; j <= limit; j++) {
+=======
 
 	for (long i = start, index = 0; i < end; i++, index++) {
 		long limit = (long)sqrt((double) i);		/* 割る数の最大値を求める */
 		for (long j = 2; j <= limit; j++) {
+>>>>>>> other
 			/* 割り切れた場合、0を代入し素数じゃないという判定を下す */
 			if (i % j == 0) {
 				output[index] = false;