woensdag 10 oktober 2012

LAB prototype Unity en Maya

Eerste prototype


Vandaag en gisteren bezig geweest met het eerste prototype in Unity. Unity werkt op sommige punten nogal merkwaardig, maar is wel erg snel en heeft al een breed scala aan bruikbare functies.

Nederland Creƫeren

 Had een model nodig van Nederland, in eerste instantie deze zelf proberen te maken met de terrein editor in Unity, dmv een terrain met hierop een texture van nederland maar dit kost (onnodig) veel tijd en ben hier dan ook al snel afgestapt. Vervolgens een heightmap gemaakt:

Terrain > import height map
Gebruik altijd een heightmap met de power of 2; 2,4,8,16,32 etc, een grote heightmap kost aanzienlijk meer processorkracht.
Bij Terrain>Set resolution kan je de resolutie van je terrein zetten. Standaard op 2000x2000

De heightmap creeert 'blokken' waardoor de randen niet mooi lijken.


Vervolgens nederland in maya gemaakt met de create polygon tool, extude en de randen naar buiten trekken.
Tips van Zareh betreft de export:

1. Delete history
2. Modify > freeze transformation
3. Zet pivot op juiste plaats (center?)
3. Geeft sprekende naam en check in outliner of hij goed is gegaan.
4. check ook display> polygons> custom polygon display. Als dit niet goed zit zet dan in  normals > reverse de culling andersom.
5. Export als FBX

quick keys:
ctrl + > // ctrl+< select more/les
ctrl+shift op actie om hiervan een quickkey te maken

 Unity 

Een korte greep uit de technieken die ik heb gebruikt

Het kunnen klikken op een 3d object
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if(Physics.Raycast(ray,out hit)){ /* een hit op object hit.transform.gameObject*/ }



Het tonen van 2D gui elementen op 3D ruimte:
zet een gameObjectin de wereld, hang hier een C#-class aan met OnGui code voor het 2d element. positioneer nu dit gameObject op de juiste plaats door de volgende code in de update:

Vector3 screenPosition = Camera.main.WorldToScreenPoint(this.gameObject.transform.position);
 screenPosition.y = Screen.height - (screenPosition.y + 1);// inverts y
iconPos = new Rect(screenPosition.x - 50, screenPosition.y - 12, 50, 50);

iconPos is een rect waarin het 2d element getekend word, 50x50 is in dit geval mijn grootte

in onGui gebrui nu:
GUI.DrawTexture(iconPos,railIcon);

waarbij railIcon in mijn geval een texture 2D

Geen opmerkingen:

Een reactie posten