Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.01.2012, 20:30
Parez вне форума Посмотреть профиль Отправить личное сообщение для Parez Найти все сообщения от Parez
  № 1  
Ответить с цитированием
Parez

Регистрация: Nov 2010
Адрес: Ярославль
Сообщений: 249
Question В Away3D текстура растягивается, вместо того, чтобы повторяться

Сегодня решил начать использовать Away3D в своём проекте и столкнулся с проблемой. Когда я создаю объект Plane с текстурой, которая должна повторяться (это указано при инициализации текстуры), текстура всё равно растягивается по размеру объекта Plane.
Вот код:
Код AS3:
var floorMaterial:BitmapMaterial = new BitmapMaterial(floorTexture,true,true,true);
var plane:Plane = new Plane();
plane.material = floorMaterial;
plane.segmentsW = pathWidth/10;
plane.segmentsH = pathWidth/10;
plane.width = pathWidth;
plane.height = pathWidth;
view.scene.addChild(plane);

Старый 11.01.2012, 03:07
Dima_DPE вне форума Посмотреть профиль Отправить личное сообщение для Dima_DPE Найти все сообщения от Dima_DPE
  № 2  
Ответить с цитированием
Dima_DPE

блогер
Регистрация: Aug 2005
Сообщений: 178
Записей в блоге: 4
Все правильно, у плейна координаты текстуры идут от 0 до 1, от одного края к другому и ему ничего повторять и не надо, чтобы вызвать повторения, надо эти самые координаты изменить. Попробуйте, что нибуть типа

plane.geometry.scaleUV(3, 3); // это по идее заставит вашу текстуру 3 раза повторится

Старый 12.01.2012, 17:20
Parez вне форума Посмотреть профиль Отправить личное сообщение для Parez Найти все сообщения от Parez
  № 3  
Ответить с цитированием
Parez

Регистрация: Nov 2010
Адрес: Ярославль
Сообщений: 249
Dima_DPE, в новых версиях метод scaleUV имеет только один параметр scale:Number. Это очень странно и раздражает.

Старый 12.01.2012, 18:19
Dima_DPE вне форума Посмотреть профиль Отправить личное сообщение для Dima_DPE Найти все сообщения от Dima_DPE
  № 4  
Ответить с цитированием
Dima_DPE

блогер
Регистрация: Aug 2005
Сообщений: 178
Записей в блоге: 4
Чтото глядя сюда https://raw.github.com/profelis/away...se/Geometry.as я вижу именно scaleUV, а это последняя версия Geometry из master ветки и отдельно scale, но это уже для масштабирования непосредственно геометрии, а не координат текстур.

Или идите напрямую к subGeometries и меняйте там. https://raw.github.com/profelis/away...SubGeometry.as


Последний раз редактировалось Dima_DPE; 12.01.2012 в 18:24.
Старый 12.01.2012, 20:17
Parez вне форума Посмотреть профиль Отправить личное сообщение для Parez Найти все сообщения от Parez
  № 5  
Ответить с цитированием
Parez

Регистрация: Nov 2010
Адрес: Ярославль
Сообщений: 249
Dima_DPE, да, вы правы. Видимо у меня была не последняя версия. Теперь скачал последнюю с github и всё нормально. Кстати, вы не знаете, как задать разные scaleUV для разных поверхностей куба или другой фигуры?

Старый 12.01.2012, 21:24
Dima_DPE вне форума Посмотреть профиль Отправить личное сообщение для Dima_DPE Найти все сообщения от Dima_DPE
  № 6  
Ответить с цитированием
Dima_DPE

блогер
Регистрация: Aug 2005
Сообщений: 178
Записей в блоге: 4
Цитата:
Сообщение от Parez Посмотреть сообщение
Кстати, вы не знаете, как задать разные scaleUV для разных поверхностей куба или другой фигуры?
Самый простой вариант это сделать свой куб и добавив ему нужный функционал. Я бы посоветовал взять стандартный примитив куб и посмотреть в нем метоб buildGeometry или чтото в этом роде. И в месте где создаются uv координаты попробовать пошаманить

Старый 12.01.2012, 21:44
Parez вне форума Посмотреть профиль Отправить личное сообщение для Parez Найти все сообщения от Parez
  № 7  
Ответить с цитированием
Parez

Регистрация: Nov 2010
Адрес: Ярославль
Сообщений: 249
А с классом LinearExtrude дело обстоит так же?

Старый 12.01.2012, 21:46
Dima_DPE вне форума Посмотреть профиль Отправить личное сообщение для Dima_DPE Найти все сообщения от Dima_DPE
  № 8  
Ответить с цитированием
Dima_DPE

блогер
Регистрация: Aug 2005
Сообщений: 178
Записей в блоге: 4
Не, buildUVs надо смотреть по всей видимости.

Добавлено через 7 минут
Цитата:
Сообщение от Parez Посмотреть сообщение
А с классом LinearExtrude дело обстоит так же?
LinearExtrude хоть сам и использую, но сильно его не люблю. В других экслудерах можно передать дополнительные масштабы для uv координат, а в нем нельзя. Так что, тут снова scaleUV ручками Для постоения стен мне пришлось каждую стену сделать отдельно иначе там вообще с uv не разобраться и "обои" на стены красиво не наложить.

По идее если у вас не сложная геометрия и вы в состоянии сами расчитать им координаты вершин и uv координаты, то может стоит самому собрать меш используя MeshHelper.build().


Последний раз редактировалось Dima_DPE; 12.01.2012 в 21:55.
Старый 12.01.2012, 22:17
Parez вне форума Посмотреть профиль Отправить личное сообщение для Parez Найти все сообщения от Parez
  № 9  
Ответить с цитированием
Parez

Регистрация: Nov 2010
Адрес: Ярославль
Сообщений: 249
Цитата:
Для постоения стен мне пришлось каждую стену сделать отдельно иначе там вообще с uv не разобраться и "обои" на стены красиво не наложить.
Я вот тут у них на форуме щас примерно тот же вопрос задал. Мне админ всё советует всё-таки использовать LinearExtrude, и похоже предлагает делать стены блоками. Только я не совсем понимаю, как совместить LinearExtrude с блочностью...
Вот что написал админ:
Цитата:
Parez, again, if you define your segments with all same length, like if your maze is defined on a grid, you do not even need repeat, Linearextrude will do it for you, if you set coverAll boolean to false… then using seamless square map, it will look marvelous. no distort, no stretch, a maze ing
Я просто особо раньше с 3D дела не имел, поэтому плохо понимаю что к чему..

Старый 12.01.2012, 22:27
Dima_DPE вне форума Посмотреть профиль Отправить личное сообщение для Dima_DPE Найти все сообщения от Dima_DPE
  № 10  
Ответить с цитированием
Dima_DPE

блогер
Регистрация: Aug 2005
Сообщений: 178
Записей в блоге: 4
Цитата:
Сообщение от Parez Посмотреть сообщение
Я просто особо раньше с 3D дела не имел, поэтому плохо понимаю что к чему..
Ну вот он и советует не использовать coverAll, т.е. coverAll=false и посмотреть на результат, он убеждает что все будет смотреться пучком. Возможно теперь именно так. Я бы именно так сначала и попробовал сделать.

Но раньше я делал каждую стену отдельно этим же экструдером и отдельно масштабировал uv координаты в зависимости от длины стены. Выглядело это примерно так: (год писал с головы и многое упростил)

Код AS3:
for (i=0; i < n; i++)
{
 wall = buildWall(start[i], end[i], bmpTexture); // делаем стену от начальной точки до конечной
                                                               // и с текстурой 
 wall.geometry.scaleUV(wallLength(start[[i], end[i]) / bmpTexture.width, wallHeight / bmpTexture.height);
}

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:34.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 15:34.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.