Blog Papervision3D

Blog Français sur Papervision3D

Les Cubes sous Papervision

Posté par Ocelyn le 23 mai, 2008
Publié dans Tutoriaux

15 minutes de tutoriel pour tout comprendre des cubes, ça vous tente ?

Un tutoriel consacré aux cubes pour comprendre comment les créer et les différentes façon de les texturer, un bon complément au précédent tutoriel qui vous permettra de créer un menu dans le style des cubes en 3D que l’on voit sous Linux :)

Ps : Je suis à la recherche de sponsors afin de m’aider à financer l’hébergement pour pouvoir proposer des vidéos de meilleurs qualités.

Les pré-requis :

-Avoir fait et compris l’ensemble des précédents tutoriels.

Get the Flash Player to see this player.

Code source à venir prochainement…

Share and Enjoy:
  • Facebook
  • Twitter
  • LinkedIn
  • del.icio.us
  • Technorati
  • Digg
  • Netvibes
  • Wikio FR
  • Live
  • Google Bookmarks
  • email
  • Print

21 commentaires dans ce post, pour l'instant.

Suivre ce post par RSS ou poser un trackback
mygif
65. vincent dit,
24 mai, 2008 à 12:06

Super tutoriel ! Le cube, je le reconnais. Il m’a été présenté lors de portes ouvertes à St Raphaël. Super travail ! Félicitation pour le site http://www.commerce-equitable-fr.com, frappant de qualité.

mygif
82. benbill dit,
25 juin, 2008 à 15:45

Merci pour tous ces tutos qui m’ont bien servit pour débuter.

Même si je ne travaille pas dans flash mais dans flex la syntaxe reste quasi identique.
Encore merci et bonne continuation ;)

mygif
88. numayos dit,
4 juillet, 2008 à 14:27

Bonjour,

Déjà merci et bravo pour tous ces tutos sur Papervision.

J’ai un problème avec la gestion du clique sur les face du cube, flash me signale une erreur sur le paramètre de la function objectPressIndex —> « 1046: Ce type est introuvable ou n’est pas une constante de compilation : MouseEvent. »

Je ne comprend pas car dans le tuto c’est exactement écrit pareil .

Si qqun peut m’aider merci.

mygif
89. numayos dit,
4 juillet, 2008 à 14:35

Ouupsss dsl j’ai trouvé finalement j’avais juste oublié d’importer une librairie.

seulement maintenant ou que je clique ça déclenche l’événement .zut

bon je vais cherché

Merci quand meme

mygif
92. Fabu dit,
5 juillet, 2008 à 16:29

A quand le code source de ce magnifique tutoriel?
Bonne continuation!

mygif
104. noStyle dit,
13 juillet, 2008 à 23:14

Bravo pour tout ces tutoriels d’une grande clareté et carrément indispensables!

Fini de baver devant les sites Papervision en se demandant comment c’est foutu, place à l’action…

Y aura-t-il d’autres tuto de prévus (import d’objet 3D depuis des softs 3D / interaction poussée objets-souris…)? Ce serait cool :-)

Merci encore

mygif
105. Ocelyn dit,
14 juillet, 2008 à 8:30

