void Start() { if (VoxCreation == null) { VoxCreation = GetComponent <VoxelScript>(); } if (_mscript == null) { _mscript = GetComponent <MeshScript>(); } if (_qscript == null) { _qscript = GetComponent <QuadScript>(); } defaultIsos.Add(defaultSphereIso); defaultIsos.Add(defaultFractalIso); defaultIsos.Add(defaultDicomIso); _autoUpdate = autoupdToggle.isOn; ResetToDefaultValues(); if (_autoUpdate) { UpdatePushed(); } }
void Start() { mscript = GetComponent <MeshScript>(); vscript = GetComponent <VoxelScript>(); sliceNr = setSlice(slice); CreateIsoLine(sliceNr); }
void Start() { _meshScript = GetComponent <MeshScript>(); }
void CreateIsoLine(int z) { List <Vector3> vertices = new List <Vector3>(); List <int> indices = new List <int>(); int index = 0; for (int i = 1; i < vscript.Width; i++) { for (int j = 1; j < vscript.Height; j++) { // int idx = i + j * width + z * width * height; /* d------c * | | * | | * a------b */ // bottom left A float bl = vscript._voxels[(i - 1) + (j - 1) * vscript.Width + z * vscript.Width * vscript.Height]; bool pa = bl > m_iso; // bottom right B float br = vscript._voxels[(i) + (j - 1) * vscript.Width + z * vscript.Width * vscript.Height]; bool pb = br > m_iso; // top right C float tr = vscript._voxels[(i) + (j) * vscript.Width + z * vscript.Width * vscript.Height]; bool pc = tr > m_iso; // top left D float tl = vscript._voxels[(i - 1) + (j) * vscript.Width + z * vscript.Width * vscript.Height]; bool pd = tl > m_iso; // delta offsets float dl = 0f, dr = 0f, dt = 0f, db = 0f; if (lerp) { if (tl < bl) { dl = 1f - (iso - tl) / (bl - tl); } else { dl = (iso - bl) / (tl - bl); } if (tr < br) { dr = 1f - (iso - tr) / (br - tr); } else { dr = (iso - br) / (tr - br); } if (tl < tr) { dt = 1f - (iso - tr) / (tl - tr); } else { dt = (iso - tl) / (tr - tl); } if (bl < br) { db = 1f - (iso - br) / (bl - br); } else { db = (iso - bl) / (br - bl); } } string cases = (pa ? "1" : "0") + (pb ? "1" : "0") + (pc ? "1" : "0") + (pd ? "1" : "0"); Vector3 ORIGO = transform.localPosition; ORIGO.x -= vscript.Width * .5f; ORIGO.y -= vscript.Height * .5f; Vector3 px = new Vector3(i - pxsize * .5f + ORIGO.x, j - pxsize * .5f + ORIGO.y); Vector3 l = new Vector3(px.x, px.y + dl); Vector3 r = new Vector3(px.x + pxsize, px.y + dr); Vector3 t = new Vector3(px.x + dt, px.y + pxsize); Vector3 b = new Vector3(px.x + db, px.y); switch (cases) { case "1000": //1 vertices.Add(b); vertices.Add(l); indices.Add(index++); indices.Add(index++); break; case "0100": //2 vertices.Add(r); vertices.Add(b); indices.Add(index++); indices.Add(index++); break; case "1100": //3 vertices.Add(r); vertices.Add(l); indices.Add(index++); indices.Add(index++); break; case "0001": //4 vertices.Add(l); vertices.Add(t); indices.Add(index++); indices.Add(index++); break; case "1001": //5 vertices.Add(b); vertices.Add(t); indices.Add(index++); indices.Add(index++); break; //case "0101": //6 // vertices.Add(new Vector3(px.x + hlfpx, px.y)); // vertices.Add(bb); // vertices.Add(new Vector3(px.x - hlfpx, px.y)); // vertices.Add(new Vector3(px.x, px.y + hlfpx)); // indices.Add(index++); // indices.Add(index++); // indices.Add(index++); // indices.Add(index++); // break; case "1101": //7 vertices.Add(r); vertices.Add(t); indices.Add(index++); indices.Add(index++); break; case "0010": //8 vertices.Add(t); vertices.Add(r); indices.Add(index++); indices.Add(index++); break; //case "1010": //9 // vertices.Add(bb); // vertices.Add(new Vector3(px.x - hlfpx, px.y)); // vertices.Add(tt); // vertices.Add(rr); // indices.Add(index++); // indices.Add(index++); // indices.Add(index++); // indices.Add(index++); // break; case "0110": //10 vertices.Add(t); vertices.Add(b); indices.Add(index++); indices.Add(index++); break; case "1110": //11 vertices.Add(t); vertices.Add(l); indices.Add(index++); indices.Add(index++); break; case "0011": //12 vertices.Add(l); vertices.Add(r); indices.Add(index++); indices.Add(index++); break; case "1011": //13 vertices.Add(b); vertices.Add(r); indices.Add(index++); indices.Add(index++); break; case "0111": //14 vertices.Add(b); vertices.Add(l); indices.Add(index++); indices.Add(index++); break; default: break; } } } if (mscript == null) { mscript = GameObject.Find("GameObjectMesh").GetComponent <MeshScript>(); } mscript.createIsolineGeometry(vertices, indices, vscript.Width, vscript.Height); }