Окунись в мир фэнтези! Хит 2009 года!   [ Фантастический мир, где ты можешь стать Легендой! Бесплатная онлайн-игра! ]
Текстурирование матрицы (Dark Basic) - Dark Basic - Программинг - Каталог статей - Развлекательный сайт для программистов-игроделов



Категории каталога

Программинг [35]
Программинг, уроки, формулы, туториалы
Dark Basic [30]
Помощь начинающим в Dark Basic (Статьи,учебники,книги)
Blitz 3d [7]
Статьи и уроки по Blitz 3d
C/C++ [7]
Статьи по C/C++
Delphi [12]
книги, уроки, статьи, программирование в Delphi
Game Maker [12]
Статьи, помощь для программистов игроделов на Game Maker
Ассемблер (Assembler) [5]
Стати по Ассемблеру для начинающих и продвинутых программистов
ВЕБ-ПРОГРАММИРОВАНИЕ [5]
Уроки и статьи по ВЕБ-программированию

Форма входа

Приветствую Вас Гость!

E-mail:
Пароль:

Поиск

Друзья сайта



    Случайное фото

    Счётчики



    Rambler's Top100 Seo анализ сайта оптимизация

    Статистика

    Онлайн всего: 2
    Гостей: 2
    Пользователей: 0

Поддержите наш проект

WebMoney:
R309699065243
U292079291240
Z373355457648

Наш опрос

Опрос: Эмо ли вы ?
Всего ответов: 134

Статистика

$COUNTERdiv>
Seven Quadrats of Hell

Каталог статей

Главная » Статьи » Программинг » Dark Basic

Текстурирование матрицы (Dark Basic)
РУКОВОДСТВО ПО СОЗДАНИЮ 3D-ИГР
II. МАТРИЦА

2. Текстурирование матрицы

Цель урока: научиться накладывать текстуры на матрицу.

Мы начнем с программы, которая создает рельефную местность и текстурирует каждую ячейку матрицы случайным образом.

Sync On
Sync Rate 30
 

Rem Создаем матрицу
Make matrix 1,10000,10000,20,20

Rem Текстурируем матрицу
Load image "grass09.bmp",1
Prepare matrix texture 1,1,2,2

rem Заполняем матрицу случайными значениями высоты
randomize matrix 1,250

rem Накладываем текстуру случайным образом на каждый тайл матрицы
For x = 0 to 19
 For z = 0 to 19
  t= rnd(3)+1
  Set Matrix Tile 1,x,z,t
 Next z
Next x

Rem Вносим изменения в матрицу
update matrix 1

