Bonsoir,

Après de longue recherches et essais, je viens cueillir une aide car malheureusement le temps pour moi commence à être très juste...

Je suis en école supérieure des beaux arts et je suis sur la réalisation d'une utilisation et détournement de la réalité augmentée.
Je me suis donc charger de motivation pour de nombreuses recherches afin de concevoir cela, j'ai découvert Flex ainsi que les librairies Flartoolkit, Papervision 3D et me suis mis à coder.

Résultat, j'ai bel est bien réussi à concevoir un marker, une camera et un objet collada donc 3D format Dae mais voila le problème :

Je souhaite pouvoir utiliser plusieurs marker ainsi que plusieurs models Dae anfin de pouvoir afficher face à la caméra une vingtaine de marker ayant sur chaque marker un objet 3D dae.

Voici mon code et ma demande est donc quelqu'un saurait-il m'éclairer ou m'aider rapidement pour que je puisse terminer cette phase de réalisation ?

Merci beaucoup de votre aide et patience.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
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.FLARTransMat;
    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.cameras.Camera3D;
    import org.papervision3d.render.LazyRenderEngine;
    import org.papervision3d.scenes.Scene3D;
    import org.papervision3d.view.Viewport3D;
    import org.papervision3d.objects.parsers.Collada;
    import org.papervision3d.objects.parsers.DAE;
 
	[SWF(width="640", height="480", frameRate="30", backgroundColor="#FFFFFF")]
 
public class FLARdemo2 extends Sprite 
{
	[Embed(source="camera_para.dat", mimeType="application/octet-stream")]
	public var CameraParameters:Class;
 
	[Embed(source="pat1.pat", mimeType="application/octet-stream")]
	public var MarkerPattern:Class;
 
	public var cameraParameters:FLARParam;
	public var markerPattern:FLARCode;
	public var raster:FLARRgbRaster_BitmapData;
	public var detector:FLARSingleMarkerDetector;
 
	public var cam:Camera;
	public var vid:Video;
	public var capture:BitmapData;
 
	public var cam3D:FLARCamera3D;
	public var scene3D:Scene3D;
	public var viewPort:Viewport3D;
	public var FLARdemo2Container:FLARBaseNode;
	public var renderer:LazyRenderEngine;
 
	public var trans:FLARTransMatResult;
	public var prevSet:Boolean = false;
	public var prevZ:Number = 0;
 
	public var _collada:Collada;
	public var _dae1: DAE;
 
	public function FLARdemo2():void 
	{
		cameraParameters = new FLARParam();
		cameraParameters.loadARParam(new CameraParameters() as ByteArray);
 
		markerPattern = new FLARCode(16, 16);
		markerPattern.loadARPatt(new MarkerPattern());
 
		cam = Camera.getCamera();
		cam.setMode(640, 480, 30);
 
		vid = new Video();
		vid.width = 640;
		vid.height = 480;
		vid.attachCamera(cam);
		addChild(vid);
 
		capture = new BitmapData(vid.width, vid.height, false, 0x0);
		capture.draw(vid);
 
		raster = new FLARRgbRaster_BitmapData(capture);
		detector = new FLARSingleMarkerDetector(cameraParameters, markerPattern, 80);
 
		cam3D = new FLARCamera3D(cameraParameters);
 
		scene3D = new Scene3D();
 
		FLARdemo2Container = new FLARBaseNode();
		scene3D.addChild(FLARdemo2Container);
 
		viewPort = new Viewport3D(vid.width, vid.height);
		viewPort.scaleX = viewPort.scaleY = 2;
		addChild(viewPort);
 
		renderer = new LazyRenderEngine(scene3D, cam3D, viewPort);
 
		_dae1 = new DAE();
		_dae1.load("model/monobjet.dae");
		_dae1.scale = 2;
		_dae1.rotationX = 90;
		_dae1.rotationZ -= 90;
		FLARdemo2Container.addChild(_dae1);
 
		trans = new FLARTransMatResult();
 
		this.addEventListener(Event.ENTER_FRAME, FLARdemo2Enter);
	}
	public function FLARdemo2Enter(e:Event):void 
	{
		capture.draw(vid);
 
		if (detector.detectMarkerLite(raster, 80) && detector.getConfidence() > 0.5)
		{
			detector.getTransformMatrix(trans);
 
			FLARdemo2Container.setTransformMatrix(trans);
			FLARdemo2Container.visible = true;
			renderer.render();
		}
		else
		{
			FLARdemo2Container.visible = false;
			renderer.render();
		}
	}
}
 
}