Hey guys, I am getting some weird texture stretching, I have spherized a cube with a random number of faces (which means twice as many triangles) per side and randomized their height from the origin to make my planetoid.
However, I want to apply my texture to each side of the cube before I spherize it.
I will attach my code as I have procedurally generated my cube (basically iterate through x,y,z and if x||y||z = units/2 (units is my number of quads per side) then I place a vector3 at (x,y,z).
I then assigned references to those verts in subcollections based on their position (so my edge/corner vertices are in multiple collections).
I now want to use those collections to assign my texture to that face…
WHAT AM I MISSING?!
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System;
// manipulate indexOf of cubeSides instead!
public class Spherizer : MonoBehaviour {
public Transform World, cube;
MeshFilter worldFilter;
public float radius = 5f; //IDE
public float units = 10, limit = 5; //units defined in IDE
public int smooth = 50; // 0-100 bigger = smoother
Vector3 cubeOrigin;
List<Vector2> uvs;
Mesh mesh;
// Use this for initialization
void Start () {
MakeSphere();
}
// Update is called once per frame
void Update () {
/*for(int i = 0; i < worldFilter.mesh.vertices.Length; i++) {
Debug.DrawRay(worldFilter.mesh.vertices<em>, worldFilter.mesh.normals _* 2, Color.green);_</em>
}*/
* }*
* public void MakeSphere(){*
* //instantiate global variables*
* World = GameObject.FindGameObjectWithTag(“World”).transform;*
* cubeOrigin = transform.position;*
* limit = units/2;*
* worldFilter = World.gameObject.GetComponent();*
* //instantiate local variables*
* List worldVertices = new List();*
* List worldNormals = new List();*
* List worldTriangles = new List();*
* List uvs = new List();*
* //temp lists*
* List<List> cubeSides = new List<List>();*
* for (int i = 0; i < 6; i++) {*
* cubeSides.Add(new List());*
* }*
* //Build world mesh*
* for (float x=-limit;x<=limit;x++){*
* for (float y=-limit;y<=limit;y++) {*
* for (float z=-limit;z<=limit;z++){*
* if (Math.Abs(x)==limit||Math.Abs(y)==limit||Math.Abs(z)==limit&&!worldVertices.Contains(new Vector3(x,y,z))) {*
* worldVertices.Add(new Vector3(x,y,z)); *
* }*
* }*
* }*
* }*
* foreach (Vector3 vert in worldVertices) {*
* worldNormals.Add(vert.normalized);*
* if (vert.x==limit) {*
* cubeSides[0].Add(vert);*
* }*
* if (vert.y==limit) { *
* cubeSides[1].Add(vert);*
* }*
* if (vert.z==limit) {*
* cubeSides[2].Add(vert);*
* }*
* if (vert.x==-limit) { *
* cubeSides[3].Add(vert);*
* }*
* if (vert.y==-limit) {*
* cubeSides[4].Add(vert);*
* }*
* if (vert.z==-limit) { *
* cubeSides[5].Add(vert);*
* }*
* }*
* for (int side = 0;side<cubeSides.Count;side++) {*
* switch (side) {*
* case 0: //x=5*
* for (int i = 0;i<(cubeSides[side].Count);i++){*
if (cubeSides[side].y<limit&&cubeSides[side].z<limit) {
_ worldTriangles.Add(worldVertices.IndexOf(cubeSides[side]));
* worldTriangles.Add(worldVertices.IndexOf(cubeSides[side][i+(int)units+2]));
worldTriangles.Add(worldVertices.IndexOf(cubeSides[side][i+1]));*_
_ worldTriangles.Add(worldVertices.IndexOf(cubeSides[side]));
* worldTriangles.Add(worldVertices.IndexOf(cubeSides[side][i+(int)units+1]));
worldTriangles.Add(worldVertices.IndexOf(cubeSides[side][i+(int)units+2]));
}
}
break;
case 1: //y=5*
* for (int i = 0;i<(cubeSides[side].Count);i++){
if (cubeSides[side].x<limit&&cubeSides[side].z<limit) {
worldTriangles.Add(worldVertices.IndexOf(cubeSides[side]));
worldTriangles.Add(worldVertices.IndexOf(cubeSides[side][i+1]));
worldTriangles.Add(worldVertices.IndexOf(cubeSides[side][i+(int)units+2]));*_
_ worldTriangles.Add(worldVertices.IndexOf(cubeSides[side]));
* worldTriangles.Add(worldVertices.IndexOf(cubeSides[side][i+(int)units+2]));
worldTriangles.Add(worldVertices.IndexOf(cubeSides[side][i+(int)units+1]));
}
}
break;
case 2: //z=5*
* for (int i = 0;i<(cubeSides[side].Count);i++){
if (cubeSides[side].x<limit&&cubeSides[side].y<limit) {
worldTriangles.Add(worldVertices.IndexOf(cubeSides[side]));
worldTriangles.Add(worldVertices.IndexOf(cubeSides[side][i+(int)units+2]));
worldTriangles.Add(worldVertices.IndexOf(cubeSides[side][i+1]));*_
_ worldTriangles.Add(worldVertices.IndexOf(cubeSides[side]));
* worldTriangles.Add(worldVertices.IndexOf(cubeSides[side][i+(int)units+1]));
worldTriangles.Add(worldVertices.IndexOf(cubeSides[side][i+(int)units+2]));
}
}
break;
case 3: //x=-5*
* for (int i = 0;i<(cubeSides[side].Count);i++){
if (cubeSides[side].y<limit&&cubeSides[side].z<limit) {
worldTriangles.Add(worldVertices.IndexOf(cubeSides[side]));
worldTriangles.Add(worldVertices.IndexOf(cubeSides[side][i+1]));
worldTriangles.Add(worldVertices.IndexOf(cubeSides[side][i+(int)units+2]));*_
_ worldTriangles.Add(worldVertices.IndexOf(cubeSides[side]));
* worldTriangles.Add(worldVertices.IndexOf(cubeSides[side][i+(int)units+2]));
worldTriangles.Add(worldVertices.IndexOf(cubeSides[side][i+(int)units+1]));
}
}
break;
case 4: //y=-5*
* for (int i = 0;i<(cubeSides[side].Count);i++){
if (cubeSides[side].x<limit&&cubeSides[side].z<limit) {
worldTriangles.Add(worldVertices.IndexOf(cubeSides[side]));
worldTriangles.Add(worldVertices.IndexOf(cubeSides[side][i+(int)units+2]));
worldTriangles.Add(worldVertices.IndexOf(cubeSides[side][i+1]));*_
_ worldTriangles.Add(worldVertices.IndexOf(cubeSides[side]));
* worldTriangles.Add(worldVertices.IndexOf(cubeSides[side][i+(int)units+1]));
worldTriangles.Add(worldVertices.IndexOf(cubeSides[side][i+(int)units+2]));
}
}
break;
case 5: //z=-5*
* for (int i = 0;i<(cubeSides[side].Count);i++){
if (cubeSides[side].y<limit&&cubeSides[side].x<limit) {
worldTriangles.Add(worldVertices.IndexOf(cubeSides[side]));
worldTriangles.Add(worldVertices.IndexOf(cubeSides[side][i+1]));
worldTriangles.Add(worldVertices.IndexOf(cubeSides[side][i+(int)units+2]));*_
_ worldTriangles.Add(worldVertices.IndexOf(cubeSides[side]));
* worldTriangles.Add(worldVertices.IndexOf(cubeSides[side][i+(int)units+2]));
worldTriangles.Add(worldVertices.IndexOf(cubeSides[side][i+(int)units+1]));
}
}
break;
default:
Debug.Log(“Out of Bounds”);
break;
}
}
for(int i = 0;i<worldVertices.Count;i++){
Vector3 vert = worldVertices;
float distance = (cubeOrigin-vert).magnitude;
Vector3 vect = cubeOrigin - vert;
vect = vect.normalized;
vect = ((distance - radius) + UnityEngine.Random.Range(-radius/smooth, radius/smooth));
vert += vect;
worldVertices = vert;
* }
//worldFilter.mesh.RecalculateNormals();
//worldFilter.mesh.RecalculateBounds();
worldFilter.mesh.vertices = worldVertices.ToArray();
worldFilter.mesh.triangles = worldTriangles.ToArray();
worldFilter.mesh.normals = worldNormals.ToArray();
foreach (Vector3 vert in worldVertices) {
//vert.Normalize();
uvs.Add (new Vector2( vert.normalized.x,// / Mathf.PI + 0.5f,
vert.normalized.y));// / Mathf.PI + 0.5f));
}
worldFilter.mesh.uv = uvs.ToArray();
worldFilter.mesh.uv1 = worldFilter.mesh.uv;
worldFilter.mesh.uv2 = worldFilter.mesh.uv;
//World.gameObject.renderer.material.mainTextureScale = new Vector2(units,units);
//Debug.Log(worldFilter.gameObject.GetComponent().name);
}
}*_
[9179-planetoid.jpg|9179]