See site in english Voir le site en francais
Website skin:
home  download  forum  link  contact

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

Author Topic: CTD avec des mesh  (Read 3554 times)

0 Members and 1 Guest are viewing this topic.

Offline laserpithium

  • Legend
  • ******
  • Posts: 1473
  • Karma: 0
13 May 2006, 13:51:49
Salut à tous, à l'aide!

J'essaye de faire le truc suivant:
- J'enveloppe le DG dans un cube plus grand que lui.
- Je colle sur ce cube une texture semi-transparente.
Le but du jeu est que le pilote, dans le cockpit, voit le paysage à travers la texture collé sur mon cube.

Voici mon bout de code:

cube = oapiLoadMeshGlobal("cube1");
UINT idMesh = spacecraft->AddMesh(cube);
spacecraft->SetMeshVisibilityMode(idMesh,MESHVIS_COCKPIT);

Ce code est appelé à la toute fin du constructeur de ma MFD.

- Si je remplace MESHVIS_COCKPIT par MESHVIS_EXTERNAL, j'obtiens en vue extérieure mon DG dans un cube. Pas de problème.
- Par contre, si je mets MESHVIS_COCKPIT (ce dont j'ai besoin, je souhaite en effet que depuis l'intérieur du cockpit, on voit le paysage extérieur à
travers mon cube), j'ai un CTD quand je passe en mode virtual cockpit.
J'ai beau cherché, je ne vois pas...

Compilé avec les SDK O2k5 et O2k6, sous ces 2 versions de la SDK (et donc de Orbiter), même problème.

Des idées ?



La sagesse me cours après, mais je suis plus rapide
Si Dieu existe, butons-le !

Offline laserpithium

  • Legend
  • ******
  • Posts: 1473
  • Karma: 0
Reply #1 - 13 May 2006, 17:47:17
Ok, le problème a évolué.
Le problème du CTD est réglé.

Nouveau problème: le mesh est visible en external view, en internal view 2D et glass cockpit, mais est invisible en virtual cockpit view...

Des idées ?



La sagesse me cours après, mais je suis plus rapide
Si Dieu existe, butons-le !

Offline Profil supprimé

  • Newbie
  • *
  • Posts: 1
  • Karma: 0
Reply #2 - 13 May 2006, 18:41:31
A mon avis il n'y a rien à y faire car je crains un défaut d'Orbiter. En affet en vue interne on ne voit meme pas les flammes de rentrée don cje
pense que rien n'y fera. enfin je pense



Offline MisterC

  • Legend
  • ******
  • Posts: 2508
  • Karma: 0
Reply #3 - 13 May 2006, 19:36:12
Peut-être faire le mesh du cube plus grand... Apparemment, il se passe des trucs bizarres quand les meshes sont proches de la caméra.

Mais autre exemple de trucs bizarres propres à Orbiter : Lors de ma dernière mission d'assemblage d'Oberth-T, je voulais prendre une image
des deux astronautes en train de travailler en EVA depuis l'intérieur du module Modarm. Les deux astronautes étaient loin de la camera, et
travaillaient sur un module accroché au bras du modarm : et bien depuis l'intérieur du module, à travers la vitre, on voyait le bras, le module
accroché au bout, mais pas les astronautes. Si je déplacais un tout petit peu la vue pour la mettre à l'extérieur (donc, je ne regardais plus à
travers la vitre) et bien les deux astronautes réapparaissaient...

Bizarre...

Donc bon courage, laserpithium...




Offline tompouce

  • Legend
  • ******
  • Posts: 1214
  • Karma: 0
Reply #4 - 13 May 2006, 19:40:53
c'est que la vue du cokpits n'est peut etre pas a la bonne place au dessous ou en dessus, en avant ou en arrière
avec le soyuz le cokpits est au dessus


___________________________________________________
electro ... orbiter... FAN



Offline korben62

  • Hero Member
  • *****
  • Posts: 561
  • Karma: 0
Reply #5 - 14 May 2006, 02:18:25
Essaye "MESHVIS_ALWAYS" ???




Offline laserpithium

  • Legend
  • ******
  • Posts: 1473
  • Karma: 0
Reply #6 - 14 May 2006, 10:32:42
Même topo avec MESHVIS_ALWAYS.

Je crains un bug au niveau du z-buffer du moteur graphique, je vois pas d'autres explications. En plus, avec les navettes 3.8 et le VC 3.00 installé,
il y a un bug du même type: on voit le mesh par les hublots, sauf au niveau du hud. Comme le hud est une espèce de plaque semi-transparente, tout ça
sent à plein nez un problème de z-buffer...

J'ai sinon une autre idée pour résoudre le problème:
- Au lieu d'ajouter mon mesh avec AddMesh, je crée un vaisseau constitué de ce mesh, sans moteur sans inertie etc, et je l'attache au nez de
l'appareil que je pilote. Vu que l'on voit toujours les mesh non propriétaire du vaisseau (autres vaisseaux, batiments...), ça devrait marcher.

