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: Silbervogel pour Orbiter: mon premier add-on...  (Read 6051 times)

0 Members and 1 Guest are viewing this topic.

Offline antoo

  • Legend
  • ******
  • Posts: 3383
  • Country: France fr
  • Karma: 138
  • 2, breaking left!
    • Forum de mon Asso d'Echasses Urbaines
Reply #25 - 10 August 2016, 21:28:07
chai pô...

---------------------------------------------------------------------------------------------------
"ET C´EST PARTI!!" Youri Gagarine au lancement de vostok 1 le 12 avril 1961
Ma chaîne Youtube : Airsoft, FPS, Simulation : http://www.youtube.com/channel/UCrzIPMeULZU6lR4M6DVsH2g

Offline Bibi Uncle

  • Legend
  • ******
  • Posts: 2260
  • Country: Canada ca
  • Karma: 15
    • Site web perso
Reply #26 - 11 August 2016, 01:14:59
Sous Visual Studio 2015, version anglaise, tu fais clic droit sur le projet, puis Properties. Ensuite, c'est sous Configuration Properties > C/C++ > General. La première case, c'est Additional Include Directories. Là, tu ajoutes C:\Games\Orbiter100830\Orbitersdk\include (il faut séparer les différents répertoires par des points-virgule).

C'est mieux d'utiliser des macros pour ce genre de truc (genre $(SolutionDir)/Orbiter ou un truc du genre), mais ça devrait fonctionner comme ça.

Quote
Comment as-tu fait? Lier toutes les librairies une par une a marché? (lier le dossier contenant les librairies devrait le faire normalement)

Avec Visual Studio (et gcc d'ailleurs), il faut explicitement spécifier les librairies, pas seulement le dossier. Toutefois, il est possible d'ajouter des #pragma comment(lib, "orbiter") dans les header pour spécifier avec quelles librairies il faut linker. Je crois que c'est ce que orbiter.h fait, mais je n'ai pas le code devant moi. Mais cette méthode n'est pas du tout standardisé. D'ailleurs, gcc ne le supporte pas.

« Last Edit: 11 August 2016, 01:23:02 by Bibi Uncle »
Bibi Uncle
"Can't keep my eyes from the circling sky
Tongue-tied and twisted just an earth-bound misfit"

- Learning to Fly, Pink Floyd

Mireille :love:

Offline Hawxx

  • Full Member
  • ***
  • Posts: 155
  • Karma: 5
Reply #27 - 11 August 2016, 01:38:48
J'ai juste remplacé [par] le chemin complet

As-tu "C:\Games\Orbiter100830\Orbitersdk\include" dans la propriété "include" de VS2015? Si oui, il ne devrait y avoir aucun effet entre la première méthode d'inclusion et la seconde.

Oui, je l'ai ^^
D'où les heures perdues à essayer de résoudre le souci d'ailleurs. C'est très bizzare, tous les chemins sont bons mais il ne trouve pas le Include si je ne spécifie pas le chemin complet.

Si quelqu'un s'y connait et se sent de m'aider pour configurer Visual 2015, je galère à compiler mes DLL... :(

Offline Hawxx

  • Full Member
  • ***
  • Posts: 155
  • Karma: 5
Reply #28 - 14 October 2016, 23:49:35
Salut!

Je uppe mon topic car un truc m'a traversé l'esprit: vu qu'Orbiter 2016 est arrivé, ne vaut-il pas mieux que je développe mon machin sous cette version plutôt que sous 2010? La compatibilité entre les deux est-elle suffisante pour que je reste sous l'ancien Orbiter sans trop me préoccuper de comment ça se passera si on installe l'add-on sur 2016?

 :trucdeouf:

Si quelqu'un s'y connait et se sent de m'aider pour configurer Visual 2015, je galère à compiler mes DLL... :(

Offline Milouse

  • Legend
  • ******
  • Posts: 1237
  • Country: France fr
  • Karma: 85
Reply #29 - 15 October 2016, 11:08:59
Bonjour,

La logique serait de développer ton projet pour Orbiter 2016, même s'il y a de grandes (mal)chances que ce soit au détriment de la version 2010. ;)

Rien ne le rattache à la version précédente : indépendant vis-à-vis d'autres addons, pas de mise à jour à prévoir... Y a-t-il une fonction nécessaire dans la SDK de 2010 qui n'existe pas dans la 2016 ? :wonder:
Orbiter 2016 fait son chemin dans la communauté, même si des irréductibles (dont je fais partie :) ) continuent aussi à utiliser la version 2010.


Milouse


Online jacquesmomo

  • Il parait que je suis une
  • Legend
  • ******
  • Posts: 5556
  • Country: France fr
  • Karma: 274
  • Plus on rate, plus on a de chances de réussir !..
Reply #30 - 15 October 2016, 19:10:34
Si j'arrive à finir cet addon, je jure solennellement de rédiger un tuto sur le paramétrage de VS 2015 pour la réalisation de dll destinés à Orbiter 2010.  :)
:doubt: 2010 ? :trucdeouf: euh... et 2016 ???

 :wor: En tout cas je retiens ta promesse !!!  :badsmile:

Mes add-ons sont là !

Offline Hawxx

  • Full Member
  • ***
  • Posts: 155
  • Karma: 5
Reply #31 - 17 October 2016, 12:19:10
Bonjour,
Rien ne le rattache à la version précédente : indépendant vis-à-vis d'autres addons, pas de mise à jour à prévoir... Y a-t-il une fonction nécessaire dans la SDK de 2010 qui n'existe pas dans la 2016 ? :wonder:
Milouse

Non, c'est un vaisseau très simple donc rien de bien sorcier... La vraie question c'est plutôt est-ce-que 2016 est suffisamment mature pour servir de plateforme de débugguage?


EDIT: D'ailleurs, si quelqu'un sait où trouver le 3DS2msh de Vinka, je suis preneur :(

« Last Edit: 17 October 2016, 12:35:14 by Hawxx »
Si quelqu'un s'y connait et se sent de m'aider pour configurer Visual 2015, je galère à compiler mes DLL... :(

Offline Milouse

  • Legend
  • ******
  • Posts: 1237
  • Country: France fr
  • Karma: 85
Reply #32 - 18 October 2016, 10:50:10
Bonjour,

Le site de Vinka est archivé ici : http://web.archive.org/web/20131206133940/http:/users.swing.be/vinka/ ;)


Milouse


Offline Hawxx

  • Full Member
  • ***
  • Posts: 155
  • Karma: 5
Reply #33 - 21 October 2016, 22:32:26
Ça avance! A deux à l'heure et je ne sais pas encore vers quelle destination, mais ça avance...




Bon, plusieurs problèmes:
-Je passe à travers le modèle si je zoome plus (problème de dimensions?)
-La texture que j'ai appliqué (un métal) et dont le dds est bien dans le répertoire d'Orbiter n’apparaît pas sur le vaisseau ingame.
-le simu crashe dès que j'essaye de controler le vaisseau, même en utilisant la DLL d'un vaisseau déjà existant (ShuttlePB, pour ne pas la mentionner).

M'enfin je suis content pour ce soir, je verrai ça demain.  :)

Petit rapport de situation:
-Modèle 3D => terminé, à importer dans le jeu
-Textures => converties en DDS
-DLL => base (ShuttlePB) en cours d'édition, mais deux trois soucis de compil et beaucoup de choses à revoir
-Effets => A faire
-Animations (?) => A faire
-Multistage => A faire
-Cockpit (?) => A faire

De quoi m'occuper.  :badsmile:

Si quelqu'un s'y connait et se sent de m'aider pour configurer Visual 2015, je galère à compiler mes DLL... :(

Online jacquesmomo

  • Il parait que je suis une
  • Legend
  • ******
  • Posts: 5556
  • Country: France fr
  • Karma: 274
  • Plus on rate, plus on a de chances de réussir !..
Reply #34 - 21 October 2016, 22:41:57
-La texture que j'ai appliqué (un métal) et dont le dds est bien dans le répertoire d'Orbiter n’apparaît pas sur le vaisseau ingame.
Edite ton fichier mesh et dis moi ce qu'il y a la fin ...

Tu dois avoir tes (ou ta) textures déclarées...  :wonder:

Mes add-ons sont là !

Offline Hawxx

  • Full Member
  • ***
  • Posts: 155
  • Karma: 5
Reply #35 - 21 October 2016, 22:48:33
Code: [Select]
MATERIALS 2
Foregrou0
metal11
MATERIAL Foregrou0
0 0 0 1
0 0 0 1
0.329412 0.329412 0.329412 1 0 0
0 0 0 1
MATERIAL metal11
0 0 0 1
0.639216 0.647059 0.666667 1
0.329412 0.329412 0.329412 1 0 0
0 0 0 1
TEXTURES 1
metal1.dds

Ma texture s'appelle bien metal1.dds
Par contre je n'ai aucune idée de ce que qu'est metal11...

Pour les dimensions, petit souci: sketchup me sors bien un vaisseau de 33 mètres de long, mais dans Orbiter il doit faire tout au plus 33 cm:




Ça plus le souci d'axes (qui a l'air normal, d'après ce que je lis), ça annonce beaucoup de boulot sur le modèle.


EDIT: trouvé, c'est la faute au MASTER_SCALE de Msh Converter, qui me sort une valeur démente.

Code: [Select]
MASTER_SCALE 39.3701
Quand je repasse à 1, c'est beaucoup mieux...


« Last Edit: 21 October 2016, 23:14:42 by Hawxx »
Si quelqu'un s'y connait et se sent de m'aider pour configurer Visual 2015, je galère à compiler mes DLL... :(

Offline Milouse

  • Legend
  • ******
  • Posts: 1237
  • Country: France fr
  • Karma: 85
Reply #36 - 22 October 2016, 11:34:09
Bonjour,

Première victoire, le mesh apparaît dans Orbiter ! :eek:
Essaye d'enregistrer la texture au format DDS DXT1, si ton logiciel de conversion le permet ; à moins que la solution soit ailleurs.
Foregrou0 et metal11 sont des materials, qui définissent l'aspect du mesh (mat, brillant, satiné, laqué, etc.).


Milouse


Online jacquesmomo

  • Il parait que je suis une
  • Legend
  • ******
  • Posts: 5556
  • Country: France fr
  • Karma: 274
  • Plus on rate, plus on a de chances de réussir !..
Reply #37 - 22 October 2016, 13:16:01
ta texture doit donc se trouver dans <ton_orbiter>\textures

quant au "materials" (peu importe le nom) c'est effectivement comme le dit milouse la couleur de fond des groupes considérés.

Essaye d'installer "meshwizard" cela te permetra de voir pas mal de chose, et en particulier de mettre ton vaisseau à la bonne dimension si nécessaire.

pour la texture, édite (encore) le fichier mesh, et vois si tes "groupes" ont bien la texture définie :

tu devrais avoir un  truc comme ça :

(...)
MATERIAL 1 (ou 2)
TEXTURE 1
GEOM 56 46
17.500999 12.409952 48.299801 0.000000 1.000000 0.000006
(etc...)

si tu as TEXTURE 0 là, y a pas de texture...


Mes add-ons sont là !

Offline Hawxx

  • Full Member
  • ***
  • Posts: 155
  • Karma: 5
Reply #38 - 23 October 2016, 10:23:07
Je vais voir ça. Merci pour l'aide en tiut cas, c'est grâce à ça que les nouveaux comme moi avancent :)

