Mishki-tomsk.ru

Мода и стиль
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Unity3D: как создать недеформируемую текстуру

Unity3D: как создать недеформируемую текстуру?

Привет всем!
Делаю тестовые уровни к 3D игре. Стены сейчас покрыты текстурой содержащей шахматные клетки. Если я растягиваю модель стены, то и текстура растягивается. Вопрос такой: как лучше сделать так чтобы текстура не деформировалась? У меня была идея прикреплять к каждой модели стены скрипт, который следит за размерами объекта и передаёт эти данные в шейдер. Скрипт должен будет работать в едитор моде. Но это как-то заморочено. Может ли шейдер сам учитывать деформацию меша?

wrapmode
может
скрипт может тоже
кури маны

Спасибо Александр, но скриптов пытаюсь как раз избежать. Вы предложили тот вариант, что мне известен, но не подходит.
Я так и не сообразил, похоже без скрипта это невозможно сделать. Или возможно.
И вам bool спасибо за не равнодушие)

Alerr
Смотри. Вариантов три:
1) не решать эту задачу
2) если можно все считать в шейдере, не меняя входных данных — скрипт не нужен
3) если нужно менять входные данные — скрипт нужен
Просто же?

Alerr
> Может ли шейдер сам учитывать деформацию меша?

Может, если напишешь соответствующий шейдер.

Executor, руками подкручивать параметры этого шейдера для каждого материала в моей задаче не вариант. Этот ответ, на сколько я понял, схож с вариантом (2) от bool. Я не вижу как в шейдере можно оценить расстояния между соседними вершинами для того чтобы просчитывать как сжать-растягивать текстуру.

Alerr
у тебя меш меняется динамически? если нет, то можно один раз посчитать и поскейлить текстуру и записать уже скоректированные текстурные координаты в меш. Можно, допустим, заюзать 2-3 канала координат и делать лерп между ними в зависимости от какого-то коэффициента. Короче, все сильно зависит от задачи, которую ты решаешь. Бывает так, что вот прямо нужно конкретный шейдер написать для одного вида объектов, и даже скрипт к нему. Это нормально. Если хочешь более развернутых советов/примеров, опиши задачу.

Опишу задачу подробнее. У меня есть куча стен, кубов. Я ищу способ того как дать всем этим объектам один материал такой, что текстура на этих разных объектах не будет растянута. Нужно чтобы она была repeat и чтобы не растягивалась "на меше".

>как создать недеформируемую текстуру?

Ну я аж заинтересовался. Палюбаху новая технология, думаю.
Открываю. Вах. Можно закрывать.

>Я ищу способ того как дать всем этим объектам один материал такой, что текстура на этих разных объектах не будет растянута.

Дай две секунды подумать.
У объекта наверняка есть bounding box. Пишешь шейдер, скалящий текстуру в зависимости от размеров. Для базового класса кидаешь этот шейдер, а также пишешь скриптик, который при создании GameObject находит BB и подставляет коэффициенты для шейдера.

Alerr— а ведь вместо тебя в ВУЗе мог учиться нормальный парень и будущий программист. Подумай об этом.

Читайте так же:
Сшить чехол для тоз 106

CasDev, я уж усомнился в том, что написал в вопросе, что не нужно использовать скрипт. Перепроверил даже. Потом ещё об этом писал в сообщениях. Нет, народ, ну НЕ НУЖНО советовать варианты, которые автор отметает. Я же писал что не нужно крепить скрипт, шейдер без скрипта сам может справиться с задачей, существует такая технология? Может можно как-то в шейдере БЕЗ СКРИПТА получить доступ к вершинам меша?

Похоже что без скрипта шейдер сам получить доступ ко всем вершинам меша не может. Если так, то я не вижу способа как можно работать с масштабированием текстуры.

Alerr
> существует такая технология?
Да. World-Space UV Mapping.

каким шейдером рисуется сейчас?
там достаточно 1 строку добавить — вычислять uv по pos, типа

Leonardo98, о том как поскейлить и как репеат включить я в курсе, но спасибо) Пока нечего в шейдере показывать, он как бы стандартный совсем, единственная особенность — перепросчет координат сейчас не реализована.
Спасибо Barabus, обмозгую

В unity 3d, как добавить текстуру к объекту 3d(.fbx )?

enter image description here

В unity 3d, как добавить текстуру к объекту 3d(.fbx )? Перетаскивание материала с текстурой на объект 3d работает для объекта по умолчанию(eg:cube), но не для загруженных объектов 3d(зонтик)? Я мог получить только цвет, но не текстуру.

2 ответа

  • 3d FBX импорт файлов в Unity не работает должным образом

