Итак, у меня есть этот скрипт, в котором я использую Graphics.DrawMeshInstanced и хочу изменить вращение каждой сетки, чтобы оно соответствовало ландшафту. Проблема в том, что я не знаю, как это сделать, потому что я не могу использовать Transform.rotation для каждой сетки в списке Matrix4x4.
Вот как я выравниваю объекты «трава» с ландшафтом в другом скрипте, где я создаю экземпляры объектов травы вручную.
Ray ray = new Ray(treeSite + Vector3.up * 10.0f, Vector3.down); RaycastHit hit = new RaycastHit();
if (Physics.Raycast(ray, out hit))
{
allocatedGO.transform.rotation = Quaternion.FromToRotation(allocatedGO.transform.up, hit.normal) * allocatedGO.transform.rotation;
}
А ниже приведен сценарий, в котором я использую Graphics.DrawMeshInstanced.
Vector3 randomPos = Random.insideUnitSphere * radius;
randomPos += transform.position;
float posY = terr.SampleHeight(randomPos);
randomPos.y = posY;
Vector3 scale = new Vector3(Random.Range(1, 1.5f), Random.Range(1, 1.5f), Random.Range(1, 1.5f));
for (int i = 0; i < Instances; i++)
{
if (AddedMatricies < 1000)
{
Batches[Batches.Count - 1].Add(Matrix4x4.TRS(randomPos, Quaternion.Euler(-90, 0, 0), scale));
AddedMatricies += 1;
}
else
{
Batches.Add(new List());
AddedMatricies = 0;
}
}
foreach (var Batch in Batches)
{
for(int i = 0; i < mesh.subMeshCount; i++)
{
Graphics.DrawMeshInstanced(mesh, i, Materials, Batch);
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... list-using
Matrix4x4.TRS Как изменить вращение каждой сетки в списке Matrix4x4 с помощью raycast ⇐ C#
Место общения программистов C#
1729439264
Anonymous
Итак, у меня есть этот скрипт, в котором я использую Graphics.DrawMeshInstanced и хочу изменить вращение каждой сетки, чтобы оно соответствовало ландшафту. Проблема в том, что я не знаю, как это сделать, потому что я не могу использовать Transform.rotation для каждой сетки в списке Matrix4x4.
Вот как я выравниваю объекты «трава» с ландшафтом в другом скрипте, где я создаю экземпляры объектов травы вручную.
Ray ray = new Ray(treeSite + Vector3.up * 10.0f, Vector3.down); RaycastHit hit = new RaycastHit();
if (Physics.Raycast(ray, out hit))
{
allocatedGO.transform.rotation = Quaternion.FromToRotation(allocatedGO.transform.up, hit.normal) * allocatedGO.transform.rotation;
}
А ниже приведен сценарий, в котором я использую Graphics.DrawMeshInstanced.
Vector3 randomPos = Random.insideUnitSphere * radius;
randomPos += transform.position;
float posY = terr.SampleHeight(randomPos);
randomPos.y = posY;
Vector3 scale = new Vector3(Random.Range(1, 1.5f), Random.Range(1, 1.5f), Random.Range(1, 1.5f));
for (int i = 0; i < Instances; i++)
{
if (AddedMatricies < 1000)
{
Batches[Batches.Count - 1].Add(Matrix4x4.TRS(randomPos, Quaternion.Euler(-90, 0, 0), scale));
AddedMatricies += 1;
}
else
{
Batches.Add(new List());
AddedMatricies = 0;
}
}
foreach (var Batch in Batches)
{
for(int i = 0; i < mesh.subMeshCount; i++)
{
Graphics.DrawMeshInstanced(mesh, i, Materials[i], Batch);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79107456/matrix4x4-trs-how-to-change-the-rotation-of-each-mesh-in-a-matrix4x4-list-using[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия