11 февраля 2010 в 15:07
Blitz3d уроки - 5. Создание плоскости и текстуры
Итак, как я уже говорил, нам не с чем сравнивать положение нашего объекта, поэтому он так странно двигается.
Для этой главы нам понадобятся: код из прошлого урока, и текстура. Что такое текстура? Для тех кто не знает попробую объяснить:
Текстура – это картинка в любом формате (самые популярные это .jpg, .bmp, .tga, .pcx, .png и.т.д.), которой мы закрашиваем какой-нить объект. Если объект большой, а текстура – нет, то она накладывается как бы повторяющимися квадратами. Вы наверняка видели в каких нибудь трёхмерных играх повторяющуюся траву, скалы – где-то это видно сразу, где-то сильно скрыто. Когда создаётся объект, он создаётся белым, а когда мы его текстурируем – то получается покрываем его картинкой – текстурой. Ну, будем надеяться, что кто этого не знал – примерно понял. В общем возьмите любую картинку из перечисленных форматов, и поместите её в ту же папку, где у вас сохранён этот код программы.
Сделаем мы так: создадим плоскость, которая будет находиться на одном месте, и относительно неё будет хорошо видно, что наш кубик всё таки движется.
pln=CreatePlane()
Эта команда, также как и остальные команды создаёт объект, на этот раз плоскость (Plane). Что это такое? Ну, плоскость – это и есть плоскость. Она плоская и бесконечная. Да, один момент – плоскость видна только с одной стороны – с другой она невидимая (как и спрайт, кстати)!
Поставьте эту команду перед циклом, после создания куба, и если вы запустите программу… лучше не надо! Перейдём-ка мы сразу дальше!
После создания плоскости загрузим текстуру из файла:
tex=LoadTexture("Picture.bmp")
Эта команда загружает текстуру из файла Picture.bmp (это у меня так картинка называлась, а вы измените имя файла в кавычках на своё (кавычки нужно оставить), кстати, там можно писать полный путь к файлу, например “C:\Games\MyGame\MyPic.jpg” или “.\Data\Pics\Texture.jpg”)
Так, плоскость есть, текстура есть – осталось только затекстурировать эту плоскость:
EntityTexture pln,tex
Синтакс: EntityTexture объект, текстура – эта команда элементарно покрывает заданный объект заданной текстурой.
Да, и ещё одно – эта текстура наверняка будет смотреться мелко, поэтому я советую вставить такую команду после загрузки текстуры:
ScaleTexture tex,10,10
Она просто расширяет данную текстуру в10 раз по ширине и в 10 раз по высоте.
Вот, вроде, и всё готово! Теперь у нас внизу есть плоскость, а куб как бы ездит по ней!
Весь код:
Graphics3D 640,480,16,1 SetBuffer BackBuffer() cam=CreateCamera() PositionEntity cam,0,5,-10 lit=CreateLight() cub=CreateCube() ScaleEntity cub,1,.5,2 pln=CreatePlane() tex=LoadTexture("Picture.bmp") ScaleTexture tex,30,30 EntityTexture pln,tex Repeat If KeyDown(200) MoveEntity cub,0,0,.1 If KeyDown(208) MoveEntity cub,0,0,-.1 If KeyDown(203) TurnEntity cub,0,1,0 If KeyDown(205) TurnEntity cub,0,-1,0 PointEntity cam,cub UpdateWorld RenderWorld Flip Until KeyHit(1) End
29 января 2013 в 18:43
У меня текстура не грузится!
30 января 2013 в 14:00
Значит либо путь указан не верно, либо ее размеры не кратны 2ке
28 апреля 2013 в 22:00
Подскажите пожалуйста что именно надо сделать что бы рисунок попал на плоскость,просто обычно вылетает ошибка о том что текстура не загрузилась.
28 апреля 2013 в 22:14
а в какой папке лежит текстура по отношению к .exe и какие у нее размеры?
28 апреля 2013 в 22:26
в той же папке что и программа ,размер 640х480
28 апреля 2013 в 22:43
И еще один вопрос можно ли найти или вытащить из игры движок GEO-MOD 2 ????
29 апреля 2013 в 00:04
могу посоветовать такое:
-попробуй сделай размер квадратный аля 128х128
-попробуй пересохрани в паинте обычном или другом редакторе
-сохрани в jpeg
-кривая сборка blitz
-проверь путь точно чтобы лежало где ехе игры
про оффтопик - 1ю версию гео мод можно найти, 2ю - не видел
29 апреля 2013 в 14:04
Спасибо большое очень помогло
6 января 2014 в 10:03
У меня тоже не грузилась текстура, которую я добавлял сам. Нашел картинку, добавил в папку с игрой, в различных форматах выставлял ее, но разницы никакой - не грузилась. В папке с программой нашел пример игры "Астероид", из нее взял картинку и вставил в свою. Заработало! Почему так - не понял?
6 января 2014 в 17:21
Выше приведен список причин частых, скорее всего размеры не квадратные и не равны степени 2ки
6 января 2014 в 22:35
Не-не, размеры квадратные, делал даже как в образце 200 на 200. Образец из другой игры работает (т.е. загружается), а другие картинки - нет.
31 января 2015 в 08:53
Сделал все как ты, но при запуске программы пишет Illegal memory access
авторизуйтесь
или войдите через