Я заинтересован в создании приложений виртуальной реальности и нахожусь на начальном уровне. Я импортировал файл FBX самолета и импортировал его в Unity, связав анимацию в Unity и построив ее на своем мобильном телефоне, я вижу версию модели 2D. Как я должен преобразовать его в приложение.

У меня есть требование отобразить интерактивную модель 3D (клиент предоставляет несколько файлов FBX) на одном из экранов в родном приложении Objective-C/Swift. Я знаю, что есть возможность работать с Unity/Cocos3D, но тогда все приложение должно быть основано на Unity/Cocos3D. В моем случае.

если вы добавляете fbx в проект, последовательность будет

  1. Сначала добавьте текстуры
  2. Затем модели.

Если вы хотите применить текстуру к объекту 3D, ему нужна карта UV. Например, в blender : https://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro/UV_Map_Basics

Я думаю, это именно то, чего ты хочешь.

Похожие вопросы:

Я новичок в Unity 3D и хочу выполнить всего лишь небольшую задачу: установить изображение на экземпляр Texture в Unity 3D. Я не знаю, как это сделать во время выполнения, и я также хотел бы знать.

Я пытаюсь импортировать .ply в Unity 3D с цветами вершин каким-либо образом для этого? Я не знаю, как конвертировать файл .ply в .obj, .dae или .fbx. В качестве примера должен быть способ сделать.

У меня возникла проблема с текстурированием объекта в Unity 3D. Я сделал простой объект в 3Ds Max и вставил его в Unity, а затем попытался применить изображение в качестве текстуры, но оно не.

Читайте так же:
Шторка от солнца на коляску сшить

Я заинтересован в создании приложений виртуальной реальности и нахожусь на начальном уровне. Я импортировал файл FBX самолета и импортировал его в Unity, связав анимацию в Unity и построив ее на.

У меня есть требование отобразить интерактивную модель 3D (клиент предоставляет несколько файлов FBX) на одном из экранов в родном приложении Objective-C/Swift. Я знаю, что есть возможность работать.

Я играю с Unity уже 6 месяцев, так что я не expert. Я пытаюсь разработать приложение, с помощью которого можно выбрать модель 3D (механический чертеж в формате .fbx) из списка, импортировать ее и.

Я работаю над проектом aframe, где 3D объектов загружаются из .obj файлов. Однако raycaster не будет работать с импортированными объектами. Я подозреваю, что причина в том, что в отличие от.

Я разрабатываю приложение AR и импортирую файл FBX, содержащий два объекта 3d внутри (у меня не может быть двух отдельных файлов fbx, потому что объекты взаимодействуют друг с другом с анимацией).