Si quelqu'un s'y connait et se sent de m'aider pour configurer Visual 2015, je galère à compiler mes DLL... :(

Offline Hawxx

  • Full Member
  • ***
  • Posts: 155
  • Karma: 5
Reply #39 - 27 October 2016, 16:15:07
Bon... Nouveau souci (je pense que je les aurai tous).  :badsmile:

J'ai un msh qui est correctement lu par orbiter, celui qui m'a servi pour les screenshots ci-dessus. Sauf que dans mesh Wizzzard, il est invisible.  :wall:




Une idée du pourquoi du comment?

 :merci:


EDIT: j'ai trouvé, mais je crashe sur une erreur Runtime 13. Je vais débuguer le fichier .msh...

« Last Edit: 27 October 2016, 16:55:10 by Hawxx »
Si quelqu'un s'y connait et se sent de m'aider pour configurer Visual 2015, je galère à compiler mes DLL... :(

Online jacquesmomo

  • Il parait que je suis une
  • Legend
  • ******
  • Posts: 5556
  • Country: France fr
  • Karma: 274
  • Plus on rate, plus on a de chances de réussir !..
Reply #40 - 27 October 2016, 18:48:43
L'erreur runtime 13 ne veut rien dire... et tout dire à la fois !!!  :worry:

Effectivement j'ai constaté que Orbiter est plus souple que MeshWizard vis à vis des meshes....
Bref, MeshWizard ne pardonne rien !!!

La premiere chose à regarder, c'est qu'il y a bien le nombre de groupes déclarés au début du fichier *.msh.

MSHX1 <======= doit toujours être là
GROUPS  nn

nn étant le nombre total de groupe dans ton mesh.

Ensuite vérifie que (à la fin du fichier) le nombre des "materials" est juste, et que leurs noms respectif soit conforme (et dans le bon ordre).
Je te rappelle le principe : (c'est un exemple)

MATERIALS 2
Blanc-txt
Blanc-kc
MATERIAL Blanc-txt
 1  1  1  1
 1  1  1  1
 1  1  1  1  0
 .11  .11  .11  1
MATERIAL Blanc-kc
 .87  .87  .87  1
 .87  .87  .87  1
 1  1  1  1  0
 .11  .11  .11  1


Enfin, vérifie que : si par exemple tu as 5 MATERIALS déclarés  tu n'aies pas un groupe avec MATERIAL 6
(MeshWizard n'aime pas alors que Orbiter ignore....)

Et donc, au début de chaque groupe, tu dois avoir :

LABEL toto <===== facultatif
MATERIAL 2 <========== numéro du "matérial" du groupe (peut être "0" aussi)
TEXTURE 0 <========== numéro de la texture affectée au groupe (si "0" pas de texture)
GEOM 84 44 ;Group 1  Blanc-kC <==== après ";" indication facultative)
(puis tous les nombres)....


Et pour terminer, vérifie bien que dans ton fichier tu aies bien des "." (points) et non pas des "," (virgules).
cela m'est arrivé une fois....

En tout cas bon courage....



Mes add-ons sont là !

Offline Hawxx

  • Full Member
  • ***
  • Posts: 155
  • Karma: 5
Reply #41 - 29 October 2016, 18:45:28
En voilà un post qu'il est utile...  :eek:

Je vais revérifier l'intégralité de mon mesh en gardant ça en tête, merci!

Si quelqu'un s'y connait et se sent de m'aider pour configurer Visual 2015, je galère à compiler mes DLL... :(

Offline Hawxx

  • Full Member
  • ***
  • Posts: 155
  • Karma: 5
Reply #42 - 02 June 2017, 23:17:28
Hello!Petit message pour dire que le projet suit son long cours, mais que j'ai un petit problème de texture. J'ai décidé de faire de la rampe de lancement la base de départ du vaisseau. Sauf que j'ai un problème de texture:




Au-delà de ce souci, je me demande quel est le meilleur moyen d'interfacer le vaisseau et le rail. Je vais devoir réfléchir à ça.


EDIT: le modèle 3D a lui aussi évolué. La soute à bombe ne figurera pas sur la version Orbiter mais j'espère réussir à y mettre le train. :)





« Last Edit: 02 June 2017, 23:33:44 by Hawxx »
Si quelqu'un s'y connait et se sent de m'aider pour configurer Visual 2015, je galère à compiler mes DLL... :(

Online jacquesmomo

  • Il parait que je suis une
  • Legend
  • ******
  • Posts: 5556
  • Country: France fr
  • Karma: 274
  • Plus on rate, plus on a de chances de réussir !..
Reply #43 - 02 June 2017, 23:53:53
Pour les textures, je peux probablement t'aider...

Je te donne mon adresse mail en MP pour que tu puisse m'envoyer tes fichiers...

 :beer: A+

Mes add-ons sont là !

Offline antoo

  • Legend
  • ******
  • Posts: 3383
  • Country: France fr
  • Karma: 138
  • 2, breaking left!
    • Forum de mon Asso d'Echasses Urbaines
Reply #44 - 03 June 2017, 11:09:27
Salut, c'est joli :) ! La soute à bombes pourrait devenir... une soute à cargo? Même sans UCGO, on peut toujours utiliser Universal Cargo Deck ;) .

A+
antoo

---------------------------------------------------------------------------------------------------
"ET C´EST PARTI!!" Youri Gagarine au lancement de vostok 1 le 12 avril 1961
Ma chaîne Youtube : Airsoft, FPS, Simulation : http://www.youtube.com/channel/UCrzIPMeULZU6lR4M6DVsH2g

Online jacquesmomo

  • Il parait que je suis une
  • Legend
  • ******
  • Posts: 5556
  • Country: France fr
  • Karma: 274
  • Plus on rate, plus on a de chances de réussir !..
Reply #45 - 03 June 2017, 15:38:20
Bon.

J'ai bien reçu les fichiers de toi, Hawxx...

Alors je vais étudier ça...

Je pense continuer ce fil avec les explications, cela pourra servir à d'autres.

En prologue, juste pour info, je vous explique comment je procède.
Il est bien évident que ma méthode n'est peut-être pas la plus académique (j'ai appris tout seul, en rapelant que Papyref m'avais donné de bons tuyaux et que cela m'a bien aidé à l'époque) mais elle a l'avantage d'être efficace.

Voici ma méthode :

1) je modélise avec anim8or.
ce logiciel a l'avantage d'être gratuit, simple d'apprentissage, et surtout bien adapté pour orbiter.
bien sûr il n'a pas toutes les fonctions de 3DMax ni de Sketchup...
Je pense que si tu continue à utiliser Sketchup, il vaut mieux exporter en *.obj pour l'importation dans anim8or...

