0

YouTube에서 증강 현실 앱을 실행하고 있습니다. 나는이 전체 FLARTool 키트와 papervision 직원에게 초보자입니다. 도우미에 대한 영원한 감사. 내가이 스크립트를 가지고 :AS3 : 매개 변수 하위가 null이 아니어야합니다.

package 
{ 
import flash.display.BitmapData; 
import flash.display.Sprite; 
import flash.events.Event; 
import flash.media.Camera; 
import flash.media.Video; 
import flash.utils.ByteArray; 

import org.libspark.flartoolkit.core.FLARCode; 
import org.libspark.flartoolkit.core.param.FLARParam; 
import org.libspark.flartoolkit.core.raster.rgb.FLARRgbRaster_BitmapData; 
import org.libspark.flartoolkit.core.transmat.FLARTransMatResult; 
import org.libspark.flartoolkit.detector.FLARSingleMarkerDetector; 
import org.libspark.flartoolkit.support.pv3d.FLARBaseNode; 
import org.libspark.flartoolkit.support.pv3d.FLARCamera3D; 
import org.papervision3d.lights.PointLight3D; 
import org.papervision3d.materials.BitmapFileMaterial; 
import org.papervision3d.materials.utils.MaterialsList; 
import org.papervision3d.objects.primitives.Cube; 
import org.papervision3d.render.BasicRenderEngine; 
import org.papervision3d.scenes.Scene3D; 
import org.papervision3d.view.Viewport3D; 

[SWF(width="640", height="480", frameRate="30", backgroundColor="#ffffff")] 
public class test extends Sprite 
{ 
    [Embed(source="marker15.pat", mimeType="application/octet-stream")] 
    private var marker:Class; 

    [Embed(source="camera_para.dat", mimeType="application/octet-stream")] 
    private var cam_params:Class; 

    //createFLAR variables 
    private var ar_params:FLARParam; 
    private var ar_marker:FLARCode; 
    //createCam variables 
    private var ar_vid:Video 
    private var ar_cam:Camera 
    //createBMP vairiables 
    private var ar_bmp:BitmapData; 
    private var ar_raster:FLARRgbRaster_BitmapData; 
    private var ar_detection:FLARSingleMarkerDetector; 
    //createPapervision variables 
    private var ar_scene:Scene3D; 
    private var ar_3dcam:org.libspark.flartoolkit.support.pv3d.FLARCamera3D; 
    private var ar_basenode:FLARBaseNode; 
    private var ar_viewport:Viewport3D; 
    private var ar_renderengine:BasicRenderEngine; 
    private var ar_transmat:FLARTransMatResult; 
    private var ar_cube:Cube; 

    public function test() 
    { 
     createFLAR(); 
     createCam(); 
     createBMP(); 
     createPapervision(); 
     addEventListener(Event.ENTER_FRAME, loop); 
    } 
    public function createFLAR() 
    { 
     ar_params= new FLARParam(); 
     ar_marker= new FLARCode(16,16); 
     ar_params.loadARParam(new cam_params() as ByteArray); 
     ar_marker.loadARPatt(new marker()); 
    } 
    public function createCam() 
    { 
     ar_vid= new Video(640, 480); 
     ar_cam= Camera.getCamera(); 
     ar_cam.setMode(640,480,30); 
     ar_vid.attachCamera(ar_cam); 
     addChild(ar_vid); 
    } 
    public function createBMP() 
    { 
     ar_bmp= new BitmapData(640,480); 
     ar_bmp.draw(ar_vid); 
     ar_raster= new FLARRgbRaster_BitmapData(ar_bmp); 
     ar_detection= new FLARSingleMarkerDetector(ar_params, ar_marker,80);   
    } 
    public function createPapervision() 
    { 
     ar_scene= new Scene3D(); 
     ar_3dcam= new org.libspark.flartoolkit.support.pv3d.FLARCamera3D(ar_params); 
     ar_basenode= new FLARBaseNode(); 
     ar_renderengine= new BasicRenderEngine(); 
     ar_transmat= new FLARTransMatResult(); 

     var ar_light:PointLight3D= new PointLight3D(); 
     ar_light.x= 1000; 
     ar_light.y= 1000; 
     ar_light.z= -1000; 

     var ar_bitmap:BitmapFileMaterial; 
     ar_bitmap=new BitmapFileMaterial ("LBP2.jpg"); 
     ar_bitmap.doubleSided=true; 

     ar_cube=new Cube(new MaterialsList({all:ar_bitmap}), 80, 80, 80); 
     ar_scene.addChild(ar_basenode); 
     ar_basenode.addChild(ar_cube); 
     addChild(ar_viewport); 
    } 

    private function loop(e:Event):void 
    { 
     ar_bmp.draw(ar_vid); 
     ar_cube.rotationX +=4; 
     ar_cube.rotationY +=6; 

     try 
     { 
      if(ar_detection.detectMarkerLite(ar_raster, 80) && ar_detection.getConfidence()>0.5) 
      { 
       ar_detection.getTransformMatrix(ar_transmat); 
       ar_basenode.setTransformMatrix(ar_transmat); 
       ar_renderengine.renderLayers(ar_scene, ar_3dcam, ar_viewport); 
      } 
     } 

     catch (e:Error){} 
    } 

} 

} 

내가이 로그 얻고 테스트를 실행 해요 :

형식 오류 : 오류 # 2007 : 변수 아이가 null이어야합니다. at flash.display :: DisplayObjectContainer/addChild() 테스트/createPapervision() [C : \ Users \ Omer Hacohen \ 어도비 플래시 빌더 4.7 \ 테스트 \ src \ test.as : 103] at test() [C : \ 사용자 \ 오머 Hacohen \ 어도비 플래시 빌더 4.7 \ 테스트 \ src \ test.as : 58]

그것은 무엇을 의미합니까?

addChild(ar_viewport); 

에서 : 응용 프로그램을 말할 필요가 당신 때문에 createPapervision 방법에 다음 줄의 오류를 잡된다

+0

코드의 라인을 지적하는 것이 도움이 될 것인가에 대한 오류 점 (그런 식으로 우리가 그것을 알아낼 필요가 없습니다) – BadFeelingAboutThis

답변

0

표시되지 않습니다 마커에 앉아 가정 카메라하지만 큐브를 열하지 않습니다 귀하의 게시 된 코드, 당신은 그 변수 (ar_viewport)를 초기화하지 않으므로 추가하려고하면 null입니다.

이 시도 :

ar_viewport = new Viewport3D(stage.stageWidth,stage.stageHeight); 
addChild(ar_viewport);