Перемещение вертексов.
| |
JessyStorm | Дата: Пятница, 13 Мая 2016, 15:33 | Сообщение # 1 |
заслуженный участник
Сейчас нет на сайте
| Привет. Нужен скрипт, предпочтительно на шарпе. Суть: 1. Взять все вертексы меша. 2. Пустить от каждого вертекса рейкаст вниз, с игнорированием некоторых слоев. 3. Опустить каждый вертекс в конечную точку луча. Все. Взамен могу предложить плюсик или несложную 3д модель. Пишите на форуме или в скайп psihrus1. Спасибо.
https://www.artstation.com/artist/jessystorm
Сообщение отредактировал JessyStorm - Пятница, 13 Мая 2016, 15:35 |
|
| |
MANMANA | Дата: Суббота, 14 Мая 2016, 00:28 | Сообщение # 2 |
почти ветеран
Сейчас нет на сайте
| набросал. как-то так:
Код using UnityEngine;
public class MoveVertices : MonoBehaviour {
void Start () { }
void Update() {
if (Input.GetKeyDown ("space")) { Mesh mesh = GetComponent<MeshFilter> ().mesh; Vector3[] vertices = mesh.vertices; int i = 0; while (i < vertices.Length) { RaycastHit hit; if (Physics.Raycast (transform.TransformPoint (vertices [i]), -Vector3.up, out hit, 100.0f)) { Debug.DrawLine (transform.TransformPoint (vertices [i]), hit.point);
vertices [i] = transform.InverseTransformPoint (hit.point); } i++; } mesh.vertices = vertices; } } }
Добавлено (14 мая 2016, 00:28) --------------------------------------------- рисует, правильно
http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Последнее:
Новый раздел "Текстуры"
Как запатентовать, защитить техническое решение, игру, идею
Сообщение отредактировал MANMANA - Воскресенье, 15 Мая 2016, 00:08 |
|
| |
JessyStorm | Дата: Суббота, 14 Мая 2016, 09:09 | Сообщение # 3 |
заслуженный участник
Сейчас нет на сайте
| Цитата MANMANA ( ) using UnityEngine;
public class MoveVertices : MonoBehaviour {
void Start () { }
void Update() {
if (Input.GetKeyDown ("space")) { Mesh mesh = GetComponent<MeshFilter> ().mesh; Vector3[] vertices = mesh.vertices; int i = 0; while (i < vertices.Length) { RaycastHit hit; if (Physics.Raycast (transform.TransformPoint (vertices [i]), -Vector3.up, out hit, 100.0f)) {
Debug.DrawLine (transform.TransformPoint (vertices [i]), hit.point);
vertices [i] = transform.InverseTransformPoint (hit.point); } i++; } mesh.vertices = vertices; } } } Криво работает. Вертексы перемещаются некорректно.
https://www.artstation.com/artist/jessystorm
Сообщение отредактировал JessyStorm - Суббота, 14 Мая 2016, 09:27 |
|
| |
MANMANA | Дата: Суббота, 14 Мая 2016, 15:02 | Сообщение # 4 |
почти ветеран
Сейчас нет на сайте
| полагаю, существует какая-то зависимость от самой 3D модели и ее вершин. вот, например, 3D модель, которая отлично легла на примитивы Unity Квад (Box collider) и плоскость (Mesh collider).
Добавлено (14 мая 2016, 15:02) --------------------------------------------- пысы Возможно, чтобы получить готовое решение, вам стоит найти скрипт симуляции одежды/ткани или подсмотреть в существующих ассетах симуляции одежды/ткани, например, в этом Shroud Cloth Simulation Engine (Bundle)
http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Последнее:
Новый раздел "Текстуры"
Как запатентовать, защитить техническое решение, игру, идею
|
|
| |
Lertmind | Дата: Суббота, 14 Мая 2016, 16:39 | Сообщение # 5 |
заслуженный участник
Сейчас нет на сайте
| MANMANA, скрипт работает правильно, насколько я пробовал опускать сферу на plane и цилиндр на plane и сферу одновременно. Конечно, надо снимать коллайдер с объекта на котором скрипт, чтобы не попадать на себя. Z-fighting тоже предсказуем. В чём кривость-то?
|
|
| |
JessyStorm | Дата: Суббота, 14 Мая 2016, 18:23 | Сообщение # 6 |
заслуженный участник
Сейчас нет на сайте
| Действительно, коллайдер забыл снять. Всем по плюсу, дамы и господа! Пришлось правда еще самому лейер маск дописать, про это ты забыл. Но все равно спасибо. БТВ, если кому интересно, еще нужно добавить mesh.RecalculateBounds(); Чтобы не было косяков с отображением.
https://www.artstation.com/artist/jessystorm
Сообщение отредактировал JessyStorm - Суббота, 14 Мая 2016, 18:41 |
|
| |
Lertmind | Дата: Суббота, 14 Мая 2016, 20:50 | Сообщение # 7 |
заслуженный участник
Сейчас нет на сайте
| JessyStorm, посмотрел Mesh, похоже надо ещё RecalculateNormals() вызывать, а судя по описанию, самому tangets обновлять, если необходимо.
|
|
| |
MANMANA | Дата: Воскресенье, 15 Мая 2016, 00:11 | Сообщение # 8 |
почти ветеран
Сейчас нет на сайте
| Цитата Lertmind ( ) В чём кривость-то? Да, про собственный коллайдер я как-то и позабыл Тяжелая неделя, желание помочь ближнему и рассеянное внимание, вопчем чем богаты
http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Последнее:
Новый раздел "Текстуры"
Как запатентовать, защитить техническое решение, игру, идею
|
|
| |
|