2) ensuite, une fois que j'ai fait mon "objet" (dans anim8or) je l'exporte en obj pour le texturer avec UVMapper.
Ce prog est gratuit (du moins sa version de base).
Pourquoi je ne texture pas dans anim8or ?
- d'abord parce que je ne sais pas.... :wonder:
- ensuite je trouve que ce soft est très pratique pour faire des textures "partagées"

Exemple :





3) Donc, après avoir texturé avec UVMapper, je sauve le mesh en obj, et les "repères" de texture en bmp.

Ensuite (ça va, vous suivez ?) :)

4) je réintègre le mesh (en obj) dans anim8or, et je l'exporte en *.msh.
et je prend le "calque.bmp" dans photoshop, et je fait mes petits dessins. Puis je sauve en dds.
J'ai pris l'habitude de faire des textures en 1024x1024. Taille suffisante pour avoir plusieurs textures d'objets, et si l'objet est grand (ce qui est le cas de ta rampe) en général la définition est suffisante.
Sinon il faut "découper" l'objet, ce qui dans ton cas pourrait être utile.
(je vais réfléchir et soumettre en ligne mon avis)
A ce sujet, anim8or est très bien pour économiser les "triangles" car dans ton mesh il y en a pas mal à supprimer. (Conseil avisé de Dan, pour rendre à césar etc....)
Pour un objet "décor" intégré dans un fichier "base" c'est mieux.
Pour un "vaisseau" c'est moins grave, les machines actuelle étant suffisamment performantes...

5) J'édite avec notepad de ouindô le fichier.msh et je lui rajoute la texture : en effet Anim8or, quand il exporte en msh, ne sais pas le faire. Par contre les coordonnées des textures y sont.

6) facultatif mais utile j'ouvre le fichier avec MeshWizard qui est un petit prog indispensable pour les bidouilles finales souvent nécessaires.
Là aussi, on verra plus tard pourquoi.

7) Enfin je lance Orbiter. Si tout s'est bien passé, on doit voir l'objet...


Donc en résumé, voici les fichiers que j'ai pour le "travail" :
- fichier de modélisation *.an8
- fichier temporaire *.obj servant à aller de anim8tor ver UVMapper et lycée de Versailles.... heu vice-versa  :doubt:
- fichier *.bmp servant de "gabarit" (ou patron") pour faire mes textures, *.psp pour le "tavail" dans photoshop, et enfin *.dds pour orbiter

et bien sur le fichier *.cfg pour intégrer l'objet à une base.

Inutile de vous dire qu'il vaut mieux être organisés pour ne pas se mélanger les pédales et les fichiers... :music:

Voilà en prélude.

Je vais donc faire pas à pas (et petit à petit) la manip pour essayer de régler le problème, en expliquant le pourquoi du comment.
Ma méthode est peut-être curieuse pour les habitués de la 3D, mais elle est efficace.

:prof: Fin de la première leçon, sortez en rang 2 par 2, et interro écrite la semaine prochaine....

La suite (ou plutôt) le début très bientôt....

Mes add-ons sont là !

Online jacquesmomo

  • Il parait que je suis une
  • Legend
  • ******
  • Posts: 5556
  • Country: France fr
  • Karma: 274
  • Plus on rate, plus on a de chances de réussir !..
Reply #46 - 03 June 2017, 18:55:28
LEÇON n°1

Voici donc le début d'un petit tuto qui, j'espère, te permettra d'avancer un peu pour la création de bases et d'objets.
Et si cela peut donner l'envie à d'autres, cela serait bien....

Je rappelle que lorsque j'ai commencé, il y a maintenant quelques années, je n'y connaissais rien ni en 3D, et photoshop était pour moi une usine à Gaz...
Tout ceci pour vous dire que n'importe qui peut s'y mettre.
Il suffit d'avoir le temps, l'envie, et une femme (ou copine) compréhensive. ;) :sage:
Les logiciels nécessaires sont tous gratuits, sauf Photoshop, mais je crois que "Gimp" fait la même chose.

A ce sujet, signalons que Papyref m'a bien aidé au début, me permettant de comprendre petit à petit la philosophie de tous ces machins et d'avancer dans l'utilisation des différents logiciels nécessaires, au détriment de mes heures de sommeil.
Papyref m'avait prévenu : la 3D comporte des risques de dépendance.... Il avait raison !!!
Mais je le remercie une fois de plus. :wor:
Le pire (pour lui!) c'est que parfois c'est moi qui lui explique des trucs... :badsmile:
Ainsi va la vie, qui est bien cruelle...  :worry:

Mais revenons à nos moutons... :music:

J'ai donc un fichier msh, un fichier cfg d'une base, et des textures.

La première chose à faire, c'est de créer un scénario pour pouvoir voir rapidement dans Orbiter le résultat de nos nuits blanches.

Voici ce que j'ai :



Aïe ! La "rampe" a eu un malaise et se trouve couchée sur le flanc... :trucdeouf:

