���������д�ij�����˵��������AS3������AR������������Ǵ�FLARManager��example��д�ġ���������Ч����http://cankeyyin.blog.163.com/album163/
һ��FLARToolKit����
����FLARToolKit��ARToolKit��AS3�汾��ARToolKit�Ǹ����Դ�����ǿ��ʵ��C����⣬Ȼ��������Adobe Flash/Flex/AIR��FLARToolKit��������ֻ�Ƕ�֮ǰC�汾����ֲ��FLARToolKit�Ǵ�Java�汾��ֲ�����ģ������ƽ��� NyARToolKit������nyatla�ļ��Ŭ��֮������NyARToolKit��ִ���ٶ�Ҫ��ԭʼ��C�汾�죩��
����ʹ��AS3�����ĺô�
1����ϵͳ��ƽ̨
2�������Ƕ����ҳ����
��������ǰҪ���ġ�����
1������ͷ
2����װAS3��IDE��Flash��Flex��Flashdevelop������һ������
�������������Flex�����ģ������ѧ����Flex
3������&��װ������ARToolkit Marker Generator
�����AIR������Ҫ��ĵ�����AIR��Runtime
4�����ظ�����FLARManager���������FLARToolkit��3D���棩
�ġ�����FLARManager������
FLARManager��һ�����FLARToolkit��������⣬��Ҫ���ڹ������ʶ��ͼ�Ρ�
����ǰ���ȵ���һ���Ѿ�д�õij���
���������FLARManager_v5����ѹ���Flex��ѡ��File-Import-Flex Project����Project Folder����ѡ���ѹ���·�����Ϳ��Ե��������Ŀ��
��Ŀ��markerͼ����\FLARManager_v05\resources\flar\patterns���棬��ӡpattens01.pdf��װ������ͷ��ѡ��Run-Debug�Ϳ��Ե����������Ч���ˡ���������ӡ�����pattens01.pdf��������ͷ������Ҳ�С�
����������һ�³����ļ���������֯�ġ�
FLARToolkit����src/org/libspark����
3D������lib����
ʾ������������src/FLARManagerExampleLauncher.as�����Ǵ����as�ļ��Ϳ��Կ����������кܶ����̸����ǵ��ԡ���Щ���̵����ļ���src/example���档��������src/example/support���档
�塢��������
���������Car.rar�����������̸�д�ij������������ģ������Flash 3D�о�����վ���صģ�http://www.flab3d.com/tutorials_05_pv3dloadDAE.php����������������������DAEģ�͡�
�������������̸�д�����ٹ�����������Ҫ���������¼�����
��һ������һ��Marker������pat�ļ�
���ǿ�����ARToolkit Marker Generator��������Marker��Ӧ��pat�ļ������������������������ϸ������Կ������ַ��http://www.mikkoh.com/blog/?p=182��
�ڶ�������дflarConfig.xml
����ļ��Ǽ�¼pat�ļ�·���ġ�
�������õ�Marker��������\FLARManager_v05\resources\flar\patternsĿ¼�µ�pattens01.pdf������ǰ�����ҾͲ������ˡ�
�������������
���ҵij���������Ҫ�������࣬һ���Ƕ�����Objects_3D����һ����FLARManager���ƶ�����ʾ����FLARManager_PV3D��
Objects_3D�����Ҫ��������ʼ��PV3D�����������������������ķ���
1����ʼ��PV3D����- //��ʼ��PV3D
- private function initPapervisionEnvironment (cameraParams:FLARParam, mirrorDisplay:Boolean, viewportWidth:Number, viewportHeight:Number) :void {
- this.scene3D = new Scene3D();
- this.camera3D = new FLARCamera3D(cameraParams);
- this.viewport3D = new Viewport3D(viewportWidth, viewportHeight);
- if (mirrorDisplay) {
- this.viewport3D.x = viewportWidth;
- this.viewport3D.scaleX = -1;
- }
- this.addChild(this.viewport3D);
- this.renderEngine = new LazyRenderEngine(this.scene3D, this.camera3D, this.viewport3D);
- this.pointLight3D = new PointLight3D();
- this.pointLight3D.x = 1000;
- this.pointLight3D.y = 1000;
- this.pointLight3D.z = -1000;
- this.addEventListener(Event.ENTER_FRAME, this.onEnterFrame);
- }
���ƴ��� ���ǿ��Ը�����ʾ����Ҫ���ĵ��еĴ��롣
2����������- private function creatModel():void{
- //������ģ��
- var materialsList:MaterialsList = new MaterialsList({all: new FlatShadeMaterial(this.pointLight3D, 0x19FFAA, 0x007348)});
- cube = new Cube(materialsList, CUBE_SIZE, CUBE_SIZE, CUBE_SIZE);
- cube.z = 0.5 * CUBE_SIZE;
- //��������ģ��
- car = new DAE(true, "car", true);
- car.load("../resources/assets/car.xml");
- car.rotationX = 90;
- car.rotationZ = 90;
- car.scale = 10;
- }
���ƴ��� 3�������������ķ���- public function addMarker (marker:FLARMarker) :void {
- //���Marker
- var markerList:Vector.<FLARMarker> = this.markersByPatternId[marker.patternId];
- markerList.push(marker);
- //����һ��3Dģ�͵�����
- var containerisplayObject3D = new DisplayObject3D();
- //���ݲ�ͬ��Marker��ʾ��ͬ�Ķ���
- //�Ҵ�ӡ������ֽ������12��Marker��3*4���У�patternIdΪ4��7�ľ����м�������
- if(marker.patternId==4)
- container.addChild(car);
- else if(marker.patternId==7)
- container.addChild(cube);
- this.scene3D.addChild(container);
- this.containersByMarker[marker] = container;
- }
- public function removeMarker (marker:FLARMarker) :void {
- var markerList:Vector.<FLARMarker> = this.markersByPatternId[marker.patternId];
- var markerIndex:uint = markerList.indexOf(marker);
- if (markerIndex != -1) {
- markerList.splice(markerIndex, 1);
- }
- var containerisplayObject3D = this.containersByMarker[marker];
- if (container) {
- this.scene3D.removeChild(container);
- }
- delete this.containersByMarker[marker]
- }
- private function onEnterFrame (evt:Event) :void {
- this.updateObjects();
- this.renderEngine.render();
- }
- private function updateObjects () :void {
- var i:int = this.markersByPatternId.length;
- var markerList:Vector.<FLARMarker>;
- var marker:FLARMarker;
- var containerisplayObject3D;
- var j:int;
- while (i--) {
- markerList = this.markersByPatternId;
- j = markerList.length;
- while (j--) {
- marker = markerList[j];
- container = this.containersByMarker[marker];
- container.transform = FLARPVGeomUtils.convertFLARMatrixToPVMatrix(marker.transformMatrix);
- }
- }
- }
���ƴ��� FLARManager_PV3D�����Ҫ��������ʼ��FLARManager������Marker�¼�
�����Ĵ�������ϲ���Ҫ��ʲô�Ķ���д�����ʱ���ƹ�ȥ�Ϳ����ˡ�
1����ʼ��FLARManager- private function init () :void {
- this.flarManager = new FLARManager("../resources/flar/flarConfig.xml");
- this.flarManager.addEventListener(ErrorEvent.ERROR, this.onFlarManagerError);
- this.addChild(Sprite(this.flarManager.flarSource));
- this.flarManager.addEventListener(FLARMarkerEvent.MARKER_ADDED, this.onMarkerAdded);
- this.flarManager.addEventListener(FLARMarkerEvent.MARKER_UPDATED, this.onMarkerUpdated);
- this.flarManager.addEventListener(FLARMarkerEvent.MARKER_REMOVED, this.onMarkerRemoved);
- var framerateDisplay:FramerateDisplay = new FramerateDisplay();
- this.addChild(framerateDisplay);
- this.flarManager.addEventListener(Event.INIT, this.onFlarManagerInited);
- }
- private function onFlarManagerError (evt:ErrorEvent) :void {
- this.flarManager.removeEventListener(ErrorEvent.ERROR, this.onFlarManagerError);
- this.flarManager.removeEventListener(Event.INIT, this.onFlarManagerInited);
- trace(evt.text);
- }
- private function onFlarManagerInited (evt:Event) :void {
- this.flarManager.removeEventListener(ErrorEvent.ERROR, this.onFlarManagerError);
- this.flarManager.removeEventListener(Event.INIT, this.onFlarManagerInited);
- this.myObjects = new Objects_3D(this.flarManager.numLoadedPatterns, this.flarManager.cameraParams,
- this.flarManager.mirrorDisplay, this.stage.stageWidth, this.stage.stageHeight);
- this.addChild(this.myObjects);
- this.myObjects.mouseChildren = false;
- }
���ƴ��� 2������Marker�¼�- //�����¼���Ȼ��������Ӧ����
- private function onMarkerAdded (evt:FLARMarkerEvent) :void {
- this.myObjects.addMarker(evt.marker);
- }
- private function onMarkerUpdated (evt:FLARMarkerEvent) :void {
- }
- private function onMarkerRemoved (evt:FLARMarkerEvent) :void {
- this.myObjects.removeMarker(evt.marker);
- }
���ƴ��� ���꣩
����:
�������ص�������Ҫ�ظ��ſ������ |