Pages: 1
- Accueil forums
- » Aide Irrlicht.NET et .NET CP
- » [C#-VS 2005] Déplacement d'objets ?
30-10-2006 13:30:02
- N10
- Membres

- Date d'inscription:
- Messages: 46
- IP: 80.170.32.209
- Courriel
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
31-10-2006 18:24:03
- Dekron
- Membres
- Date d'inscription:
- Messages: 46
- IP: 172.187.122.55
- Courriel Site web
heu .. j'aurais pu en C++, mais la non dsl ![]()
Visitez Arcis : MMORPG ammateur utilisant irrlicht !
Etudiant ingénieur, maitrise C++, connaissances python & php.
Hors ligne
31-10-2006 18:51:44
- Copland
- Modérateurs
- Date d'inscription:
- Messages: 657
- IP: 90.16.11.244
- Courriel Site web
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
.
Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.
Hors ligne
01-11-2006 09:27:32
- wizad
- Membres

- Date d'inscription:
- Messages: 106
- IP: 82.229.59.8
- Courriel
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
02-11-2006 09:57:38
- N10
- Membres

- Date d'inscription:
- Messages: 46
- IP: 213.103.120.152
- Courriel
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
04-11-2006 10:26:22
- N10
- Membres

- Date d'inscription:
- Messages: 46
- IP: 83.179.143.45
- Courriel
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
04-11-2006 17:20:06
- Copland
- Modérateurs
- Date d'inscription:
- Messages: 657
- IP: 90.5.174.99
- Courriel Site web
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...
Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.
Hors ligne
04-11-2006 22:02:06
- N10
- Membres

- Date d'inscription:
- Messages: 46
- IP: 83.179.196.203
- Courriel
[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
05-11-2006 09:12:16
- kedu
- Modérateurs

- Date d'inscription:
- Messages: 155
- IP: 89.86.113.204
- Courriel
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
05-11-2006 14:39:24
- N10
- Membres

- Date d'inscription:
- Messages: 46
- IP: 83.179.111.4
- Courriel
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
)
Hors ligne
05-11-2006 18:04:18
- kedu
- Modérateurs

- Date d'inscription:
- Messages: 155
- IP: 89.86.113.204
- Courriel
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
05-11-2006 18:36:29
- N10
- Membres

- Date d'inscription:
- Messages: 46
- IP: 83.179.111.4
- Courriel
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
Hors ligne