Bon, pas de problème, on va arranger ça...

Mais procédons par ordre : étudions le fichier de la base qui doit se trouver dans le dossier \Orbiter 2016\Config\Earth\Base

BASE-V2.0
Name = RAMPE DE LANCEMENT
Size = 1000
Location = 13.770 54.150
MapObjectsToSphere = TRUE

BEGIN_OBJECTLIST
MESH
FILE Hawxx\Rampe
OWNMATERIAL
POS 0 0 0
SHADOW
PRELOAD
END

pour le moment laissons de coté le 1er "segment" (BASE etc...) on verra plus tard.

La section BEGIN_OBJECTLIST (...) END_OBJECTLIST comprend les différents "objets" de la base.
Tiens ? il manque END_OBJECTLIST...

Le début de la déclaration de l'objet commence par "MESH" et se termine par "END".

FILE déclare le mesh.
on peut mettre un "chemin": c'est mieux, avec l'âge on devient maniaque, et cela permet d'avoir tous ses meshes bien rangés.
Pour kourou, j'ai tout rangé dans 2 dossiers, sinon je vous dis pas le souk pour s'y retrouver...
Donc ici le fichier "rampe.msh" se trouve dans le dossier \Orbiter 2016\Meshes\Hawxx
A noter : ne pas mettre ".msh" dans la ligne, sinon Orbiter va chercher un fichier "Rampe.msh.msh" et on aura un CTD...
Bien sûr le nom du sous dossier, que j'ai appelé "Hawxx" peut avoir le nom que l'on veut.... ;)

OWNMATERIAL ordonne à Orbiter d'utiliser les "materials" (=couleur de fond) et textures déclarés dans le fichier mesh.

POS indique la position de l'objet (en x, y, z)par rapport aux coordonnées de la base (Location = ) au début du fichier
y est l'altitude.

SHADOW permet à l'objet d'avoir des ombres.

PRELOAD permet à Orbiter de charger l'objet même si on ne se trouve pas sur la base dont au sujet duquel on cause...
A mon avis on peut s'en passer...

Donc, voici, après correction, le fichier cfg de la base :

BEGIN_OBJECTLIST
;ma rampe en cours d'élaboration
MESH
     FILE Hawxx\Rampe
     POS 0 0 0
     ROT 0
     SHADOW
    OWNMATERIAL
END
END_OBJECTLIST

Ceci amène quelques commentaires:
J'ai changé l'ordre des ligne par pure logique (ou maniaquerie ??)
J'ai mis quelques "espaces" pour plus de clarté : quand il y a de nombreux objets, cela facilite le repérage.
ROT permet de tourner l'objet (=0° par défaut). Je l'ai mis au cas où pour plus tard.
Enfin on peut mettre un commentaire (ou un nom) précédé de ";" pour s'y retrouver...

Maintenant, on va mettre l'objet dans le bon sens.
Bien sur c'est mieux de le "fabriquer" au début bien orienté, mais il peut "tourner" lors de la conversion en msh.
(c'est le cas dans anim8or, mais le plugin fait tout le travail)
donc peut-être que la conversion de SKP en 3DS ou 3DS en MSH cafouille...
Cela n'est pas grave, et c'est là que MeshWizard fait des miracles!!!

Chargeons donc notre mesh dans Meshwizard.



Comme on le voit, l'orientation n'est pas bonne...

Pour tourner l'objet, facile :



Je ne sais jamais s'il faut une valeur positive ou négative pour l'angle de rotation...
Si on se trompe, "undo" et on change le signe.
La rotation se fait selon l'axe des X.

On a ceci :



C'est mieux.... mais pas parfait ! Qu'est-ce à dire ?
Ben oui, le centre de l'objet ne se trouve pas aux coordonnées "0,0,0". Là aussi, vous allez me traiter de maniaque, mais c'est comme ça on ne se refait pas....

Donc voici ce que je vais faire :



Tanslation=>mesh=>align center box coord.
et on fait ça pour x, y, et z.

Ah mais.... mois, je veux que l'objet ait ses pates au sol avec les coordonnées "zéro" pour y. (avec Orbiter2016 je le conseille vivement)

Donc maintenant on change "align center box coord" par "Align lower box coord." en gardant la valeur "0" et "translation axis" Y.

magique :



On sauve, et on regarde :



il est bien debout sur ses pattes, mais.... c'est quoi ce truc vert ????

Allez, on va faire une pose... il reste pas mal de choses à apprendre...

Résumé :
bien orienter l'objet, de préférence au début, dans le logiciel 3D, pour avoir l'orientation suivante :
la verticale selon l'axe Y
le sens avant/arrière plutôt sur l'axe des Z (donc ici il faudrait encore tourner l'objet)
le sens droite/gauche dans l'axe des X
et la base de l'objet aux coordonnées Y=0
et si possible le centre de l'objet aux coordonnées x=0, z=0 (mais c'est pas obligé)

un peu comme ici :



Allez boire un café, la suite bientôt....  :beer:

Mes add-ons sont là !

Offline antoo

  • Legend
  • ******
  • Posts: 3383
  • Country: France fr
  • Karma: 138
  • 2, breaking left!
    • Forum de mon Asso d'Echasses Urbaines
Reply #47 - 03 June 2017, 21:44:32
JMomo, tu es un maître du tutoriel ;) ! Même moi j'ai compris... c'est dire :badsmile: !

---------------------------------------------------------------------------------------------------
"ET C´EST PARTI!!" Youri Gagarine au lancement de vostok 1 le 12 avril 1961
Ma chaîne Youtube : Airsoft, FPS, Simulation : http://www.youtube.com/channel/UCrzIPMeULZU6lR4M6DVsH2g

Online jacquesmomo

  • Il parait que je suis une
  • Legend
  • ******
  • Posts: 5556
  • Country: France fr
  • Karma: 274
  • Plus on rate, plus on a de chances de réussir !..