У меня есть вопрос о моделях 3D в Unity (Unity 2018.3). Как я могу применить текстуру только к одной части всей модели 3D? Потому что я скачал некоторые модели 3D из интернета (без авторских прав, и.

Как сшить текстуры в unity 3 d

Прикрепленное изображение
Версия: 2017.1
Список изменений
Скачать
Справка
Версия 2019.3
Версия Unity 2020.1.7

Unity3D — это мультиплатформенный инструмент для разработки двух- и трёхмерных приложений и игр, работающий под операционными системами Windows и OS X. Созданные с помощью Unity приложения работают под операционными системами Windows, OS X, Linux, Android, Apple iOS, Windows Phone, BlackBerry, а также на игровых приставках Wii, PlayStation 3 и Xbox 360. Есть возможность создавать интернет-приложения с помощью специального подключаемого модуля к браузеру Unity, а также с помощью экспериментальной реализации в рамках модуля Adobe Flash Player. Позже от поддержки Flash отказались. Приложения, созданные с помощью Unity, поддерживают DirectX и OpenGL.

  • Android
  • WP8
  • iOS
  • BlackBerry 10
  • Tizen
  • Wii U
  • OculisRift
  • GearVR
  • XBox 360/ XBox One
  • PS3/PS4/PSVita
  • Windows/Windows Store App
  • Linux/SteamOS
  • Mac
  • WebPlayer
  • WebGL
  • AndroidTV
  • Samsung SmartTV

      • Unity 3D для разработки игр на Android-устройства (Пост RIBERY321 #40792436)

      В.: У меня отсутствует часть сообщений в консоли, хотя они точно должны там быть.
      О.: Выключите опцию Collapse в консоли.

      В.: Как мне реализовать паузу?
      О.: Наиболее простой вариант — установить Time.timeScale в ноль.

      В.: Как заставить два меш-коллайдера взаимодействовать?
      О.: Включить опцию Convex у обоих.

      В.: Как отключить/заблокировать курсор?
      О.: Screen.showCursor; Screen.lockCursor.

      В.:Как придать телу импульс?
      О.: Rigidbody.AddForce с параметром ForceMode.Impulse.

      В.: Как изменить громкость всех источников звука в сцене?
      О.: AudioListener.volume

      В.: Как избавиться от смазывания текстур при отдалении от них камеры?
      О.: Отключить генерацию mipmaps в настройках импорта текстуры.

      В.: Как отключить вывод предупреждений в консоль?
      О.: #pragma warning disable (в справке msdn даны подробности)

      В.: Как спозиционировать Scene View на выбранном объекте?
      О.: Edit > Frame Selected или просто клавиша F.

      В.: Как сделать объект невидимым для Raycast?
      О.: Поставить его в стандартный слой Ignore Raycast.

      В.: Как сделать так, чтобы игра была в горизонтальном а не в вертикальном режиме?
      О.: В Player Settings нужно выбрать пункт Landscape left в Screen оrientation.

      В.: Как отключить обработку коллизий для коллайдера?
      О.: Включить опцию коллайдера isTrigger. Однако, такой коллайдер всё ещё будет принимать Raycast.

      В.: Куда сохраняются логи редактора?
      О.: C:Documents and SettingszaichegLocal SettingsApplication DataUnityEditorEditor.log
      Этот же документ можно посмотреть, нажав Open Editor Log в консоли.

      В.: Куда сохраняются логи приложения?
      О.: Для standalone: _Dataoutput_log.txt. Для web: C:Documents and SettingsuserLocal SettingsTempUnityWebPlayerlog

      В.: Где можно посмотреть, какие ресурсы сколько занимают в моём билде?
      О.: Там же, в Editor.log (после сборки билда).

      В.: У меня глючит физика.
      О.: Проверьте, осущетвляются ли все физические действия в FixedUpdate(). Увеличьте размеры объектов. Избавьтесь от тонких (или безтолщинных) мешей (Plane). Уменьшите FixedTimesetp. НЕ ДВИГАЙТЕ СТАТИЧЕСКИЕ КОЛЛАЙДЕРЫ (начиная с Unity5 уже можно, но всеравно не стоит)

      B.: Не получается отредактировать элемент массива mesh.vertices (mesh.normals и прочее).
      О.: Редактируйте во временном массиве vertTemp, а потом mesh.vertices = vertTemp.

      В.: Я отключил скрипт, но он всё равно частично работает!
      О.: Отключение скрипта действует лишь на вызов метода Update(). Start, Awake и прочие будут работать.

      В.: Как увеличить частоту физических расчётов?
      О.: Edit > Project Settings > Time > Fixed Timestep

      В.: Как приостановить выполнение в Editor Mode (поставить на паузу)?
      О.: Debug.Break

      В.: Как отобразить кириллицу в GUI?
      О.: Локализация в коде это плохо. Нужно хранить текст в текстовых файлах и через код вытаскивать нужные строчки. Например, так (не самый лучший пример, но суть понятна)

      В.: Как мне подгружать дополнительные ресурсы в рантайм?
      О.: AssetBundles.

      В.: Как менять хоткеи редактора?
      О.: HKEY_CURRENT_USERSoftwareUnity TechnologiesUnity Editor

      В.: Как разрешить игре работу «в фоне»?
      О.: Edit → Project Settings → Player → Run in Background

      В.: Почему не работает динамичный батчинг?
      О.: В Unity есть лимит на количество вертексных атрибутов в 900 штук (лимит поставлен юнитеками опытным путем, может быть изменен в будущем, самому поменять его нельзя), именно вертексов, а не поликов. Т.е. смотрим на шейдер, которым хотим что-то отрисовать, на его входящие параметры. Видим, например, position, uv, normal — 3 атрибута. Делим 900 на 3, получаем лимит в 300 вертексов. Вот если модели с материалом на данном шейдере будут не более 300 вертексов — они будут сбатчены. Т.е. если отказаться от normal в шейдере, то получим position, uv — 900 / 2 = лимит в 450 вертексов. Если откажемся от uv (можно посчитать в том же вершинном шейдере для статичной геометрии, но это уже специфичные вещи), то получим 900 / 1 = лимит в 900 вертексов. От position отказаться нельзя, это координаты самого вертекса. Аналогично, если передавать position, uv, uv2, normal, tangent, color, то получим 900 / 6 = лимит в 150 вертексов.

      В.: Почему возникают баги с обработкой столкновений коллизии?
      О.: Это не баги, это непонимание того, как работает физика в юнити, уже было неоднократно объяснено. Коллайдеры без RB двигать нельзя, двигать нельзя, двигать нельзя — они считаются статичным миром, который двигаться не может и внутри расчитывается с оптимизацией по кластерам. Как только статичный коллайдер двигается — весь статичный мир перестраивается. Объекты с RB считаются отдельно как динамические объекты. Собственно, отсюда и «баг» — т.к. статичный мир не может двигаться, то и события наступать не могут при его принудительном движении.
      P.S. Судя по профайлеру тот же CharacterController является статик-коллайдером со всеми вытекающими последствиями.
      P.P.S. После выхода Unity 5 стало можно, но всеравно не тоит.

      В.: Почему не работает Asset store? Как заставить работать?
      О.: Попробуйте выключить режим использования DirectX 11

      В.: Какие отличия между Pro-версией и обычной?
      О.: Заходим на страницу покупки Unity и на нужной лицензии выбираем Read more. После этого появится окошко, в котором можно посмотреть отличия между лицензиями.

      В.: Где можно взять исходный код Unity?
      О.: Нажмите здесь, выберете Россию, потом свяжитесь с представителями Unity Technologies. Разумеется это не бесплатно
      Оригинальный текст с сайта Unity:
      «If you want to license Unity to develop content for consoles and/or for embedding, cloud distribution or to access Unity source code, contact us here.»

      Как сшить текстуры в unity 3 d

      3) Создание цветовой палитры
      Заходите в фотошоп и создавайте новую текстуру, используя базовый фоновый цвет или простую текстуру с малым количеством деталей, например снимок бетонной стены или куска металла.
      Добавляете поверх слой с ambient и в свойствах слоя делаете режим «умножение» (multiply). Настраиваете прозрачность. Также добавляете слой с развёрткой и выбираете режим «экран» (screen), ставите прозрачность около 20-25%.

      У нас есть базовый шаблон, по которому можно рисовать палитру.
      4) Потёртости и царапины.
      Любая металлическая деталь как правило покрыта краской. По прошествии времени часть краски слезает и возникают потёртости и царапины. Создаёте новый слой, выбираете режим экран с прозрачностью около 30% и берёте любую кисточку в фотошопе, у которой самое меньшее сглаживание. Цвет белый. ambient карта может дать нам хорошее представление, где больше слезает краска. Как правило это углы и края деталей. Неплохой идеей будет добавить второй слой потёртостей поверх, с меньшей прозрачностью.

      Далее царапины. Также создаёте новый слой в режиме экрана с небольшой прозрачностью, выбираете карандаш белого цвета и расчёркиваете металл прямыми линиями, создавая поцарапанные поверхности.

      5) Закрашивание поверхностей.
      Заливка в фотошопе имеет отличное свойство «все слои». Выбираете необходимый цвет, в свойствах заливки наверху ставите галочку «все слои» (all layers) и закрашиваете определённые кусочки деталей в свой цвет. Заливка будет ориентироваться на детали и царапины, однако вам нужно чутко регулировать чувствительность инструмента.

      Для создания двухцветной окраски можно создать свой собственный шаблон заливки под себя.

      Как правило металлические поверхности имеют несколько слоёв краски. Для создания второго слоя, сделайте слой под основными слоями краски. С помощью волшебной палочки, создайте выделение из уже залитой краски, потом с помощью панели выделение, увеличьте выделение на 2-3 пикселя в зависимости от вашего разрешения. Теперь вы можете, используя это выделение, рисовать второй слой краски под основным слоём.

      6) Создание Bump текстуры.
      Бамп текстура создаёт визуальный объём и выпуклость для вашей текстуры. Конечно сейчас есть программы, которые создают её автоматически, такие как CrazyBump, однако мы попробуем сделать её вручную. Для её создания сохраните вашу палитру в отдельный файл, и сделайте все слои чёрно-белыми с помощью меню «изображение.»Двухцветные палитры замените на одноцветный слой, все царапины и потёртости обратите в чёрный цвет, чтобы в игре они впадали внутрь. Вся краска будет примерно одго тона, нижний слой чуть темнее. Все лишнии детали смазаны, чтобы придать карте более гладкий вид. Карты ambient и развёртка отключены.

      7) Дополнительные детали
      Отличным способом придать детализованности вашей палитре будет добавление дополнительных текстур поверх, таких как бетон, металл, ткани, пластик или ржавчина. Задайте слабую прозрачность и поиграйте с режимами слоёв, чтобы добиться мягкого и органично выглядящего эффекта. Эффект ржавчины можно сделать рисуя обычной смазанной кситю жёлтого/бурого/зелёного цвета в режиме умножения и с малой прозрачностью.
      Также можете добавить детали, такие как надписи, стрелочки и цифры из других готовых изображений или используя инструмент текста.

      Вот так выглядит наша финальная палитра:

      8) Карта отражений.
      Карта отражений даёт вам возможность регулировать отражающие свойства материала при рендере или в игре. Она создаётся почти также, как и карта бампа. Более светлые части отражают больше, более тёмные — меньше. Соответственно все царапины и места со слезшей краской у нас снова тёмные, а основная поверхность более светлая. Карта ambient включена.

      голоса
      Рейтинг статьи
      Ссылка на основную публикацию
      Adblock
      detector