Rem Основной цикл
Do
 Rem  Сохраняем угол объекта
 CameraAngleY# = Camera angle Y()
 

 Rem  Управление перемещением камеры
 If Upkey()=1 then Move camera 10
 If Leftkey()=1 then Yrotate Camera Wrapvalue(CameraAngleY#-5)
 If Rightkey()=1 then Yrotate Camera Wrapvalue(CameraAngleY#+5)
    If Spacekey()=1
        Fill matrix 1,Rnd(50),Rnd(3)+1
          randomize matrix 1,250
    endif

X# = Camera position X()
   Z# = Camera position Z()
 Position Camera X#,250,Z#
 

 Rem Обновляем экран
 Sync
Loop
 

Начнем с подготовки текстуры для матрицы.

    Prepare matrix texture 1,1,2,2

The "Команда "Prepare Matrix Texture" применяется для разбиения на ячейки текстуры, накладываемой на матрицу. Первый параметр после команды - это номер матрицы, для которой мы собираемся подготовить текстуру. Второй параметр - это номер изображения, используемого для текстурирования матрицы. Третий и четвертый параметры - это число создаваемых на каждой оси ячеек. Здесь мы использовали в качестве первого параметра значение 2. Это число делений по оси X. Значение 2 сообщает DarkBASIC, что текстуру надо разделить пополам на две части. В последнем параметре мы также использовали значение 2. Это, в свою очередь, число делений по оси Y. Таким образом, мы разделили изображение на четыре секции, или четыре отдельные текстуры. Изображение, используемое для наложения текстуры на матрицу, не может быть больше, чем 256х256 пикселов, однако вы можете разбить его максимум на 256х256 отдельных тайлов. В большинстве случаев значение двух последних параметров команды будут одинаковы. Если значения параметров будут разными, то текстуры будут непропорционально растянуты при наложении на квадратные ячейки матрицы. Тайлы нумеруются, начиная с левого верхнего угла, слева направо и сверху вниз. Нумерация начинается с 1.

 For x = 0 to 19
 For z = 0 to 19
  t= rnd(3)+1
  Set Matrix Tile 1,x,z,t
 Next z
Next x

Эти вложенные циклы проходят по каждой ячейке матрицы, и случайным образом назначают для каждой из них ранее подготовленный тайл. Чтобы назначить отдельной ячейке матрицы определенный тайл, мы используем команду "Set Matrix Tile". Первый параметр после команды - номер матрицы, которую мы желаем изменить. Второй и третий параметры - это номера строки и колонки, в которых располагается ячейка матрицы, для которой мы хотим изменить тайл. Последний параметр - это номер тайла изображения, размещаемого в определенной ячейке матрицы. Для выбора случайного номера тайла в интервале от 0 до 3 мы применили команду "Rnd". Заметьте, что мы добавили 1 к этому числу, так как тайла с номером "0" не существует. Таким образом, после добавления 1, производится выбор случайного номера тайла в интервале от 1 до 4.

    If Spacekey()=1
        Fill matrix 1,Rnd(50),Rnd(3)+1
        randomize matrix 1,250
    endif
 

Эта часть кода изменяет высоту матрицы и случайным образом изменяет тайлы для каждой ячейки матрицы при каждом нажатии клавиши "пробел". Команда "Fill Matrix" устанавливает определенную высоту и определенный номер тайла изображения для всех тайлов матрицы. Эта команда наилучшим образом подходит для установки начальных значений для всех ячеек матрицы. Первый параметр после команды - номер матрицы, которую мы хотим изменить. Второй параметр - это высота, устанавливаемая нами для всех вершин матрицы. Это полезно при добавлении еще одной матрицы (например, матрицы "вода"), или создании слоев матриц, наложенных друг на друга. Для выбора случайного значения высоты в интервале от 0 до 50 мы использовали команду "Rnd". Эта величина соответствует координатам по оси Y в созданном вами 3D-пространстве. Наконец, последний параметр - это номер тайла подготовленной матричной текстуры, который мы хотим использовать. Для случайного выбора тайла мы применили команду "Rnd".

На этом мы завершаем главу об основах текстурирования матрицы.

Попробуйте изменить значения последних двух параметров в команде "Prepare Matrix Texture", чтобы посмотреть, как изменятся изображения в тайлах. Затем измените значения параметров каждой команды "Rnd" в соответствии с измененным числом тайлов, подготовленных вами для матрицы.



Ресурсы к урокам на Dark Basic

Категория: Dark Basic | Добавил: quadrathell (29.10.2008)
Просмотров: 502 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Имя *:
Email:
Код *:

Реклама




Новости от Radeant.com



Каталоги

Весь интернет в одном каталоге! Украинский портАл

Ещё

Весь интернет в одном каталоге!

Скрипт каталога ссылок

Партнёры Сайта

Все Партнёры

программирование:
LoBoSoFt Team - небольшая компания разрабатывающая разные игры и программки
игры софт mobile музыка:
Новости игр, новости hardware
разное - обо всём:
Сайт Эврика Моё смешное Огненный форум Phoenomix !!! Бесплатный софт - качать бесплатно Уроки фотошоп для начинающих Заработай с нами!

Стать Партнёром