Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 02.05.2022
Сообщений: 2

Как получить цвет определенной вершины меша?

02.05.2022, 12:57. Показов 473. Ответов 2

Студворк — интернет-сервис помощи студентам
У меня есть кастомный меш, и я хочу получить цвет отдельного треугольника. Я пытался использовать эти решения : https://stackoverflow.com/ques... a-triangle , https://stackoverflow.com/ques... icked?rq=1 . У меня нет текстуры на объекте, поэтому остается только способ с манипуляциями треугольниками и вершинами. Я пытался получить цвет таким образом :
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
using System;
using System.Collections;
using System.Collections.Generic;
 using UnityEngine;
 
 public class ColorFInd : MonoBehaviour
{
 public Camera camera;
 
private Color[] colorArray;
// Start is called before the first frame update
 
// Update is called once per frame
void Update()
{
    Ray ray = camera.ScreenPointToRay(Input.mousePosition);
    RaycastHit[] hitInfos = Physics.RaycastAll(ray);
  //  Debug.Log(hitInfos[0].collider.GetComponent<MeshFilter>().mesh.triangles[hitInfos[0].triangleIndex]);
     Debug.Log(hitInfos[0].collider.GetComponent<MeshFilter>().mesh.colors.Length);
   
}
public static int GetSubMeshIndex(Mesh mesh, int triangleIndex)
    {
        if (mesh.isReadable == false)
        {
            Debug.LogError("You need to mark model's mesh as Read/Write Enabled in Import Settings.", mesh);
            return 0;
        }
 
        int triangleCounter = 0;
        for (int subMeshIndex = 0; subMeshIndex < mesh.subMeshCount; subMeshIndex++)
        {
            var indexCount = mesh.GetSubMesh(subMeshIndex).indexCount;
            triangleCounter += indexCount / 3;
            if (triangleIndex < triangleCounter)
            {
                return subMeshIndex;
            }
        }
 
        Debug.LogError(
            $"Failed to find triangle with index {triangleIndex} in mesh '{mesh.name}'. Total triangle count: {triangleCounter}",
            mesh);
        return 0;
    }
}
Но это не дало результата т.к массив цветов пустой
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.05.2022, 12:57
Ответы с готовыми решениями:

Материал для меша отображается только после второго клонирования меша (в игре). NeoAxis Engine 3.5. С#
MeshObject meshObject = SceneManager.Instance.CreateMeshObject(&quot;Mesh&quot;); ShaderBaseMaterial sourceMaterial =...

Как задать цвет определенной строке?
Здравствуйте. Есть такой SQL запрос: SELECT * FROM (SELECT 1 As №, ДеятельностьПедагога.Код_преподавателя, &quot;Деятельность...

Рекурсивным способом получить все возможные траектории с 0-ой вершины до 6-ой вершины длиной не более 4 вершин
Как написать рекурсивную функцию по задаче: Задается например,такая верхняя треугольная матрица, на самом деле она достаточно большая ...

2
UNITY
76 / 49 / 28
Регистрация: 20.04.2022
Сообщений: 159
02.05.2022, 13:33
Lorandius, попробуйте вершинные шейдеры. такие есть в ProBuilder.
0
0 / 0 / 0
Регистрация: 02.05.2022
Сообщений: 2
02.05.2022, 14:51  [ТС]
Спасибо за ответ, знаю про них, только вот пока не понимаю как данные из шейдера использовать в скрипте.

Добавлено через 1 час 14 минут
UnityNub Я попытался найти информацию о вершинных шейдерах для решения этой проблемы, но оказалось, что из кода получить данные из них невозможно. Поэтому остается вариант с вершинами и треугольниками. Я в принципе понимаю как это сделать : нужно взять индекс треугольника из RaycastHit, потом найти вершины этого треугольника и через них получить индекс цветов. Но проблема в том, что список цветов в материале пустой и получать там нечего.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.05.2022, 14:51
Помогаю со студенческими работами здесь

Как менять цвет определенной части текста
Здравствуйте. Прошу подсказать, как можно менять цвет определенной части текста. Например, есть текст: Мне 100500 лет, и в зависимости от...

Как поменять цвет определённой ячейки таблицы?
Доброго дня форумчане. Имеется таблица в GUI приложении. Как поменять цвет определённой ячейки?

Как задать определённой ячейке цвет и текст
Используя условия и циклы сделать таблицу в 5 колонок и 3 строки (5x3), отметить разными цветами часть ячеек и добавить текст. ...

Как изменить цвет фона определенной СТРОКИ в Табличной Части?
Имеется некое условие и когда оно выполняется определенная строка должна окрашиваться. Как это реализовать?

Как определённой точке на форме задать цвет в формате RGB?
Как определённой точке на форме задать цвет в формате RGB???


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru