Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.04.2022, 19:30
Аспирант
Отправить личное сообщение для Raadsert Посмотреть профиль Найти все сообщения от Raadsert
 
Регистрация: 09.12.2021
Сообщений: 82

Three.js Текстурное заполнение
Здравствуйте.

Пробовал накладывать текстуры на плоскость, но текстура накладывалась только на часть области в левый нижний угол а на остальную плоскость по осям x/y растягивался шлейф от текстуры. Всё делал по гайду ctr+c/ctrl+v.

Изображение размером 512х512px.

Может кто-то знает в чём может быть проблема?
Ответить с цитированием
  #2 (permalink)  
Старый 25.04.2022, 21:45
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,127

>> в чём может быть проблема?
Во всем.

В твоем сообщении почти нету информации которая может помочь с твоей проблемой. Информация есть только про tree js и то что есть попытка работать с текстурой.

Если в двух словах то для того что бы OpenGL/Three.js отрисовал геометрию с текстурой необходимо
1. Задать параметры отрисовки OpenGL
2. Загрузить текстуру в текстурный регистр
3. Загрузить массив полигонов геометрии (массив x,y,z в трехмерном пространстве)
4. Загрузить массив текстурных координат (массив x,y в экранных координатах)
5. Вызвать отрисовку геометрии.

В твоем случае похоже массива текстурных координат нету либо в нем находится мусор.
Ответить с цитированием
  #3 (permalink)  
Старый 26.04.2022, 03:12
Аспирант
Отправить личное сообщение для Raadsert Посмотреть профиль Найти все сообщения от Raadsert
 
Регистрация: 09.12.2021
Сообщений: 82

Сообщение от MallSerg Посмотреть сообщение
>> в чём может быть проблема?
Во всем.

В твоем сообщении почти нету информации которая может помочь с твоей проблемой. Информация есть только про tree js и то что есть попытка работать с текстурой.

Если в двух словах то для того что бы OpenGL/Three.js отрисовал геометрию с текстурой необходимо
1. Задать параметры отрисовки OpenGL
2. Загрузить текстуру в текстурный регистр
3. Загрузить массив полигонов геометрии (массив x,y,z в трехмерном пространстве)
4. Загрузить массив текстурных координат (массив x,y в экранных координатах)
5. Вызвать отрисовку геометрии.

В твоем случае похоже массива текстурных координат нету либо в нем находится мусор.
Я же говорю, всё стандартно по гайду делаю, вот код добавления текстуры. Ничего сверхестественного, обычные азы.

let texture = new THREE.TextureLoader().load( "textures/water.jpg" );
texture.wrapS = THREE.RepeatWrapping;
texture.wrapT = THREE.RepeatWrapping;
texture.repeat.set( 4, 4 );


Дальше передача в map...

let material = new THREE.MeshBasicMaterial( { map: texture, side: THREE.DoubleSide } )


Передача материала плоскости и т.д. и т.п.
Ответить с цитированием
  #4 (permalink)  
Старый 26.04.2022, 13:01
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,127

>> Ничего сверхестественного, обычные азы.
Ну тогда бери самый обычный совет и применяй его.

>> Я же говорю, всё стандартно ...
Что за стандарт приведи ссылку на его RFC ну или любой другой документ стандартизации.

>> по гайду делаю,
по какому?
Ответить с цитированием
  #5 (permalink)  
Старый 26.04.2022, 19:52
Аспирант
Отправить личное сообщение для Raadsert Посмотреть профиль Найти все сообщения от Raadsert
 
Регистрация: 09.12.2021
Сообщений: 82

Сообщение от MallSerg Посмотреть сообщение
>> Ничего сверхестественного, обычные азы.
Ну тогда бери самый обычный совет и применяй его.

>> Я же говорю, всё стандартно ...
Что за стандарт приведи ссылку на его RFC ну или любой другой документ стандартизации.

>> по гайду делаю,
по какому?
Книга, немного устаревшая, но по спецификации некоторые места просто обновляются. https://moodle.znu.edu.ua/pluginfile...а%20WebGL.pdf

Гайд по выводу текстуры:
https://documentation.help/three.js-ru/textures.htm
Или официальная спецификация:
https://threejs.org/docs/#api/en/textures/Texture

Продолжение кода:
let geometry = new THREE.PlaneGeometry(300, 300, 1, 1);
  let checkerboard = new THREE.Mesh(geometry, material)
  checkerboard.position.y = -1
  checkerboard.position.x = Math.PI / 2

  scene.add( checkerboard );
Ответить с цитированием
  #6 (permalink)  
Старый 26.04.2022, 21:57
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,127

Закомментируй строчку "texture.repeat.set( 4, 4 );"
Ответить с цитированием
  #7 (permalink)  
Старый 26.04.2022, 23:31
Аспирант
Отправить личное сообщение для Raadsert Посмотреть профиль Найти все сообщения от Raadsert
 
Регистрация: 09.12.2021
Сообщений: 82

Сообщение от MallSerg Посмотреть сообщение
Закомментируй строчку "texture.repeat.set( 4, 4 );"
А смысл? Просто картинка растягивается на весь объект. Я то хочу сделать повторение этой картинки на всём объекте. Но он по какой-то причине не хочет повторяться. Честно говоря думаю, может там нужны какие-то дополнительные настройки?
Ответить с цитированием
  #8 (permalink)  
Старый 26.04.2022, 23:53
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,127

А смысал описан в документации метода repeat объекта texture
Ответить с цитированием
  #9 (permalink)  
Старый 27.04.2022, 02:54
Аспирант
Отправить личное сообщение для Raadsert Посмотреть профиль Найти все сообщения от Raadsert
 
Регистрация: 09.12.2021
Сообщений: 82

Сообщение от MallSerg Посмотреть сообщение
А смысал описан в документации метода repeat объекта texture
Ииии? Какой смысл мне ставить текстуру без повторения если у меня проблема как раз в том чтобы поставить её с повторением? Repeat для того и нужен чтоб продублировать текстуру указанное количество раз на поверхности фигуры. Я и пытаюсь это сделать, но вместо заполнения фигуры одной текстурой сеткой 4х4 у меня текстура отображается снизу слева на фигуре (в моём случае плоскость) и тянется шлейф от текстуры по осям X и Y, остальной пространство закрашено в преобладающий цвет на картинке текстуры.
Ответить с цитированием
  #10 (permalink)  
Старый 27.04.2022, 14:09
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,127

>> Какой смысл мне ставить текстуру без повторения ...
Это ложное или ошибочное утверждение.

Назначение этих строк тоже описано в документации.
texture.wrapS = THREE.RepeatWrapping;
texture.wrapT = THREE.RepeatWrapping;

Следует обратить внимание на константу THREE.RepeatWrapping
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Three.js как сделать шахмтную доску leon2009sp Общие вопросы Javascript 0 10.11.2021 09:51
Подключение к Angular проекту Three.js вызывает ошибку сервере 404 Peter.ru Angular.js 2 15.10.2018 15:31
не анимируется второй рендерер - three.js drakonolom Общие вопросы Javascript 1 26.07.2018 18:49
JS, <SELECT> заполнение bma2004 Общие вопросы Javascript 6 13.11.2016 13:48
объединение функционала leaflet.js и three.js Trippal Библиотеки/Тулкиты/Фреймворки 1 07.09.2016 10:58