Cependant, n'ayant encore jamais programmé de vaisseau (uniquement des MFD), j'aimerai savoir si les trucs suivant sont réalisables facilement ou pas
avant de me lancer dedans:
- Créer un vaisseau sans masse, sans inertie, sans coefficient de frottement...
- Créer de manière dynamique un point d'attache au niveau du nez de n'importe quel vaisseau (avec un script du genre
SetAttachementPoint(_V(0,0,spacecraft->GetSize()).

Des idées ?



La sagesse me cours après, mais je suis plus rapide
Si Dieu existe, butons-le !

Offline MisterC

  • Legend
  • ******
  • Posts: 2508
  • Karma: 0
Reply #7 - 14 May 2006, 11:11:03
Oui, on voit en effet aussi ce bug dans les navettes... Ce qui est curieux, c'est que le mesh n'est pas visible que lorsqu'il est en soute (c'est à
dire près de l'observateur ?). Quand il est par exemple accroché au bout du RMS, on le voit très bien.

Tu as essayé, pour voir, de créer un cube beaucoup plus grand ?




Offline laserpithium

  • Legend
  • ******
  • Posts: 1473
  • Karma: 0
Reply #8 - 14 May 2006, 18:33:41
Bon, j'ai résolu le problème en rusant : au lieu d'ajouter un mesh au vaisseau, j'ajoute un vaisseau virtuel à la simulation que je docke à un docking
port virtuel du vaisseau courant.

ça marche du tonnerre.

J'ai plus qu'à trouver comment changer dynamiquement des textures durant la simulation et à créer ces dernières, et, sans fausse modestie, ça va
arracher très très grave (enfin j'espère).

Stay tuned !



La sagesse me cours après, mais je suis plus rapide
Si Dieu existe, butons-le !

Offline korben62

  • Hero Member
  • *****
  • Posts: 561
  • Karma: 0
Reply #9 - 15 May 2006, 14:06:53
Quote
J'ai plus qu'à trouver comment changer dynamiquement des textures durant la simulation et à créer ces dernières

Oh ça c'est chaud, justement je réfléchissais au truc
"Comment faire une explosion ou une boule de feu (genre missile a photon de star treck)"

Je ne pense pas que l'on puisse faire changer la texture d'un mesh, j'ai tourné le truc dans tous les sens
et toujours pas trouvé la solution
Par contre il y a une alternative
dans le cas de l'explosion j'utilise plusieurs spheres concentriques texturées et un truster USER (on peut changer sa texture, un peu comme
les projos du XB)
je fais disparaitre les spheres avec un SetMeshVisibilityMode
j'allume le truster user et fait augmenter sa puissance ( le diametre de la boule augmente)
je fait apparaitre la sphere exterieure
j'aumente le scale de la sphere exterieure (ça donne un effet d'onde de choc des plus jolis) jusqu'a ce que la distance la rende
quasi invisible.
pendant ce temps, je fais apparitre les autres spheres concentiques (qui ont une texture style magma semi transparent)
en faisant augmenter leur diametre et les faisant tourner dans des sens différents
a la fin je reduis les spheres interieures et le truster et fais disparaitre la sphare exterieure
tout l'ensemble etant un vaisseaux 'missile photon" avec tout ses moteurs
dont le truster MAIN, a lui seul, une texture;  ça donne un missile (enfin plutot un vaisseau KAMIKASE, car il faut le piloter et le faire exploser )
assez reussi.

Je t'aurais bien mis le code mais j'ai eu un crash disk ce week end et j'ai paumé pas mal de chose
entre autre une partie de mon sankukai (heureuse j'avais une sauvegarde,  un peu ancienne helas)




Offline laserpithium

  • Legend
  • ******
  • Posts: 1473
  • Karma: 0
Reply #10 - 15 May 2006, 19:42:47
Salut korben62,

En fait, tout mes espoirs reposent sur 2 remarques de Martin dans Reference_API.doc:
- Il y fait mention d'une fonction oapiSetTexture, qui semble permettre d'appliquer dynamiquement une texture à un objet.
Mais si cette fonction est cité dans la doc est présente dans OrbiterAPI.h, elle n'est pas détaillée dans la doc. Oublis ?
J'espère.

- Dans une des docs, Martin explique qu'au niveau de la déclaration des textures dans le fichier mesh, "il faut mettre le
flag D en face du nom des textures qui seront chargées dynamiquement" (une sombre histoire de décompression préventive avant
la simulation).

Brèf, j'espère....



La sagesse me cours après, mais je suis plus rapide
Si Dieu existe, butons-le !

Offline korben62

  • Hero Member
  • *****
  • Posts: 561
  • Karma: 0
Reply #11 - 16 May 2006, 00:34:10

« Last Edit: 16 May 2006, 00:34:10 by korben62 »