: 이전 Netsting 에서 Sphere에 Sphere를 addChild하여 부모 자식 관계를 만든 다음 부모를 회전시켜 처리 하였다면, 이번에는 Sphere대신 DisplayObject3D에 Sphere를 추가시켜 do3D를 회전시켜 본다.
=> 즉, do3D가 선회 축이 되는 것임.
[ 참조 ]
(이제부터 DisplayObject3D는 길기 땜시 줄여 do3D라고 부르기로 함.)
ex) _sphere.geometry.vertices[i].x
이런 식으로 해당 do3D Object에서 geometry (기하) => vertices (꼭지점) => [i] (인덱스) => x (좌표) 순서로 접근한다.
ex) _sphere.geometry.faces[i]
이런 식으로 해당 do3D Object에서 geometry (기하) => faces (면) => [i] (인덱스) 로 접근한다.
접근한 면은 [object Triangle3D]로 변환하여 사용할 수 있다.
이제 위에서 배운 3가지 단계를 거쳐 구 내부에 작은 구를 넣는 방법을 적용하여 보겠습니다 ^^;
(주석 참조 => 모르는거 있음 리플 주시고요 ㅋ)
//Main.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
creationComplete="init()"
frameRate="40"
xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import sample.VerticesExample;
import mx.core.UIComponent;
private function init():void{
var bs:VerticesExample = new VerticesExample();
var ui:UIComponent = new UIComponent();
ui.addChild(bs);
this.addChild(ui);
}
]]>
</mx:Script>
</mx:Application>
//VerticesExample.as
package sample
{
import flash.events.Event;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.view.BasicView;
public class VerticesExample extends BasicView
{
private var _do3D:DisplayObject3D;
public function VerticesExample()
{
init();
startRendering();
}
private function init():void{
_do3D = new DisplayObject3D(); //회전 축 생성
scene.addChild(_do3D);
//작은 원들이 들어갈 큰 원을 생성, 실제 scence 에는 추가되지 않음.
var bigSphere:Sphere = new Sphere(null,200,10,10);
//큰 원의 꼭지점 수 계산
var vLen:uint = bigSphere.geometry.vertices.length;
for(var i:uint=0;i<vLen;i++){
//작은 원 생성
var smallSphere:Sphere = new Sphere(null,Math.random()*30,2,2);
//큰 원의 꼭지점 좌표에 작은 원을 위치 한다.
smallSphere.x = bigSphere.geometry.vertices[i].x;
smallSphere.y = bigSphere.geometry.vertices[i].y;
smallSphere.z = bigSphere.geometry.vertices[i].z;
//작은원을 삽입한다. 큰원은 삽입 안됨(큰 원은 꼭지점 참조용)
_do3D.addChild(smallSphere);
}
}
override protected function onRenderTick(event:Event=null):void{
_do3D.localRotationY+=1; //회전축 돌리기
super.onRenderTick();
}
}
}
'etc > old' 카테고리의 다른 글
드레그 & 드랍 적용하기 : Adding drag-and-drop support (0) | 2010.03.03 |
---|---|
[iPhone] 아이폰 사용요금 확인하기 (0) | 2009.12.07 |
[ PV3D ] 3-3 Nesting (둥지) (0) | 2009.10.10 |
[ PV3D ] 3-2 Primitives - Plane (0) | 2009.10.10 |
[ PV3D ] 3-1 Primitives 기본모델? (0) | 2009.10.10 |