<<

From earth to unity via max

Limites :

1 licence par poste pour plugin « mesh to terrain Unity (30$) 1 licence par poste pour plugin terrain max (200$), qui est tributaire de Les maps sat dispos pour le public sont au mieux précise à 0.30m, ce qui donne pour une map en 4k une surface en qualité optimale de 1227x1227m Travail sur plusieurs terrains

Plusieurs terrains, cons :

- Besoin d’un script pour « setneighbor » > Fournit par l éditeur du script terrain unity en PJ - Recréer ses brushes pour chaque terrain ? - Assigner les memes settings a tout les terrains > Script - Augmente le nombre de texture swap

Note :

- Les terrains Unity par défaut font 2000m. Les outils (notamment placement arbres) sont faits pour travailler a cette échelle, on fait donc plusieurs terrains pour des plateaux plus grands. De plus, c’est la taille optimale pour exploiter toute la res dispo des map sat (en 4k) - Unity fonctionne bien (virgule float) jusque 10kmx10km (15x15km dans mon exemple). Il semblerait que le max soit 100x100

Plugin terrain dans max

- Définir taille scène et « grille » pour les objets terrain. Ici .3 focus sur un plateau de 15x15km pour une map de 8k (que unity ne gère pas) pour une résolution de 0.54px par mètre. Au-delà de 15x15km, le plugin ne capture pas bien les images (seams visibles dans l’assemblage de la texture satellite)

Google earth

- Masquer routes, légendes, … avant de lancer le « grab » texture du plugin terrain

Photoshop

- Clean des textures (suppression ombres ?) / raccord colorimétrique (copie sur calque séparé de la zone à traiter / match color / auto align) - Attention si on bosse en dds à ne pas laisser le sharpening filter sur smooth

Max

- Je divise en 64 éléments par script

- Je detach les éléments par script

- Retouche topo autours de selon ref photo (pas assez de détail sur les falaises dans les fichiers DEM) - Subdiv & flatten pour les routes, terrasses autours focus (shapemerge+conform) - Quadify des zones urbainespour mesh plus clean

Bat très simple avec un seul border pour placement en instance avec object paint

Create shape from borders après avoir copié et attaché toutes les maisons

Shape merge sur les terrain avec la spline obtenue

Extrude des spline pour bool, shell 2m pour aggrandir terrasses

Bool cut, remove inside, select borders, bridge, select face, schrink sel, affect diff mat ID, flat

- Découpe des meshs puis créer objet en copie pour water (rivières, lacs…) (shapemerge, inset, …)

Attention à ne pas laisser de trous / erreurs dans le mesh, sinon le terrain unity généré par le plugin sera défectueux. Note : on ne peut pas commencer à bosser sur les terrains unity tant qu’ils ne sont pas parfaits.

Unity

- Import fbx (1 par terrain max). Attention au scale factor, qui doit être à 1 dans les param d’import ! (0.01 par défaut) !

- Toujours concernant le scale, il s’avère que le plugin ne travaille pas correctement avec des meshs trop grands ou trop petits (7.5x7.5km comme dans mon cas c’est trop grand). Je scale à 0.1 mes 4 terrains max avant de lancer le plugin (on peut tout scaler en meme temps), je rescalerai tout mes terrains unity après).

- Plugin mesh to terrain (on peut en traiter plusieurs à la fois en les mettant dans un layer) - Attention à la résolution de la heightmap au moment de la création ! Elle détermine aussi la précision des brushs pour peindre des arbres plus tard par exemple, et on ne peut pas la modifier après sans détruire height, splat, … - Le script ne tourne pas si unity n’est pas au premier plan. Ici, j’ai créé 49 terrains (7x7) Unity pour chaque terrain max

- Cacher les terrains max Photoshop

- Porter res des maps . png générés par MTT à 4096 pour focus ( ! rotate 180 canvas) - Composite avec bing ou autre pour plus de détails (match avec low res, auto align layers)

Unity

- Note : Voir si il est possible de copier component terrain pour récup la biblio de textures, d’arbres, … d’un terrain à l’autre - Retouche topo non focus selon photo ref, car les datas d’élévation ne sont pas toujours précis. (note : tester retour dans max avec nouvelle topo grace à la heightmap)

Shit E : Blur Shit Q : Lower / upper Shift w : flatten

Peinture splat (précision brush en fonction de la res de « base texture res »

- Le shader terrain vanilla fait bump PLUS spec. > « the shininess amount is stored in the alpha channel of the texture ». - Les textures générées par script terrain unity sont des PNG avec alpha blanc > Replace par DDS par script ? Pour les test je set param « Alpha from Grayscale : true » dans les param d import des textures - J’utilise le shader Advanced terrain Vol 2 > Pbl la base map ne prend pas le meme traitement et pop quand elle s’affiche + splat moche au (blend lineaire ?) > Je retourne sur le shader de base en supprimant l’asset du projet

- Un terrain travaille avec deux textures différentes pour optimisation, une pour le far (basemap) une pour le near. Les shaders travaille correctement avec NRM sur le near (bien qu’il faille rajouter une directionnelle ce qui n’est pas logique quand on utilise un skydome PBR) , mais il n’affichent que du diff sur la base map. Le chagement est très visible > Il faut écrire un shader qui gère NRM sur les deux niveaux

- Je teste http://forum.unity3d.com/threads/ats-colormap-terrain-shader-released.146808/, shader qui gère une nrm sur le far. Pb : Workflow tordu, lourd a utiliser, que pour un terrain , …

- Il y a la version ULTRA a 10$ : https://www.assetstore.unity3d.com/en/#!/content/4722

-

A tester :

- Export d’un terrain unity en obj (avec diff), retouche dans Z brush pour travail plus précis des falaises etc… > sortir une NRM - Le plugin real terrain pour unity (90$) qui stream les mêmes DEM que le plugin max MAIS utilise des textures bing/nokia au lieu des textures google earth (qui sont moins détaillées / plus sales / moins homogènes). Il faudra alors revenir dans max, à l’aide d’un script qui convertit en OBJ (voir lien ci-dessous) - Les scripts TerrainObjExporter et Object2Terrain (solutions gratuites) http://wiki.unity3d.com/index.php?title=TerrainObjExporter