Salut à tous
Voila mon problem, en observant le code pour faire bouger les cubes/sphères (exemple 2),je n'ai pas tout à fait compris comment faire :s mon but étant de pouvoir faire bouger une camera avec les touches que je désire dans un programme.
Est-ce que quelque'un pourai m'expliquer dans un source comment faire ? Merci d'avance
Hors ligne
heu .. j'aurais pu en C++, mais la non dsl
Hors ligne
Heu faire bouger une caméra par ton propre code implique un minimum de connaissance dans les vecteurs je pense.
Avant de te lancer dans les mouvements de caméra, il serait peut être plus sage d'observer et comprendre le fonctionnement d'un mouvement basique sur un simple objet .
Hors ligne
Sinon pour débuter tu peux aussi faire 6 boutons : chacun pilote le mouvement de la caméra sur un axe (x, y ,z) (un bouton plus et u bouton moins pour chaque axe) et aprés c'est de la manipulation basique de vector3d.
Bon courage
Hors ligne
En fai je cherche surtout à faire un code simple du style
//de façon grossière:
if (key_z press down)
Camera.Posiotion = Vectord 3d +1
Donc si vous avez des expemle du même type je suis preneur car je patoge un peut sur ce domaine
Hors ligne
En observant de plus près l'example 4 en C# j'ai pu remanier mon code mais je n'arrive pas à comprendre pourquoi les touches que j'ai assignées ne fonctionnes pas voici l'éssentiel de mon code :
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using Irrlicht;
using Irrlicht.video;
using Irrlicht.core;
using Irrlicht.scene;
using Irrlicht.gui;
using Irrlicht.io;
namespace _d_real
{
class Program
{
ICameraSceneNode node = null;
IrrlichtDevice device = null;
/// <summary>
/// Point d'entrée principal de l'application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
Program prog = new Program();
prog.run();
}
public bool OnEvent(Event p_e)
{
if (node != null && p_e.Type == EventType.KeyInput && !p_e.KeyPressedDown)
{
switch (p_e.Key)
{
case KeyCode.KEY_ESCAPE:
device.CloseDevice();
break;
case KeyCode.KEY_KEY_Z:
case KeyCode.KEY_KEY_S:
{
vector3d v = node.Position;
v.Z += p_e.Key == KeyCode.KEY_KEY_Z ? 10.0f : 0.0f;
node.Position = v;
}
return true;
}
}
return false;
}
public void run()
{
// start up the engine
IrrlichtDevice device = new IrrlichtDevice(Irrlicht.video.DriverType.OPENGL,new dimension2d(1024, 768), 32, false, true, true);
device.WindowCaption = "Moteur-irrlicht";
//scene et driver en place
ISceneManager smgr = device.SceneManager;
IVideoDriver driver = device.VideoDriver;
//load map
IAnimatedMesh levelmesh = smgr.GetMesh("map street/01.dmf");
//envoi collision type OctTree
ISceneNode levelnode = null;
if (levelmesh != null)
levelnode = smgr.AddOctTreeSceneNode(levelmesh.GetMesh(0), null, 0);
ITriangleSelector selector = null;
if (levelnode != null)
{
levelnode.Position = new vector3d(0, 0, 0);
selector = smgr.CreateOctTreeTriangleSelector(levelmesh.GetMesh(0), levelnode, 128);
}
//camera
node = smgr.AddCameraSceneNode(null, new vector3d(-3000, 400, -10), new vector3d(), -1);
//reponse de collision
ISceneNodeAnimator anim = smgr.CreateCollisionResponseAnimator(selector, node, new vector3d(10, 150, 10),
new vector3d(0, -1, 0), new vector3d(0, 50, 0), 0);
node.AddAnimator(anim);
int fps = 0;
while (device.Run())
{
if (device.WindowActive)
{
device.VideoDriver.BeginScene(true, true, new Color(100, 100, 100, 100));
device.SceneManager.DrawAll();
device.VideoDriver.EndScene();
// display frames per second value
if (fps != device.VideoDriver.FPS)
{
fps = device.VideoDriver.FPS;
device.WindowCaption =
"Moteur - irrlicht [" +
device.VideoDriver.Name + "] fps:" + fps;
}
}
}
}
}
}
Si quelqu'un peut m'aider à comprendre pourquoi même ma touche "escape" ne ferme pas mon programme
Hors ligne
sauf erreur de ma part, mais il me semble que pour irrlicht et les events c'est comme ça mais je me trompe peut être de version car j'utilise la svn :
public bool OnEvent(Event &p_e)
Ensuite je ne vois nullle par un endroit ou tu assigne event à device c'est peut être ça qu'il te manque...
Hors ligne
[Ensuite je ne vois nullle par un endroit ou tu assigne event à device c'est peut être ça qu'il te manque...]
C'est à dire ? :s
Hors ligne
Je crois que tu utilises le wrapper officiel ? Si oui, ne faudrait-il pas que ta classe hérite de IEventReceiver pour que tu puisses utiliser les events ?
En tout cas, de mémoire, c'est ce qu'il faut faire avec ce wrapper
Hors ligne
ba en faite t'avais raison Copland (donc par concéquence je croi que je n'utillise pas la version officiel du wrapper Kedu,même si franchement je ne sait pas ce qu'est un "wrapper":s) c'était ça qui manquais:
//
class Program : IEventReceiver
...
device.EventReceiver = this;
node = smgr.AddCameraSceneNode(null, new vector3d(-3000, 400, -10), new vector3d(), 0);
//
Merci pour votre aide ,à ce propos j'ai encore un autre soucis,ma camera tourne toujours autour du même point,je pe me déplacer à ma guise mais je fixe toujours le même point.
Comment pourai-je faire pour fixer ma vision par rapport à ma souris ? (comme dans tous bon jeux qui se respecte )
Dernière modification par N10 (05-11-2006 15:40:16)
Hors ligne
D'après ce que je vois tu utilises effectivement le wrapper officiel d'Irrlicht. Cette librairie officielle permet d'utiliser Irrlicht qui n'est pas développé dans un language .net.
Par contre comme tu l'as remarqué avec ce wrapper officiel il fallait hériter ta classe de IEventReceiver. Ce qui est pas trop dans la phylosophie de .net cette manière de gérer les events. C'est pourquoi je te recommande d'utiliser plutôt le wrapper non officiel IrrlichtCP.net qui est à mon sens moins déroutant que le wrapper officiel.
Et pour répondre à ta question au niveau gestion des caméras, tu as plusieurs types de caméra de disponible. Essaye les pour voir celle qui te semble la plus adaptée. Les tutoriaux pourront t'en donner également des exemples pour aller plus vite.
Hors ligne
Merci pour tes infos Kedu tu m'évite de posé un topic à ce sujet (entre officiel et non officiel)
En éffets je pourais me servire des cameras préfaites seulement certain détails me gènes notament la simmulation pour faire sauter la caméra (camera scene node fps). Je préfère remanier la camera à ma guise
...et donc j'ai toujours se problème de la fixation de vision de ma camera :s
Dernière modification par N10 (05-11-2006 19:37:42)
Hors ligne
Options | Liens officiels | Caractéristiques | Statistiques | Communauté |
---|---|---|---|---|
Corrections |
|
xhtml 1.0 css 2.1 Propulsé par FluxBB Traduit par FluxBB.fr |
882 membres 1429 sujets 11119 messages |
Dernier membre inscrit: LiseBuisson96 42 invités en ligne Aucun membre connecté RSS Feed |