Oui, bien sur, il y a d’autre tutoriel prévu, mais c’est très difficile de trouver le temps de les réaliser :(

Ps: Jolie blog noStyle.

mygif
106. noStyle dit,
14 juillet, 2008 à 14:41

merci Ocelyn, j’essaie d’apprendre Papervision pour faire un site galerie photo et par le fait maitriser le « logiciel », tes tutos me sont donc d’une grande aide et j’imagine que cela doit prendre un paquet de temps à faire.

Par contre j’ai une petite question. Sur d’autres tutos venant d’autres sites j’ai vu à plusieurs reprises les auteurs créer un « container » rassemblant l’ensemble des éléments 3D appelés.
J’avoue ne pas avoir poussé plus loin pour le moment et ne pas savoir encore si ce container est vraiment utile ou pas mais pourquoi n’utilises tu pas cette façon de construire ton anim?

mygif
139. mimi dit,
26 août, 2008 à 23:09

Bonsoir,

Je cherche une solution à mon pb. J’ai utilisé le composant 1.5 pour tester papervison mais mon objet n’apparait pas dans mon preview.
Avec le composant 1.0 il apparait bien mais du coup le parametre SceneRotation n’apparrait pas!
Est ce un bugdu composant?
Merci de m’apporter une réponse.

mygif
140. Ocelyn dit,
27 août, 2008 à 6:45

Si par composant tu entends librairie, c’est que tu n’a pas installé la branche pv3d 2.0 (Greath White)…

Un peu de recherche de ta part sur ce blog aurait répondu à ta question.

mygif
183. Nore dit,
6 novembre, 2008 à 10:31

zarb, tout fait gentiment comme le tuto,
les images sont ok mais l’action ne se déclenche pas un brin. Pas d’erreur rien… une idée?

Voici le code complet :

package {

//Importation des librairies nécessaires à l’application
import flash.display.Sprite;
import flash.display.StageQuality;
import flash.events.Event;
import flash.events.MouseEvent;

import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.view.*;
import org.papervision3d.cameras.*;
import org.papervision3d.events.*;

import org.papervision3d.materials.*;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.objects.primitives.Cube;

public class ppvCube extends Sprite {

//Définition des variables nécessaires.
private var viewport:Viewport3D;
private var scene:Scene3D;
private var camera:Camera3D;
private var cube:Cube;
private var renderer:BasicRenderEngine;
private var _materials:MaterialsList;

private var cubeFront:MovieMaterial;
private var newClipFront:ClipFront;

private var rot:Number;

public function ppvCube() {
//Fonctions nécessaire à l’initialisation du projet
init();
}

private function init():void {
//Les fonctions nécessaires à l’initialisation de Papervision
initPapervision();
initMaterials();
initObjects();
initListener();
}

private function initPapervision():void {

//Création du viewport
viewport = new Viewport3D();

//Ajout du viewport à la scène si vous l’oubliez l’application marchera mais n’apparaitra pas
addChild( viewport );

//Création de la scene
scene = new Scene3D();

//Création de la caméra
camera = new Camera3D();

//Création du moteur de rendu
renderer = new BasicRenderEngine();

renderer.renderScene( scene, camera, viewport );
}

private function initMaterials():void{
_materials = new MaterialsList();

newClipFront = new ClipFront();
cubeFront = new MovieMaterial(newClipFront);
cubeFront.interactive = true;
cubeFront.smooth = true;

_materials.addMaterial(new ColorMaterial(0×550000), ‘top’);
_materials.addMaterial(new ColorMaterial(0×555500), ‘bottom’);
_materials.addMaterial(cubeFront, ‘front’);
_materials.addMaterial(cubeFront, ‘back’);
_materials.addMaterial(new ColorMaterial(0×000055), ‘left’);
_materials.addMaterial(new ColorMaterial(0×000000), ‘right’);
}

private function initObjects():void {
camera.focus = 100;
camera.zoom = 3;
rot = 1;

cube = new Cube(_materials, 800, 800, 800, 8, 8, 8, 0, 0);
scene.addChild( cube );
}

private function initListener():void{
// InteractiveScene3DEvent.OBJECT_PRESS
newClipFront.addEventListener(MouseEvent.CLICK,objectPress);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}

private function objectPress(e:MouseEvent):void{
trace(« face cliquée… »);
rot = rot*-1;
}

private function onEnterFrame (e:Event):void{
renderer.renderScene ( scene, camera, viewport );
cube.rotationY += rot;
}
}
}

mygif
184. Ocelyn dit,
6 novembre, 2008 à 11:20

Si j’ai bien compris, le cube s’affiche mais quand tu clique il ne se passe rien ?

Regarde avec :

viewport = new Viewport3D(1024, 700, true, true);

mygif
185. Nore dit,
6 novembre, 2008 à 11:49

Nickel ça fonctionne à présent.

ok je vois qu’on a new Viewport3D(vpWidth, vpHeight, bool, bool);

à quoi correspondent les deux flags booléens de la fin ?

mygif
186. Nore dit,
6 novembre, 2008 à 11:54

c’est bon, j’ai trouvé de la bonne doc :
Viewport3D(viewportWidth:Number = 640, viewportHeight:Number = 480, autoScaleToStage:Boolean = false, interactive:Boolean = false, autoClipping:Boolean = true, autoCulling:Boolean = true)

http://www.flashbookmarks.com/PV3D-GreatWhite-DOC/

Ocelyn tu devrais le mettre en lien sur site, ça rendrais service à pas mal de tes visiteurs ;}

mygif
203. Zen dit,
4 janvier, 2009 à 14:26

Bonjour bravo pour le tutoriel comme toujours
J’ai juste un petit bug:
En fait quand je crée mon cube tout fonctionne
mais des que j’applique un « Tweener » camera au lieu de « camera.zoom » je me retrouve avec une déformation visuelle du cube.
J’ai l’impression que la lentille à subit aussi une déformation (sa m’énerve ^^ )
Bien à vous

mygif
216. Kermitt dit,
19 janvier, 2009 à 13:29

Or sujet: Tu dit avoir besoin d’ aide financier, mais les pub ne suffise pas? Car j’aimerai pas voir ton site supprimer sous manque de moyen. mais tkt j’ai vu des pub qui intéresse :) . sinon on peut toujours fait des don.

Et toujours aussi bien ces tutoriel.

mygif
225. daboo dit,
3 février, 2009 à 14:40

Bonjour,

Il semble que la classe ClipFront n’existe plus… ?????

