Blitz3D Архив
Главная | Каталог статей | Регистрация | Вход
Пятница
19.04.2024
02:32
Приветствую Вас Гость | RSS
Главная » Статьи » Программирование

Мех на Blitz3D
В общем, все это очень просто... надо только знать как и что. Начнем с единственной заготовки:

Такую картинку довольно несложно генерировать, но это уже не в этой статье.

Эта картинка обозначает некую небольшую часть волос в разрезе.

Идея такая: эту текстуру мы наносим, как полупрозрачную, на объект, потом копируем этот объект и чуть-чуть его увеличиваем. Когда мы сделаем много копий, то у нас получится псевдо-мех.

Начнем устанавливаем параметры, создаем камеру, делаем тип в котором будем хранить множество объектов, тут именно тип, потому что массив для этого не подходит.

Graphics3D 640,480,32,2
SetBuffer BackBuffer()

cam=CreateCamera()
MoveEntity cam,0,0,-7

Type cub
Field ent%
End Type

Дальше установим базовые переменные. Можете поиграться со значениями.

cachestvo#=300

;scale
x#=4
y#=x
z#=x
mm#=0

;smeshenie
t#=1

;bufers
xz#=0
yz#=0

t=t/cachestvo#

Дальше самое главное! Нам надо сделать много практически одинаковых кубиков.

For f#=0 To cachestvo
c.cub=New cub
c\ent=CreateCube()
EntityFX c\ent,1
EntityColor c\ent,218,194,103

ScaleEntity c\ent,mm+f/(cachestvo/x),mm+f/(cachestvo/y),mm+f/(cachestvo/z)
t1=LoadTexture("a.jpg",2)
ScaleTexture t1,0.35,0.35

;Это надо для придания небольшой ломаности волосам
xz=xz+t+Rnd(-0.006,0.006)
yz=yz+t+Rnd(-0.006,0.006)
EntityAlpha c\ent,1-f/cachestvo

PositionTexture t1,xz,yz

EntityTexture c\ent,t1
Next

Дальше - мелочи: так как у нас много объектов, надо их крутить все...

While Not KeyHit(1)

For c.cub=Each cub
TurnEntity c\ent,0,1,0
Next

UpdateWorld
RenderWorld

Flip
Wend
End

У вас должно выйти что-то типа:

;hair.bb
Graphics3D 640,480,32,2
SetBuffer BackBuffer()

cam=CreateCamera()
MoveEntity cam,0,0,-7

Type cub
Field ent%
End Type

cachestvo#=300

;scale
x#=4
y#=x
z#=x
mm#=0

;smeshenie
t#=1

;bufers
xz#=0
yz#=0

t=t/cachestvo#

For f#=0 To cachestvo
c.cub=New cub
c\ent=CreateCube()
EntityFX c\ent,1
EntityColor c\ent,218,194,103

ScaleEntity c\ent,mm+f/(cachestvo/x),mm+f/(cachestvo/y),mm+f/(cachestvo/z)
t1=LoadTexture("a.png",2)
ScaleTexture t1,0.35,0.35

;ето надо для придания небольшой ломаности волосам
xz=xz+t+Rnd(-0.006,0.006)
yz=yz+t+Rnd(-0.006,0.006)
EntityAlpha c\ent,1-f/cachestvo

PositionTexture t1,xz,yz

EntityTexture c\ent,t1
Next

While Not KeyHit(1)

For c.cub=Each cub
TurnEntity c\ent,0,1,0
Next

UpdateWorld
RenderWorld

Flip
Wend

Да да, знаю, это медленно на geforce 4 mx 440, но на geforce 6600gt все летает!

Источник: http://blitzetc.boolean.name/

Категория: Программирование | Добавил: ЗлойАдмин (22.05.2007) | Автор: Jimon Game Studio
Просмотров: 1359 | Комментарии: 2 | Рейтинг: 0.0/0
Всего комментариев: 2
2 Frank  
0
À ìíå âîò èíòåðåñíî, ñêîëüêî ïîëèêîâ â òîì êàäðå.. :)

1 ЗлойАдмин  
0
Думаю отличный пример того, что можно сделать на Blitz smile

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Категории каталога
Программирование [6]
Моделирование [0]
Форма входа
Поиск
Друзья сайта
Наш опрос
Есть ли у вас готовые проекты?
Всего ответов: 32
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Copyright MyCorp © 2024
Конструктор сайтов - uCoz