Reply #48 - 04 June 2017, 11:01:16
LEÇON n°2
Résumé de la leçon précédente :
vous avez 10 mn avant le ramassage des copies....

:prof: Elève Antoo, au tableau !
Pourquoi toujours moi, m'sieur ?
:prof: Retourne à ta place, zéro pointé !



Bon. Reprenons...
Donc la "rampe" est verte et n'a pas de texture... .

Voyons pourquoi.... :wonder:

Commençons par éditer le fichier mesh avec notepad (ou blocnote) de vouinedô...

koikigna dans ce fichier ?
un peu de texte et beaucoup de chiffres...
Pas de panique, c'est relativement simple.

Alors au début on a ça :

MSHX1
GROUPS  1
MATERIAL 1
TEXTURE 0
GEOM 10998 8672 ;Group 0  Color_G10
 48.8442  2.032033  1.004258  0  1  5.301962E-05  3846  24
-48.8442  2.032035  .9661577  0  1  5.301962E-05  0  25.5
(etc)

Alors explications :

MSHX1 est une sorte de balise qui fait comprendre à Orbiter (il faut tout lui dire à lui !!!) que ce fichier est un objet 3d.
il est donc indispensable.

GROUPS 1 veut dire que dans le fichier msh il y a 1 groupe.
Ben oui, il peut y en avoir plusieurs... cqfd !!!
A noter que si ce chiffre ne correspond pas au nombre de groupe, on aura des résultats bizarres dans Orbiter, voire un plantage.
Quand à Meshwizard, il nous répondra par une injure du genre "missmatch machin truc chouette" et nous jettera dehors, et c'est pas drôle !!!

Rappel :
Dans un fichier "msh" il peut donc avoir plusieurs éléments qui sont appelés "groups"
mais dans anim8or il sont appelés "objets".
On prendra donc l'habitude de parler de "group" (ou groupe ou groupes) même si cela ne plait pas à anim8or.
D'ailleurs dans un anim8or, les "groups" sont des objets que l'on peut "grouper" si l'on veut, mais lors de la conversion en "msh" "les groupes" sont transformés en group...

Heu.... pas compris ?  :doubt:

Imaginons (dans anim8or) que l'on "groupe" 4 objets en un seul (à ne pas confondre avec "join solids") eh bé lors de la conversion en msh on aura 4 "groups"....

Bon, laissez tomber, cela sera l'objet de la leçon n° 3918....

Allez, on continue... J'en vois un qui dort, au fond....

MATERIAL 1 veut dire que le "groupe" - ça y est vous avez compris - a la couleur de fond définie par le "material" n°1
si on a MATERIAL 0 ben y a pas de couleur, mais on s'éloigne du sujet....

TEXTURE 0 .... veut- dire quoi ???
oui, bravo élève Papyref : y a pas de texture....
Sinon, on aurait TEXTURE 1 (ou 2 ou 3 etc...)

Les lignes suivantes : n'y touchez pas !!!! ce sont les points, triangles, coordonnées des UV (non, pas des ultra-violets, mais des applications de texture.

Maintenant, voyons la fin du fichier.msh.
Non, ce n'est pas l'heure de la récré!!!

on a ça :

(etc...)
10982  10983  10984
 10983  10982  10985
 78  80  10986
MATERIALS 2
Color_G10
--1
MATERIAL Color_G10
 0  0  0  1
 .478431  .6  .478431  1
 .329412  .329412  .329412  1  0
 0  0  0  1
MATERIAL --1
 .878431  .878431  .878431  1
 .878431  .878431  .878431  1
 1  1  1  1  75
 0  0  0  1
TEXTURES 0

alors, on détaille :
les chiffres, ce sont les triangles. On ignore... (pas toucher !)

MATERIALS 2
déclaration du nombre de "material". ici, il y en a 2.
Vous remarquerez qu'ils sont déclarés dans le même ordre que la suite. (sinon MeshWizard ne vous le pardonnera pas) !!!

MATERIAL Color_G10
 0  0  0  1
 .478431  .6  .478431  1
 .329412  .329412  .329412  1  0
 0  0  0  1

C'est donc ici le "material" n°1 qui s'appelle "color_G10" et même si le nom est bizarre, ça marche.
(le "matérial" n°2 s'appelle --1 c'est encore plus bizarre mais pourquoi pas)...

les lignes suivantes définissent les couleurs etc. On y reviendra plus tard grâce à meshwizard, l'indispensable.

D'ailleurs, ouvrons ce fichier avec MeshWizard :

On va avoir ça :



il y a donc un problème. Heureusement cela ne gène pas MeshWizard. Ouf !
En fait il nous informe que le "material" n°2 n'est pas utilisé.
Il est à noter qu'il ne le dit que si le "material" se trouve en fin de liste.
S'il y avait 6 "materials" et que le n°3 n'est pas utilisé, il ne nous le dirait pas, ce qui n'est pas sympa.
On peut le savoir autrement. De toute façon, ce n'est pas le problème.

Si on veut, on peut enlever le material inutile.

on aura ça :

(etc...)
10982  10983  10984
 10983  10982  10985
 78  80  10986
MATERIALS 1
Color_G10
MATERIAL Color_G10
 0  0  0  1
 .478431  .6  .478431  1
 .329412  .329412  .329412  1  0
 0  0  0  1
TEXTURES 0

Ok ?
Avant toute modification du fichier msh, je vous conseille vivement de le sauver avant !
En effet, une erreur de copiage/collage ne pardonne pas, et c'est pas toujours facile de trouver l'erreur.
Vous voilà prévenu.

Alors c'est koikoi la couleur "Color_G10" ???

Alors dans Meshwizard on fait "i" puis "materials" puis sélectionner "Color_G10" et cliquer sur le bouton "Edit material"

