Назад

      Rem Устанавливаем синхронизацию
      Sync On
      Sync Rate 30

    Rem Загружаем текстуры
      Load image "cottag02.bmp",1
      Load image "barry.bmp",2
 

    Rem Создаем кубики в случайном порядке
      For x = 1 to 5
          Make object cube x,100
          Position object x,Rnd(2000),0,Rnd(2000)
          Set object collision to boxes x
          Texture object x,1
      Next x

    Rem Создаем сферу
      Make object sphere 10,50
      Position object 10,-100,0,-100
      Set object collision to spheres 10
      Texture object 10,2

    Rem Основной цикл
      Do
       Rem  Сохраняем вертикальный угол в aY#
         aY# = Object angle Y(10)

       Rem  Управление камерой с клавиатуры
         If Upkey()=1 then Move object 10,10

         If Leftkey()=1
             Yrotate object 10,Wrapvalue(aY#-5)
         Endif

         If Rightkey()=1
            Yrotate object 10,Wrapvalue(aY#+5)
         Endif

       Rem Обнаруживаем столкновение
         If Object collision(10,0)>0
            Position object 10,X#,0,Z#
         Endif

       Rem Сохраняем положение объекта-игрока в X# и Z#
         X# = Object position x(10)
         Z# = Object position z(10)

       Rem Получаем новое положение камеры и сохраняем его в cZ# and cX#м
         cZ# = Newzvalue(Z#,aY#-180,100)
         cX# = Newxvalue(X#,aY#-180,100)

       Rem Устанавливаем камеру
         Position Camera cX#,75,cZ#

       Rem Направляем камеру на объект "Игрок"
         Point camera X#,25,Z#

       Rem Прокручиваем текстуру на кубических объектах
         Scroll object texture 1,0.005,0
         Scroll object texture 2,0,0.005

       Rem Масштабируем текстуру на кубических объектах
         Scale object texture 3,0.998,0.998
         Scale object texture 4,1.001,1.001

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

      Loop

В этом уроке мы научимся текстурировать объекты. В DarkBASIC текстуры загружаются из файлов растровых изображений с расширением ".bmp". Советуем создавать текстуры с размерами кратными степени 2, так как некоторые графические карты не могут обрабатывать текстуры, размеры которых выражены нечетными числами и не кратны степени 2. Это означает, что размеры ваших изображений должны быть 256x256, 32x128, 256x16 или любых других размеров кратными степени 2. Можно загружать текстуры и большего размера, чем 256x256, но в этом случае убедитесь, что ваша графическая карта может обрабатывать такие большие текстуры.

        Load image "cottag02.bmp",1
        Load image "barry.bmp",2

Команда "Load Image" дает DarkBASIC указание загрузить изображение из файла растрового изображения. Первый параметр команды - это имя загружаемого файла растрового изображения. Имя файла нужно заключить в кавычки, иначе произойдет ошибка. В этом параметре можно использовать имена каталогов, например, "C:\Darkbasic\Images\mybitmap.bmp". Если вы храните изображения в подкаталоге проекта, в параметре необходимо указать его имя. Мы советуем создавать отдельный подкаталог, если в вашей программе много мультимедийных файлов. Второй параметр - это уникальный номер (или идентификатор) изображения, который используется так же, как при создании объекта. Нельзя присваивать один и тот же номер двум разным изображениям.

        Texture object x,1

        Texture object 10,2

Эти две строки стоят перед основным циклом. Первая строка находится в теле цикла "For Next" и служит для создания кубических объектов. Вторая внесена после того, как мы создали объект "Игрок". Команда "Texture Object" предназначена для наложения изображения на объект. Первый параметр - номер объекта, на который нужно наложить текстуру. Второй параметр - номер накладываемого на объект изображения.

        Scroll object texture 1,0.005,0
        Scroll object texture 2,0,0.005

Команда "Scroll Object Texture" перемещает (прокручивает) наложенную на объект или полигон текстуру вверх и вниз или вправо и влево. Первый параметр - номер объекта, чья текстура будет прокручиваться. Следующие два параметра - это U и V координаты. Вы можете представить их как координаты X и Y двумерной текстуры. Если присвоить этим параметрам значения, отличные от 0, текстура будет прокручиваться при каждом вызове этой команды. Можно использовать как положительные, так и отрицательные значения, в зависимости от того, в каком направлении вы хотите прокрутить текстуру на объекте. В нашем примере используется очень маленькое значение с плавающей точкой. Значения прокрутки U и V можно представить как процент от размера текстуры. Если бы мы установили значение, равное "0.5", что означает 50 процентов, текстура на кубе передвинулась бы ровно наполовину, а это - слишком быстро.

        Scale object texture 3,0.998,0.998
        Scale object texture 4,1.001,1.001

Команда "Scale Object Texture" похожа на предыдущую, только эта команда увеличивает или уменьшает масштаб текстуры на объекте. Первый параметр - это номер объекта, текстура которого изменяет масштаб (масштабируется). Следующие два параметра являются U и V координатами текстуры. Изменение этих значений на любую величину, кроме 0, увеличит или уменьшит размер текстуры. Когда эти значения равны 0, никакого изменения размеров не произойдет. Если присвоить параметрам значение меньше 1, масштаб текстуры уменьшится, и наоборот, если присвоить им значение больше 1, масштаб текстуры увеличится.

Теперь вы умеете загружать изображение из файла и накладывать его на объект, а также масштабировать и прокручивать текстуру объекта. Попробуйте внести следующие изменения, чтобы посмотреть, как они повлияют на текстурированные кубики.

Измените значения U и V в команде "Scroll Object Texture", чтобы посмотреть, как это повлияет на скорость прокрутки текстур объектов.

Измените значения U и V в команде " Scale Object Texture", чтобы посмотреть, как это отразится на масштабе текстур.

 

Hosted by uCoz