Mesh Vertices

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Mesh Vertices

Сообщение Medveckij 12 янв 2013, 20:34

Вот интересно, есть ли возможность манипулировать вершинами mesha созданного скриптом?

Все его параметры фиксируются на старте и далее он не реагирует. Быть может существует решение?
Аватара пользователя
Medveckij
Адепт
 
Сообщения: 1014
Зарегистрирован: 10 ноя 2012, 15:44

Re: Mesh Vertices

Сообщение seaman 12 янв 2013, 21:50

фиксируются на старте и далее он не реагирует.

неправда.
Синтаксис:
Используется csharp
Vector3[] vers = mesh.vertices;
//меняем вершины (не меняя количество! и тасовать их с осторожностью)
mesh.vertices = vers;
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Mesh Vertices

Сообщение Medveckij 12 янв 2013, 22:18

seaman писал(а):
фиксируются на старте и далее он не реагирует.

неправда.
Синтаксис:
Используется csharp
Vector3[] vers = mesh.vertices;
//меняем вершины (не меняя количество! и тасовать их с осторожностью)
mesh.vertices = vers;


Mx, спасибо, но пока не понял. Раз можно, буду думать.

Синтаксис:
Используется csharp
mesh.vertices = new Vector3[] {
               
                new Vector3(xyzPos, xyzPos, 0),
                new Vector3(xyzPos, 0, 0),
                new Vector3(0, 0, 0),
                new Vector3(0, 0, 0),
                new Vector3(0, xyzPos, 0),
                new Vector3(xyzPos, xyzPos, 0),
 


Вот, эти вершины я пытаюсь изменить, но безуспешно.
Аватара пользователя
Medveckij
Адепт
 
Сообщения: 1014
Зарегистрирован: 10 ноя 2012, 15:44

Re: Mesh Vertices

Сообщение seaman 12 янв 2013, 22:36

Вы тут не меняете, а задаете. Можно, конечно и так. Но смотрите, чтобы количество не изменилось и следите за очередностью. Или одновременно меняйте и массив трианглов. Просто можно поменять очередность вершин в триангле - тогда триангл будет "глядеть" в другую сторону и без двустороннего материала просто "исчезнет".
ЗЫ: что-то я тут подумал, а не нужно ли после изменения массива вершин делать Recalculate. Во всяком случае в ProceduralExample это делают.
ЗЗЫ: Вы бы все же изучили этот пример от Юнити. Думаю масса вопросов отпала бы.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Mesh Vertices

Сообщение Medveckij 12 янв 2013, 23:16

seaman писал(а):Вы тут не меняете, а задаете. Можно, конечно и так. Но смотрите, чтобы количество не изменилось и следите за очередностью. Или одновременно меняйте и массив трианглов. Просто можно поменять очередность вершин в триангле - тогда триангл будет "глядеть" в другую сторону и без двустороннего материала просто "исчезнет".
ЗЫ: что-то я тут подумал, а не нужно ли после изменения массива вершин делать Recalculate. Во всяком случае в ProceduralExample это делают.
ЗЗЫ: Вы бы все же изучили этот пример от Юнити. Думаю масса вопросов отпала бы.


Да, в этом кусочке кода я ничего не меняю, а задаю. А вот после в инспекторе я попытался покрутить свой public float xyzPos и визуального изменения не наблюдается, что вроде как странно?

Местами менять нельзя, знаю. Я ведь этот мэш с нуля собирал, и невидимые стороны заметил. :ympeace:

Вот! В старте, после создания вершин я пересчитывал нормали mesh.RecalculateNormals(); ,верно. А далее уже забыл. Надо попробовать. Спасибо.

Да, кстати, я не пытаюсь изменить количество вершин. Я хочу изменить их позиции.
Аватара пользователя
Medveckij
Адепт
 
Сообщения: 1014
Зарегистрирован: 10 ноя 2012, 15:44

Re: Mesh Vertices

Сообщение Medveckij 13 янв 2013, 17:43

Нет, так и не понял как менять позицию вершин меша. Не меняется хоть ты стреляй.

Как я и говорил все параметры задаются на старте, а далее он не реагирует на изменения вершин. Теоретически, если бы оно было в update, тогда да. Но ведь тоже не то. в update он накопирует их целую кучу.

Возможно я плохо объяснил, но изменения мне нужны конкретно в real time.
Аватара пользователя
Medveckij
Адепт
 
Сообщения: 1014
Зарегистрирован: 10 ноя 2012, 15:44

Re: Mesh Vertices

Сообщение DbIMok 13 янв 2013, 18:34

и где же ваш код?
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.8k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Mesh Vertices

Сообщение Medveckij 13 янв 2013, 19:08

Знаю, топор, но суть изменения вершин в realTime от этого не меняется.


Синтаксис:
Используется csharp
void Start()
        {
               
                GameObject go = new GameObject("Cube");
               
           
                go.AddComponent<MeshRenderer>();
                go.renderer.sharedMaterial = new Material(Shader.Find("Diffuse"));
                go.renderer.sharedMaterial.color = Color.yellow;

                Mesh mesh = new Mesh();
                go.AddComponent<MeshFilter>().mesh = mesh;

                mesh.vertices = new Vector3[]
                {
                new Vector3(xyzPos, xyzPos, 0),
                new Vector3(xyzPos, 0, 0),
                new Vector3(0, 0, 0),
                new Vector3(0, 0, 0),
                new Vector3(0, xyzPos, 0),
                new Vector3(xyzPos, xyzPos, 0),
                       
                new Vector3(0, 0, xyzPos),
                new Vector3(xyzPos, 0, xyzPos),
                new Vector3(xyzPos, xyzPos, xyzPos),
                new Vector3(xyzPos, xyzPos, xyzPos),
                new Vector3(0, xyzPos, xyzPos),
                new Vector3(0, 0, xyzPos),
                       
                new Vector3(0, 0, 0),
                new Vector3(0, 0, xyzPos),
                new Vector3(0, xyzPos, xyzPos),
                new Vector3(0, xyzPos, xyzPos),
                new Vector3(0, xyzPos, 0),
                new Vector3(0, 0, 0),
                       
                new Vector3(xyzPos, xyzPos, xyzPos),
                new Vector3(xyzPos, 0, xyzPos),
                new Vector3(xyzPos, 0, 0),
                new Vector3(xyzPos, 0, 0),
                new Vector3(xyzPos, xyzPos, 0),
                new Vector3(xyzPos, xyzPos, xyzPos),
                       
                new Vector3(0, xyzPos, 0),
                new Vector3(0, xyzPos, xyzPos),
                new Vector3(xyzPos, xyzPos, xyzPos),
                new Vector3(xyzPos, xyzPos, xyzPos),
                new Vector3(xyzPos, xyzPos, 0),
                new Vector3(0, xyzPos, 0),
               
                new Vector3(xyzPos, 0, xyzPos),
                new Vector3(0, 0, xyzPos),
                new Vector3(0, 0, 0),
                new Vector3(0, 0, 0),
                new Vector3(xyzPos, 0, 0),
                new Vector3(xyzPos, 0, xyzPos)
                };
               
                //tut vsio ploho. No UV nikak ne vlijaet na izmenenie pozicii vershin.
                mesh.uv = new Vector2[]
                {
                new Vector2(1, 1),
                new Vector2(1, 0),
                new Vector2(0, 0),
                new Vector2(0, 0),
                new Vector2(0, 1),
                new Vector2(1, 1),
                       
                new Vector2(1, 1),
                new Vector2(1, 0),
                new Vector2(0, 0),
                new Vector2(0, 0),
                new Vector2(0, 1),
                new Vector2(1, 1),
                       
                new Vector2(1, 1),
                new Vector2(1, 0),
                new Vector2(0, 0),
                new Vector2(0, 0),
                new Vector2(0, 1),
                new Vector2(1, 1),
                       
                new Vector2(1, 1),
                new Vector2(1, 0),
                new Vector2(0, 0),
                new Vector2(0, 0),
                new Vector2(0, 1),
                new Vector2(1, 1),
                       
                new Vector2(1, 1),
                new Vector2(1, 0),
                new Vector2(0, 0),
                new Vector2(0, 0),
                new Vector2(0, 1),
                new Vector2(1, 1),
                       
                new Vector2(1, 1),
                new Vector2(1, 0),
                new Vector2(0, 0),
                new Vector2(0, 0),
                new Vector2(0, 1),
                new Vector2(1, 1)
                };

                mesh.triangles = new int[]
                {
                0, 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
                };
               
                mesh.RecalculateNormals();
                go.AddComponent<BoxCollider>();

        }
 
Аватара пользователя
Medveckij
Адепт
 
Сообщения: 1014
Зарегистрирован: 10 ноя 2012, 15:44

Re: Mesh Vertices

Сообщение seaman 13 янв 2013, 19:19

Это создание меша, а где его изменение?
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Mesh Vertices

Сообщение Medveckij 13 янв 2013, 19:33

seaman писал(а):Это создание меша, а где его изменение?



В том и дело, что я не придумал как его реализовать. Пробовал - стирал, пробовал - опять стирал.

Вот главное доказательство ---> переменная xyzPos. В инспекторе изменяю число, но визуальных изменений нету. Что руками, что в update оно будет меняться автоматически - разницы никакой. а в старте оно пересчитывает нормали и если я правильно понимаю без повторного пересчета изменить позицию вершины мне не удастся. Следовательно пересчитывать нормали следует в update? тогда я убью память.
Аватара пользователя
Medveckij
Адепт
 
Сообщения: 1014
Зарегистрирован: 10 ноя 2012, 15:44

Re: Mesh Vertices

Сообщение seaman 13 янв 2013, 20:02

Вы вообще понимаете, что Start запускается один раз! Меняйте, не меняйте потом Вашу переменную, ничего не изменится. Ну а если остановить игру, изменить переменную и запустить снова - все меняется, я проверил.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Mesh Vertices

Сообщение Medveckij 13 янв 2013, 20:14

seaman писал(а):Вы вообще понимаете, что Start запускается один раз! Меняйте, не меняйте потом Вашу переменную, ничего не изменится. Ну а если остановить игру, изменить переменную и запустить снова - все меняется, я проверил.



Как то все не по теме :( вы уж простите. Я вас спрашиваю как мне боровик найти в лесу, а вы мне про сапоги резиновые.

Start запускается один раз, естественно.

Насчет переменной - о том и толкую.

если изменить и запустить снова - вершины меняют позицию, верно.

Все эти замечательные очевидности я и так знаю, слава Oлимпу. Быть может у вас есть мысли, идеи как все-таки изменить позицию вершин в realTime? Если нету или быть может это невозможно сделать без катастрофической потери fps, то дайте знать, я закрою тему.
Аватара пользователя
Medveckij
Адепт
 
Сообщения: 1014
Зарегистрирован: 10 ноя 2012, 15:44

Re: Mesh Vertices

Сообщение seaman 13 янв 2013, 20:37

Как то Вы не по теме совсем все пишете. Вот это:
Вот главное доказательство ---> переменная xyzPos. В инспекторе изменяю число, но визуальных изменений нету. Что руками, что в update оно будет меняться автоматически - разницы никакой.

С этим:
Start запускается один раз, естественно.
Насчет переменной - о том и толкую.
если изменить и запустить снова - вершины меняют позицию, верно.

совершенно не стыкуется.
Вы уж определитесь - есть изменения или нет? Понимаете Вы что при изменении в инспекторе переменной нужно перезапускать игру, или нет?
Быть может у вас есть мысли, идеи как все-таки изменить позицию вершин в realTime?

Я Вам уже отвечал:
Re: Mesh Vertices
Сообщение seaman Вчера, 21:50
фиксируются на старте и далее он не реагирует.
неправда.
Синтаксис:
Используется csharp
Vector3[] vers = mesh.vertices;
//меняем вершины (не меняя количество! и тасовать их с осторожностью)
mesh.vertices = vers;

Если Вы не понимаете - задавайте более конкретные вопросы.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Mesh Vertices

Сообщение Medveckij 13 янв 2013, 20:50

"визуальных изменений нету"

это я про real time говорил.

Ладно, sorry, что отнял у вас время. Если где то выразился резко - не обижайтесь.

Нашел несколько англоязычных статей по теме. все поголовно ругаются на одну только идею изменения позиции меша в real time. пишут -дорогое это удовольствие. А жаль.
Аватара пользователя
Medveckij
Адепт
 
Сообщения: 1014
Зарегистрирован: 10 ноя 2012, 15:44

Re: Mesh Vertices

Сообщение seaman 13 янв 2013, 20:54

Дорогое, конечно, но сделать можно. Почему у Вас не заработало понять без кода невозможно, а вы его так и не привели.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

След.

Вернуться в Почемучка

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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 16