TROVATO IL FILE ... in giro per la rete ...
però ho comunque un problema!!!!!!
ad esempio ... questo è il codice:
codice:
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.pv3d.FLARBaseNode;
import org.libspark.flartoolkit.pv3d.FLARCamera3D;
import org.papervision3d.lights.PointLight3D;
import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
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;
public class esempio_flar extends Sprite
{
// Importa il pattern
[Embed(source="patternHTML.pat", mimeType="application/octet-stream")]
private var pattern:Class;
// Importa i parametri
[Embed(source="camera_para.dat", mimeType="application/octet-stream")]
private var params:Class;
// Variabili per la creazione della visualizzazione della webcam
private var vid:Video;
private var cam:Camera;
private var bmd:BitmapData;
// Variabili relative a papervision e FLAR
private var fparams:FLARParam;
private var mpattern:FLARCode;
private var raster:FLARRgbRaster_BitmapData;
private var detector:FLARSingleMarkerDetector;
private var scene:Scene3D;
private var camera:FLARCamera3D;
private var container:FLARBaseNode;
private var vp:Viewport3D;
private var bre:BasicRenderEngine;
private var trans:FLARTransMatResult;
public function esempio_flar() { }
}
public function Esempio_flar()
{
setupFLARToolkit();
setupWebcam();
setupPattern();
setupPapervision();
addEventListener(Event.ENTER_FRAME, renderizza);
}
private function setupFLARToolkit():void
{
fparams = new FLARParam(); // creiamo un nuovo oggetto FLARParam
fparams.loadARParam(new params() as ByteArray); // carichiamo i parametri della webcam come ByteArray
mpattern = new FLARCode(16, 16); // creiamo un nuovo oggetto FLARCode
mpattern.loadARPatt(new pattern()); // carichiamo il pattern
}
private function setupWebcam():void
{
vid = new Video(640, 480);
cam = Camera.getCamera();
cam.setMode(640, 480, 30);
vid.attachCamera(cam);
addChild(vid);
}
private function setupPattern():void
{
bmd = new BitmapData(640, 480); // creiamo un oggetto BitmapData con le stesse dimensioni del flusso della webcam (640x480)
bmd.draw(vid); // disegnamo nell'oggetto bmd l'attuale frame del flusso video
raster = new FLARRgbRaster_BitmapData(bmd); // creiamo un oggetto FLARRgbRaster_BitmapData passandogli il fotogramma catturato
detector = new FLARSingleMarkerDetector(fparams, mpattern, 80); // creiamo un nuovo detector passandogli i parametri della webcam e il pattern da rilevare e la larghezza del marker (80 mm)
}
private function setupPapervision():void
{
scene = new Scene3D(); // creiamo un anuova scena di Papervision
camera = new FLARCamera3D(fparams); // creiamo una nuova camera basata su FLAR e sui parametri caricati dal file .dat
container = new FLARBaseNode(); // creiamo un nuovo FLARBaseNode
scene.addChild(container); // aggiungiamo l'oggetto FLARBaseNode alla scena di Papervision
var pl:PointLight3D = new PointLight3D(); // creiamo una luce da usare in Papervision
// posizioniamo la luce
pl.x = 1000;
pl.y = 1000;
pl.z = -1000;
var ml:MaterialsList = new MaterialsList({all: new FlatShadeMaterial(pl)}); // creiamo un nuovo materiale che useremo per i cubi
// creiamo i 3 cubi e li posizioniamo a diverse profondità
var cube1:Cube = new Cube(ml, 30, 30, 30);
var cube2:Cube = new Cube(ml, 30, 30, 30);
cube2.z = 50;
var cube3:Cube = new Cube(ml, 30, 30, 30);
cube3.z = 100;
// aggiungiamo i cubi alla scena
container.addChild(cube1);
container.addChild(cube2);
container.addChild(cube3);
// impostiamo il rendering della scena
bre = new BasicRenderEngine();
trans = new FLARTransMatResult();
// creiamo la visuale
vp = new Viewport3D();
// aggiungiamo la scena completa allo stage
addChild(vp);
}
private function renderizza(evt:Event):void
{
bmd.draw(vid); // disegniamo il frame nell'oggetto bmd
if(detector.detectMarkerLite(raster, 80) && detector.getConfidence() > 0.5) // se il marker viene rilevato
{
detector.getTransformMatrix(trans); // ricaviamo la transformMatrix dal detector
container.setTransformMatrix(trans); // impostiamo la transformMatrix sulla scena
bre.renderScene(scene, camera, vp); // renderizziamo la scena di Papervision
}
}
}
}
e l'ho confrontato con il file d'esempio!! E' tutto corretto ..
mi da sempre 5 errori di questo tipo:
1013: The private attribute may be used only on class property definitions.
riferiti a questa parte del codice (tutte le voci che cominciano con "private function":
codice:
private function setupFLARToolkit():void
{
fparams = new FLARParam(); // creiamo un nuovo oggetto FLARParam
fparams.loadARParam(new params() as ByteArray); // carichiamo i parametri della webcam come ByteArray
mpattern = new FLARCode(16, 16); // creiamo un nuovo oggetto FLARCode
mpattern.loadARPatt(new pattern()); // carichiamo il pattern
}
private function setupWebcam():void
{
vid = new Video(640, 480);
cam = Camera.getCamera();
cam.setMode(640, 480, 30);
vid.attachCamera(cam);
addChild(vid);
}
private function setupPattern():void
{
bmd = new BitmapData(640, 480); // creiamo un oggetto BitmapData con le stesse dimensioni del flusso della webcam (640x480)
bmd.draw(vid); // disegnamo nell'oggetto bmd l'attuale frame del flusso video
raster = new FLARRgbRaster_BitmapData(bmd); // creiamo un oggetto FLARRgbRaster_BitmapData passandogli il fotogramma catturato
detector = new FLARSingleMarkerDetector(fparams, mpattern, 80); // creiamo un nuovo detector passandogli i parametri della webcam e il pattern da rilevare e la larghezza del marker (80 mm)
}
private function setupPapervision():void
{
scene = new Scene3D(); // creiamo un anuova scena di Papervision
camera = new FLARCamera3D(fparams); // creiamo una nuova camera basata su FLAR e sui parametri caricati dal file .dat
container = new FLARBaseNode(); // creiamo un nuovo FLARBaseNode
scene.addChild(container); // aggiungiamo l'oggetto FLARBaseNode alla scena di Papervision
var pl:PointLight3D = new PointLight3D(); // creiamo una luce da usare in Papervision
// posizioniamo la luce
pl.x = 1000;
pl.y = 1000;
pl.z = -1000;
var ml:MaterialsList = new MaterialsList({all: new FlatShadeMaterial(pl)}); // creiamo un nuovo materiale che useremo per i cubi
// creiamo i 3 cubi e li posizioniamo a diverse profondità
var cube1:Cube = new Cube(ml, 30, 30, 30);
var cube2:Cube = new Cube(ml, 30, 30, 30);
cube2.z = 50;
var cube3:Cube = new Cube(ml, 30, 30, 30);
cube3.z = 100;
// aggiungiamo i cubi alla scena
container.addChild(cube1);
container.addChild(cube2);
container.addChild(cube3);
// impostiamo il rendering della scena
bre = new BasicRenderEngine();
trans = new FLARTransMatResult();
// creiamo la visuale
vp = new Viewport3D();
// aggiungiamo la scena completa allo stage
addChild(vp);
}
private function renderizza(evt:Event):void
{
bmd.draw(vid); // disegniamo il frame nell'oggetto bmd
if(detector.detectMarkerLite(raster, 80) && detector.getConfidence() > 0.5) // se il marker viene rilevato
{
detector.getTransformMatrix(trans); // ricaviamo la transformMatrix dal detector
container.setTransformMatrix(trans); // impostiamo la transformMatrix sulla scena
bre.renderScene(scene, camera, vp); // renderizziamo la scena di Papervision
}
qualcuno mi sa dare una mano?