Способы получить название текстуры. - вопрос к про - Форум Игроделов
Вт, 04 Фев 2025, 01:53 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Способы получить название текстуры. - вопрос к про
HunjethДата: Вс, 01 Апр 2012, 22:57 | Сообщение # 1
 
Сообщений: 354
Награды: 1
Репутация: 112
Статус: Offline
Способы получить название текстуры.
у модели есть много материалов и много текстур.
нужно получить название текстуры в которую попал луч.
подскажите методы.
(collider.transform.renderer.material.GetTexture("_MainTex"))
это не прокатит


Сообщение отредактировал Hunjeth - Пн, 02 Апр 2012, 02:18
 
СообщениеСпособы получить название текстуры.
у модели есть много материалов и много текстур.
нужно получить название текстуры в которую попал луч.
подскажите методы.
(collider.transform.renderer.material.GetTexture("_MainTex"))
это не прокатит

Автор - Hunjeth
Дата добавления - 01 Апр 2012 в 22:57
proektEKДата: Пн, 02 Апр 2012, 00:41 | Сообщение # 2
 
Сообщений: 493
Награды: 6
Репутация: 193
Статус: Offline
Code
renderer.material.mainTexture.name
 
Сообщение
Code
renderer.material.mainTexture.name

Автор - proektEK
Дата добавления - 02 Апр 2012 в 00:41
HunjethДата: Пн, 02 Апр 2012, 01:10 | Сообщение # 3
 
Сообщений: 354
Награды: 1
Репутация: 112
Статус: Offline
mainTexture
это не прокатит так как модель одна а текстур много
 
СообщениеmainTexture
это не прокатит так как модель одна а текстур много

Автор - Hunjeth
Дата добавления - 02 Апр 2012 в 01:10
proektEKДата: Пн, 02 Апр 2012, 01:23 | Сообщение # 4
 
Сообщений: 493
Награды: 6
Репутация: 193
Статус: Offline
Угу
 
СообщениеУгу

Автор - proektEK
Дата добавления - 02 Апр 2012 в 01:23
HunjethДата: Пн, 02 Апр 2012, 02:16 | Сообщение # 5
 
Сообщений: 354
Награды: 1
Репутация: 112
Статус: Offline
Количесво материалов можно получить просто а узнать в какой попал луч не реально хотя мне это надо. biggrin

Сообщение отредактировал Hunjeth - Пн, 02 Апр 2012, 02:17
 
СообщениеКоличесво материалов можно получить просто а узнать в какой попал луч не реально хотя мне это надо. biggrin

Автор - Hunjeth
Дата добавления - 02 Апр 2012 в 02:16
seamanДата: Пн, 02 Апр 2012, 12:21 | Сообщение # 6
Гуру
 
Сообщений: 1748
Награды: 10
Репутация: 660
Статус: Offline
Узнать можно, но для этого нужно сохранять самому некую инфу об объекте. А именно - на каком полигоне какой материал. Потому что,- как получить номер триангла в какой ударился луч легко - triangleIndex
А вот как получить какой материал на этом триангле я не нашел.
 
СообщениеУзнать можно, но для этого нужно сохранять самому некую инфу об объекте. А именно - на каком полигоне какой материал. Потому что,- как получить номер триангла в какой ударился луч легко - triangleIndex
А вот как получить какой материал на этом триангле я не нашел.

Автор - seaman
Дата добавления - 02 Апр 2012 в 12:21
HunjethДата: Вс, 22 Июл 2012, 02:53 | Сообщение # 7
 
Сообщений: 354
Награды: 1
Репутация: 112
Статус: Offline
все просто biggrin

Спасибо (Bunny83 из Германии) за то что немного помог мне в итоге я нашел решение.

Code

//Thanks to Bunny83 from Germany for help

var transf : Transform;

class hitmat1 {
     var enabled : boolean = true;
     var texturehit : String;
     @HideInInspector
     var tranglind : int;
     @HideInInspector
     var Layer : LayerMask = 1;
}

var hitmat1 : hitmat1 = hitmat1();

function Update() {
     var hit : RaycastHit;
     if (Physics.Raycast(transf.position, transf.TransformDirection(Vector3.forward), hit, 2, hitmat1.Layer)) {
      ind = hit.triangleIndex;
      if (hitmat1.tranglind != ind && hitmat1.enabled) {
       hitmat1.tranglind = ind;
       var go1 = hit.collider.gameObject;
       var mee = go1.GetComponent(MeshFilter).mesh;
       var mre = go1.GetComponent(MeshRenderer);
       if (mee && mre) {
        if (go1.renderer.materials.Length > 1) {
         var triangles = mee.triangles;
         for (var submesh = 0; submesh < mee.subMeshCount; submesh++) {
          var indices = mee.GetTriangles(submesh);
          for (var i = 0; i < indices.Length; i += 3) {
           if (indices[i] == triangles[ind * 3] && indices[i + 1] == triangles[ind * 3 + 1] && indices[i + 2] == triangles[ind * 3 + 2]) {
            hitmat1.texturehit = mre.materials[submesh].mainTexture.name.ToLower();
            i = indices.Length;
            submesh = mee.subMeshCount;
            }else{
             hitmat1.texturehit = "Null";
           }
          }
         }
         }else{
          mtexx = go1.renderer.material.mainTexture;
          if (mtexx)
           hitmat1.texturehit = mtexx.name.ToLower();
           else
           hitmat1.texturehit = "Null";
        }
       }
      }
     }
}


Сообщение отредактировал Hunjeth - Вс, 22 Июл 2012, 02:54
 
Сообщениевсе просто biggrin

Спасибо (Bunny83 из Германии) за то что немного помог мне в итоге я нашел решение.

Code

//Thanks to Bunny83 from Germany for help

var transf : Transform;

class hitmat1 {
     var enabled : boolean = true;
     var texturehit : String;
     @HideInInspector
     var tranglind : int;
     @HideInInspector
     var Layer : LayerMask = 1;
}

var hitmat1 : hitmat1 = hitmat1();

function Update() {
     var hit : RaycastHit;
     if (Physics.Raycast(transf.position, transf.TransformDirection(Vector3.forward), hit, 2, hitmat1.Layer)) {
      ind = hit.triangleIndex;
      if (hitmat1.tranglind != ind && hitmat1.enabled) {
       hitmat1.tranglind = ind;
       var go1 = hit.collider.gameObject;
       var mee = go1.GetComponent(MeshFilter).mesh;
       var mre = go1.GetComponent(MeshRenderer);
       if (mee && mre) {
        if (go1.renderer.materials.Length > 1) {
         var triangles = mee.triangles;
         for (var submesh = 0; submesh < mee.subMeshCount; submesh++) {
          var indices = mee.GetTriangles(submesh);
          for (var i = 0; i < indices.Length; i += 3) {
           if (indices[i] == triangles[ind * 3] && indices[i + 1] == triangles[ind * 3 + 1] && indices[i + 2] == triangles[ind * 3 + 2]) {
            hitmat1.texturehit = mre.materials[submesh].mainTexture.name.ToLower();
            i = indices.Length;
            submesh = mee.subMeshCount;
            }else{
             hitmat1.texturehit = "Null";
           }
          }
         }
         }else{
          mtexx = go1.renderer.material.mainTexture;
          if (mtexx)
           hitmat1.texturehit = mtexx.name.ToLower();
           else
           hitmat1.texturehit = "Null";
        }
       }
      }
     }
}

Автор - Hunjeth
Дата добавления - 22 Июл 2012 в 02:53
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2025