Alors voici :



Bon sang mais c'est bien sûr !!!

Explications:

- Diffuse (couleur de fond) c'est tout noir !!! i pas bon, ça....
- Ambient (couleur de réflexion par l'astre, en fait la Terre envoie cette couleur sur l'objet) c'est tout vert.... beurk...
- Specular (couleur du reflet provoqué par le soleil) ici moyennement lumineux (si RGB=1 c'est au maxi blanc)
- Emissive (lumière émise par l'objet) ici pas d'émissions.
- specular power : règle la "taille" du reflet défini dans "Specular". Donc ici =0.

Tout ceci c'est bien beau, mais ça veut dire quoi ???
Ben en fait l'objet est noir, avec des reflets verts provoqués par la lumière réfléchie par la Terre, ne brille pas, et n'est pas lumineux.

Pas logique tout ça...
L'objet étant destiné à être texturé, il vaut mieux que le fond de couleur soit blanc.
idem pour la réflexion, mais on peut varier. Mais restons simple.
Spécular, c'est selon, et emissive, une faible valeur (0.1) permet de voir un peu l'objet la nuit, sinon il est tout noir.

Alors on va modifier tout ça.

Voilà par exemple :



On aura donc l'objet tout blanc, avec pas de couleur "ambiante", un peu limineux mais pas trop, et des reflets blancs provoqués par la lumière du soleil.

Démonstration :



Autre exemple à méditer :



Bon. Allez, on remet le blanc. Et les textures où sont-elles ???? me direz-vous (pour ceux qui n'ont pas disjoncté)...
Aha bonne question, on s'approche du VRAI problème.

Rappelez-vous : à la fin du fichier "msh" on avait ça :

TEXTURES 0

Donc textures, yapa !!!

Alors on va mettre ça à la place :

TEXTURES 1
Hawxx\beton.dds

Explication :
cela veut dire que la texture "beton.dds" se trouve dans le dossier  Orbiter 2016\Textures\Hawxx.
Si elle n'y est pas cela ne gênera pas Orbiter, elle sera tout simplement ignorée, sans plantage.
N'oubliez pas le "dds" sinon Orbiter ne comprendra pas....

Ah oui, mais c'est pas fini : il faut affecter le groupe avec cette texture.

Pour cela 2 méthodes:
- soit directement dans le fichier.msh comme ceci :

MSHX1
GROUPS  1
MATERIAL 1
TEXTURE 1
GEOM 10998 8672 ;Group 0  Blanc
 48.8442  2.032033  1.004258  0  1  5.301962E-05  3846  24
(etc...)

- soit avec MeshWizard comme ceci :



double clic sur le groupe, puis régler la texture (ici il n'y en a qu'une pour le moment)

Et on va avoir ceci :



Et si on remplaçait la texture "beton" par "metal" (maintenant vous devriez savoir le faire tout seul) allez je vous aide:

TEXTURES 2
Hawxx\beton.dds
Hawxx\metal.dds

et bien sûr pour l'objet "TEXTURE 2" (au lieu de "1") ça va ? :)

on aura ça :



Mais, là, si vous êtes un tantinet observateurs vous remarquerez 2 choses :
- au niveau des textures et de la définition... peut mieux faire !
- mais surtout : le mesh ne prends qu'une texture alors qu'il en faudrait 2... heu... en fait 2 zones différentes d'un même fichier.dds de texture.

Voilà ce que Hawxx voudrait obtenir :



On voit bien sur cette image qu'il y a 2 parties distinctes :
1) les rails et traverses, avec la texture "metal"
2) le support avec une texture "beton".

En appliquant une texture qui aurait les 2 (beton + metal) cela ne sera pas terrible : on ne peut le faire que en projection "plane" donc ça va être moche...

Regardez plutôt :



il s'agit d'une projection "plane" avec un axe "x".

Parenthèse :
on peut faire avec UVMapper que une application "plane", "boite", "cylindrique" (avec ou sans fond/couvercle) et "sphérique".
Sinon, achetez 3DMax, mais c'est pas si simple là aussi.... et c'est plus cher !
Ou alors il faut convertir directement ton objet-3D bien texturé directement en msh. Mais il faut le plugin qui va bien. Et encore, il y aura d'autres soucis à régler.
Celui de anim8tor est finalement bien fait (sauf pour les "matérials" je vous expliquerai plus tard).
Fermons la parenthèse, les nuits sont encore fraîches....

Idem si on avait fait une projection selon l'axe des "z" et pareil en "y".
Une projection "cylindre" ne règle pas le problème : comment séparer les rails des parties en béton ???
Et la projection "boite" (box) fera des confettis partout, je vous dis pas la patience pour retrouver où sont placées tous les Lego...

Alors comment faire ?
Simple, mais cela va prendre du temps. Pas d'autre alternative....
Il va donc falloir séparer ce mesh en 2 morceaux... du travail de découpage nous attend !!!

Dans la prochaine leçon, je vais vous expliquer :
- comment découper le mesh (séparer les rails du support en béton... et même plus !!!)
- comment texturer les morceaux
- comment recoller tout ça
- et bien sûr comment exporter le tout en fichier msh texturé et accepté par Orbiter.


:prof: Vous pouvez sortir en rang  par 3 en vous tenant la main et en silence.
Ouf! Pas trop tôt !!!
:prof: Pour la prochaine leçon, je sonnerai la cloche.


Mes add-ons sont là !

Online jacquesmomo

  • Il parait que je suis une
  • Legend
  • ******
  • Posts: 5556
  • Country: France fr
  • Karma: 274
  • Plus on rate, plus on a de chances de réussir !..
Reply #49 - 04 June 2017, 15:41:04
LEÇON n°3
Résumé de la leçon précédente :
Nous avons appris comment tourner/pivoter/orienter in objet, délarer une texture, un "material"...
Nous avons appris à différentier un groupe, un élément, un objet, un meshe, une tarte au citron....  :trucdeouf:

:prof: Elève Nulentout, au tableau !
Pourquoi toujours moi, m'sieur ?
:prof: Parceque tu es le moins nul en tout !

C'est pas juste, m'sieur...

Allez, asseyez-vous, et sortez vos cahiers et stylos....

:prof: Dans cette leçon, je vais vous expliquer comment découper le mesh (séparer les rails du support en béton... et même plus !!!) pour pouvoir texturer efficacement le tout !!!


Il est bien évident que c'est mieux de prévoir "à la base" de séparer les groupes, c'est à dire avoir les éléments différents et séparés lors de la modélisation.
Sauf que souvent, lors de la conversion en obj pour l'importation dans Anim8or (ou le texturage par UVMapper) les différents éléments ou groupent se "soudent" souvent.
Ou alors il faut exporter chaque partie séparément, puis les assembler au final.

Alors on va étudier le cas général, cela vous servira pour bien texture un objet un peu compliqué fabriqué dans anim8or (ou un autre prog 3D).


 :) Mais avant tout ça, il faut que je vous explique un affreux détail....

