Wireframe Mode

Лучший способ помочь другим, поделиться своими находками.

Wireframe Mode

Сообщение Neodrop 08 ноя 2008, 16:49

Выяснилась довольна странная вещь - Юнити не поддерживает режим Fireframe по умолчанию.
В Редакторе он есть, а в композиции - нет. Его можно добавить к отдельным объектам, используя вот этот код. Но решение для terrain я пока не нашел.

Синтаксис:
Используется javascript
// attach to an object with a mesh filter

var lineColor : Color;
var backgroundColor : Color;
var ZWrite = true;
var AWrite = true;
var blend = true;

private var lines : Vector3[];
private var linesArray : Array;
private var lineMaterial : Material;
private var meshRenderer : MeshRenderer;

function Start ()
{
   meshRenderer = GetComponent(MeshRenderer);
   if(!meshRenderer) meshRenderer = gameObject.AddComponent(MeshRenderer);
   meshRenderer.material = new Material("Shader \"Lines/Background\" { Properties { _Color (\"Main Color\", Color) = (1,1,1,1) } SubShader { Pass {" + (ZWrite ? " ZWrite on " : " ZWrite off ") + (blend ? " Blend SrcAlpha OneMinusSrcAlpha" : " ") + (AWrite ? " Colormask RGBA " : " ") + "Lighting Off Offset 1, 1 Color[_Color] }}}");
   
   lineMaterial = new Material("Shader \"Lines/Colored Blended\" { SubShader { Pass { Blend SrcAlpha OneMinusSrcAlpha ZWrite Off Cull Front Fog { Mode Off } } } }");
   
   lineMaterial.hideFlags = HideFlags.HideAndDontSave;
   lineMaterial.shader.hideFlags = HideFlags.HideAndDontSave;
   
   linesArray = new Array();
   var filter : MeshFilter = GetComponent(MeshFilter);
   var mesh = filter.mesh;
   var vertices = mesh.vertices;
   var triangles = mesh.triangles;
   
   for (i = 0; i < triangles.length / 3; i++)
   {
      linesArray.Add(vertices[triangles[i * 3]]);
      linesArray.Add(vertices[triangles[i * 3 + 1]]);
      linesArray.Add(vertices[triangles[i * 3 + 2]]);
   }
   
   lines = linesArray.ToBuiltin(Vector3);
}


function OnRenderObject()
{  
   meshRenderer.material.color = backgroundColor;
   lineMaterial.SetPass(0);
   
   GL.PushMatrix();
   GL.MultMatrix(transform.localToWorldMatrix);
   GL.Begin(GL.LINES);
   GL.Color(lineColor);
   
   for (i = 0; i < lines.length / 3; i++)
   {
      GL.Vertex(lines[i * 3]);
      GL.Vertex(lines[i * 3 + 1]);
     
      GL.Vertex(lines[i * 3 + 1]);
      GL.Vertex(lines[i * 3 + 2]);
     
      GL.Vertex(lines[i * 3 + 2]);
      GL.Vertex(lines[i * 3]);
   }
         
   GL.End();
   GL.PopMatrix();
}


Источник.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Вернуться в Исходники (Копилка)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3