J’ai une erreur qui me rend fou donc j’en conclus ça.
Voila j’ai le meme code que Nore, j’importe tous les éléments correctement et quand je fais :
private var newClipFront:ClipFront;
il me met en erreur :
1046: Ce type est introuvable ou n’est pas une constante de compilation : ClipFront.

Merci de m’aider ;)

mygif
236. Creaspray dit,
20 mars, 2009 à 0:39

Salut,
merci ton site est génial!!!
Alors voila j’ai fait le code j’ai un cube qui marche , a coté j’ai fait une plane qui me sert de bouton et qui permet au cube de tourné!!
Or je voudrais que le cube tourne de manière fluide… et non quand je clik le cube fait juste le nombre de pixel demander… En gros je cherche a avoir une « transistion » j’ai essayer une boucle for avec un « i » qui varie mais non cela ne marche pas….
Peux tu me donner une petite idée stp?

merci beaucoup!!

mygif
243. Milhouse dit,
29 avril, 2009 à 16:54

Creaspray, il faut que tu utilises Tweener pour faire une animation fluide. Regarde dans la liste des tutoriels dans le menu du haut.

mygif
254. poz dit,
8 juin, 2009 à 13:45

Bonjour tout d’abord un grand merci pour le travail que vous effectuez ici.
J’ai suivi votre tutorial sur les cubes et pourtant une erreur ressort à chaque fois

//TypeError: Error #1009: Cannot access a property or method of a null object reference.
at org.papervision3d.objects.primitives::Cube$iinit()
at main/::initObjects()
at main/::init()
at main$iinit()

bizarre, j’ai essayer un débogage qui me dit que la ligne 121 de cube.as présente un problème,
je l’ai mis à jour rien à faire est -ce que quelqu’un aurait une idée ?

Merci d’avance pour votre aide.

mygif
389. bryanbeast dit,
10 octobre, 2009 à 6:20

Bonjour et merci pour tes tutoriels : rien de tel que la vidéo pour ne pas s’arracher les cheveux à lire et relire toujours la même phrase ou ligne incompréhensible d’un tuto-texte ;-)

J’ai cependant une question sur ce dernier :

package {
import flash.display.Sprite;
import flash.display.StageQuality;

import org.papervision3d.events.InteractiveScene3DEvent;
import org.papervision3d.view.*;
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.view.Viewport3D;

import org.papervision3d.materials.*;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.objects.primitives.Cube;

import org.papervision3d.events.*;
import caurina.transitions.Tweener;

import flash.events.Event;
import flash.events.MouseEvent;

public class Main extends Sprite {
private var viewport:Viewport3D;
private var scene:Scene3D;
private var camera:Camera3D;
private var renderer:BasicRenderEngine;

private var logo:BitmapFileMaterial;

private var cubeFront:MovieMaterial;
private var newClipFront:clipFront;
private var _materials:MaterialsList;
private var cube:Cube;

public function Main() {
init();
}
private function init():void {
initPapervision();
initMaterials();
initObjects();
initListeners();
}
private function initPapervision():void {
stage.quality = StageQuality.MEDIUM;
viewport = new Viewport3D(1024, 700, true, true);
addChild( viewport );
scene = new Scene3D();
camera = new Camera3D();
renderer = new BasicRenderEngine();
}
private function initMaterials():void {
logo=new BitmapFileMaterial(« 1.jpg »);

newClipFront = new clipFront();
cubeFront = new MovieMaterial(newClipFront);
cubeFront.interactive=true;
cubeFront.smooth = true;

_materials = new MaterialsList();
_materials.addMaterial(logo, »top »);
_materials.addMaterial(new ColorMaterial(0×55FF00), »bottom »);
_materials.addMaterial(cubeFront, »front »);
_materials.addMaterial(cubeFront, »back »);
_materials.addMaterial(logo, »left »);
_materials.addMaterial(logo, »right »);

}
private function initObjects():void {
camera.zoom = 30;
cube=new Cube(_materials,800,800,800,8,8,8,0,0);
scene.addChild(cube);
}
private function initListeners():void {
newClipFront.addEventListener( MouseEvent.CLICK, objectPressIndex );
addEventListener( Event.ENTER_FRAME, onEnterFrame );
}
private function objectPressIndex( event:MouseEvent ):void {
trace(« la face du cube a été cliquée »);
}
private function onEnterFrame( e:Event ):void {
renderer.renderScene( scene, camera, viewport );
cube.rotationY +=1;
}
}
}

Avec ce script qui m’a pourtant l’air d’être identique à ton code, toute les faces du cube sont clickable et déclenchent donc l’Event et le trace…
Un coup de main? un conseil?

Laisser un commentaire

Currently browsing Les Cubes sous Papervision

 Pseudo(*requis)

 Email (*privée)

 Site internet (*optionnel)