En effet, lors de la conversion d'un objet 3D en 3DS puis AN8 (ou OBJ etc...) le(s) convertisseurs ont une fâcheuse tendance à multiplier les "points" (vertices) rien que pour nous embêter !!! (et donc les lignes).
Ceci a donc tendance à alourdir inutilement nos fameux fichiers.msh.
 :worry:Zut, flute, saperlipopette, fichtre, diantre...

Démonstration :



Que voyons-nous ici ? 10987 points. Pour un "simple" élément de décor, ça fait beaucoup !!!  :arg:
Nous allons donc utiliser la fonction de "fusion de points".
- on sélectionne tous les points de l'objet
- puis Menu Edit=> Merge point

Une fenêtre s'ouvre :
par défaut les points éloignés de 50 cm (ou moins) vont fusionner. C'est trop !! on règle à 1 mm (0.001) pour être tranquille.
=> valider, et dans Option=>info on a 3382 points. C'est mieux !



Reprenons donc notre "rampe" et observons-là dans Anim8or.( au passage, j'ai "centré" l'objet qui se trouve "posé" sur la ligne de sol (coordonnée y=0) )




Le but est donc de séparer ce mesh en 2 éléments ( on est dans anim8or alors on parle d'élément, l'ensemble étant un "objet") oui, boooon....

menu => objet => new
on fait ça 2 fois.
On a ceci :

Maintenant on retourne dans "rampe (non texturée)" on copie puis colle dans "object01" et "object02".
(garder l'original qui va nous servir plus tard) !!!

Dans object01 on va garder les rails, dans object02 on va garder le support et les pattes....

Sélectionnez les points à effacer (en vue "left" ou "right" c'est facile :



puis touche "suppr" et voilà :



Mais il nous reste encore quelques morceaux de béton à enlever...(flèches oranges)

Seul moyen : sélectionner les "lignes" une par une, et les effacer. C'est un peu long...



Et voilà :



Maintenant on va dans "object02" et on va faire la même chose, mais cette fois-ci on efface les rails, on garde le support et les pieds....

:explique: Voilà voilà :



Bien sûr il y a des astuces pour sélectionner les points ou les lignes (comme sélectionner une zone, puis en désélectionner certaines lignes (carré de sélection avec alt+clik droit) mais cela serait trop long à expliquer tout cela. Sachez que cela m'a pris environ 3 mn...
Il y a pire....

Et voici les 2 morceaux recollés (j'ai mis de la couleur pour voir) :



Hum... C'est bien beau tout ça, mais les 2 éléments ainsi obtenus sont trop compliqués à texturer...
il va falloir améliorer ça.... Désolé !!!

Commençons par le support, pour les rails on verra plus tard... car il y a un truc que je vous dirai plus tard pour ne pas vous effrayer !!!! :)

Alors étudions ce support :
on voit qu'il est constitué de plusieurs parties qui en fait sont identiques (ou plutôt répétées) :



- 1 pied-support (en orange)
- 2 petites traverses (en rouge)
- 1 (ou 2) traverse(s) latérale(s) (en bleu)
- 2 grosses poutres (en vert).

Notre travail va donc concister à séparer tout ça (1 exemplaire de chaque) que l'on pourra texturer séparément.
Ensuite on recollera le tout, puis par des "copier/coller" on refera toute la structure qui comporte 32 pattes....

On repart dans notre mission de découpage....
Attention à n'effacer QUE les points et/ou lignes inutiles... Avec un peu d'habitude, cela devient facile et presque amusant ! si, si !!!

Voici ce que l'on obtient :



Mais c'est pas fini... Cet objet est encore trop compliqué pour le texturage...
il faut donc re-faire une même manip pour séparer 'couper) tout ça...
Et c'est reparti pour "new object" puis copier/coller autant de fois qu'on veut de morceaux.
(Ici 4 morceaux ou éléments)  :trucdeouf: :arg: :rant:

Voici le résultat final...
(les couleurs désignent les différents objets).
comme il y a de la symétrie dans l'air, vous constaterez qu'il y a de moins en moins de choses...  :arg: Gasp !!!



Mais ne vous inquiétez pas, on va texturer tout ça, puis reconstruire le tout très facilement !...

C'est là que UVMapper va nous servir.
Si vous ne l'avez pas, il est là (téléchargez la version gratuite "UVMapper Classic)
https://www.uvmapper.com/downloads.html

:prof: Bon, vous avez droit à une pause...
Sortez en silence, bras dessus/bras dessous, et revenez en forme....
Le prochain cours : je vous expliquerai comment texturer tout ça....
il va nous achever....





Mes add-ons sont là !