import d'objets 3d

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
sotec
Messages : 542
Inscription : 21 Sep 2012 10:11

import d'objets 3d

Message par sotec » 02 Oct 2012 10:43

Bonjour,

voila, je suis en train de créer une application de configuration de meuble, et je me trouve face à un léger soucis >_< :
je possède une base de données avec notamment les objets 3d (.max ou . obj) hébergés sur le serveur, dans l'appli on ne voit qu'un objet à la fois, du coup, je ne vais pas charger l'ensemble des objets 3d au lancement, ça serait trop long, je cherche des solutions pour pouvoir charger les objets en runtime et les ajouter à la scène, un par un lors que l'on en a besoin.
Via WWW on peut facilement avoir le contenu de l'objet 3d mais malheureusement il n'y a pas de WWW.mesh qui est en fait ce que je cherche, de même ModelImporter ne fonctionne pas car il ne me permet pas de récupérer l'objet depuis une url.

La question étant donc : dois-je créer/améliorer un script d'import complet ou il y a t'il une méthode plus simple pour importer des objet 3d ?

merci d'avance :p

PS: je tiens à préciser que je ne suis sur unity que depuis peu de temps et que je ne connais pas la doc par coeur ^^ donc j'ai surement sauté quelques classes et fonctions
┬─┬ノ(º - ºノ) - (╯°□°)╯︵ ┻━┻

Avatar de l’utilisateur
Loulou
Messages : 239
Inscription : 23 Nov 2011 01:04
Localisation : Paris
Contact :

Re: import d'objets 3d

Message par Loulou » 02 Oct 2012 10:57

A moins de recoder un importeur a la main tu ne peux pas importer des models au runtime.
Mais tu peux creer un AssetBundle par model, et loader un AssetBundle avec la classe WWW.
http://docs.unity3d.com/Documentation/S ... undle.html

Sinon tu peux aussi placer tout tes models dans le repertoire Resources du projet et utiliser Resources.Load().
Ca évite de charger tout les models au chargement d'une scene. (Tu les charges que quand tu en as besoin)
Par contre tu ne pourras pas rajouter de models une fois l'application compilée.
http://docs.unity3d.com/Documentation/S ... urces.html

sotec
Messages : 542
Inscription : 21 Sep 2012 10:11

Re: import d'objets 3d

Message par sotec » 02 Oct 2012 11:20

merci de ta réponse ^^
Bon j'avais déjà vu assetbundle mais j'ai besoin de unity pro T_T ( bon de toute façon je vais certainement devoir le prendre ^^)
et ça me semble effectivement le moyen le plus efficace >_<, dans ce cas j'aimerais savoir si il est possible de faire un assetbundle via script ou si on ne peut faire l'export que par l'éditeur.
(ce qui voudrais dire que pour chaque objet 3D ajouté sur le serveur il faut que je le dl, l'export en .unity3d et l'upload à nouveau)
s'il n'y a pas moyen de faire une conversion objet 3D --> .unity3d , j'ai plus qu'à revenir sur la création d'un script d'import ^^'
┬─┬ノ(º - ºノ) - (╯°□°)╯︵ ┻━┻

Avatar de l’utilisateur
Loulou
Messages : 239
Inscription : 23 Nov 2011 01:04
Localisation : Paris
Contact :

Re: import d'objets 3d

Message par Loulou » 02 Oct 2012 11:53

Les classes qui permettent de compiler un assetBundle sont des classes Editor.
Donc pas possible de les utiliser au runtime.
(ce qui voudrais dire que pour chaque objet 3D ajouté sur le serveur il faut que je le dl, l'export en .unity3d et l'upload à nouveau)
oui

sotec
Messages : 542
Inscription : 21 Sep 2012 10:11

Re: import d'objets 3d

Message par sotec » 02 Oct 2012 12:00

T_T pas d'assetbundle donc ...
Bon ben maintenant j'ai du pain sur la planche ^^'

merci bien pour ta rapidité :D

quand j'aurais fini le script d'import de fichier 3D ( ça va prendre un moment) je pense le mettre sur le forum, ce sera, je pense utile à pas mal de monde.

EDIT : je ne peux pas utiliser ressource.load car l'appli sera en webplayer ^^ et n'est pas sensé être built à chaque ajout d'objet
┬─┬ノ(º - ºノ) - (╯°□°)╯︵ ┻━┻

Avatar de l’utilisateur
artemisart
Messages : 1893
Inscription : 21 Juin 2011 19:51
Localisation : Centre
Contact :

Re: import d'objets 3d

Message par artemisart » 02 Oct 2012 15:36

Salut,

Effectivement, dans la version free on peut pas faire autrement que passer par un import fait main, mais si tu veux je peux t'aider là dessus (j'ai déjà fait un script d'export obj à la main, mais pas encore l'import).
Évidemment, tu seras toujours obligé d'uploader un fichier obj quelque part, pour le "recevoir" dans le webplayer par WWW.

sotec
Messages : 542
Inscription : 21 Sep 2012 10:11

Re: import d'objets 3d

Message par sotec » 02 Oct 2012 15:48

oui , ça me parait logique, mais un .obj s'exporte directement de n'importe quel logiciel de 3D donc c'est pas un soucis à upload sur un serveur (fillezilla ou ftp), l'import en obj devrait pas etre si dur vu que je connais déjà bien la manière donc fonctionne le format ^^
mais ton export m'intéresse bien tout de même :D
┬─┬ノ(º - ºノ) - (╯°□°)╯︵ ┻━┻

Avatar de l’utilisateur
artemisart
Messages : 1893
Inscription : 21 Juin 2011 19:51
Localisation : Centre
Contact :

Re: import d'objets 3d

Message par artemisart » 02 Oct 2012 22:14

Voilà pour l'export (dans cette version (très basique, j'ai juste mis le minimum), je génère juste un string qui correspond au mesh "convertit" en obj, il n'y a pas de sauvegarde de fichier sur le disque) :

Code : Tout sélectionner

public static string ToText (this Mesh mesh) {
	StringBuilder text = new StringBuilder ();

	text.AppendFormat("# Exported obj file\no {0}\n", mesh.name);

	foreach (Vector3 v in mesh.vertices) {
		text.AppendFormat ("v {0} {1} {2}", v.x, v.y, v.z); // faut peut-être mettre un paramètre spécial au ToString pour l'obliger à mettre le float en entier (l'empêcher d'arrondir), je sais pas trop
	}

	text.Append ("s off\n");

	for (int i = 0; i < mesh.triangles.Length; i += 3) {
		text.AppendFormat ("f {0} {1} {2}\n", mesh.triangles[i]+1, mesh.triangles[i+1]+1, mesh.triangles[i+2]+1);
	}
			
	return text.ToString ();
}


bakman23
Messages : 79
Inscription : 21 Déc 2012 15:48

Re: import d'objets 3d

Message par bakman23 » 11 Juin 2013 21:51

Bonjour,
quelqu'un aurait'il réussi à faire de l'import de model ?

Répondre

Revenir vers « Scripting »