Пример использования прозрачных поверхностей


рис. 23

Программа позволяет отображать прозрачные поверхности до 4 уровней глубины.
Для этого необходимо установить в окне настроек глубину z-буфера, который будет
хранить цвета и расстояния для точек, проецируемых в одну точку на экране.


рис. 24

Пример “scaf.txt”:

start {
camera (0,-120,-10)-(0,0,0)-0.2-1000
light (-150,-150,-90)-0.4-600-$5F7F5F
scenerotate (20,15,0)-(1,0,0)
}

dbl dx=50*cos(20*pi/180)
dbl dy=50*sin(20*pi/180)
dbl hdx=50*sin(30*pi/180)
dbl hdy=50*cos(30*pi/180)
spher (0,0,0)-50
plate (0,0,-35)-(0,0,-1)
torro (0,0,-dy)-(0,0,1)-dx-2
torro (0,0,dy)-(0,0,1)-dx-2
torro (-hdx,0,0)-(1,0,0)-hdy-2
torro (hdx,0,0)-(1,0,0)-hdy-2
hdx=hdx+2
dy=dy+2
plate (-hdx,0,dy)-(1,0,1) #6
plate ( hdx,0,dy)-(-1,0,1) #7
plate (-hdx,0,-dy)-(1,0,-1) #8
plate ( hdx,0,-dy)-(-1,0,-1) #9
hdx=hdx-3
dy=dy-3
plate (0,0,-dy)-(0,0,-1) #10
plate (0,0,dy)-(0,0,1) #11
plate (-hdx,0,0)-(-1,0,0) #12
plate ( hdx,0,0)-( 1,0,0) #13

gabar (-60,60,60)-(60,60,60)-(60,-60,60)-(-60,-60,60)-(-60,60,-60)-(60,60,-60)-(60,-60,-60)-(-60,-60,-60) cube
0,$7F7F7F,O1+^O10*^O11*^O12*^O13
0,$
4F5F7F5F,O10+O11+O12+O13
1,$7F7F7F,^O0
2,$7F7F7F,^O8+^O9
3,$7F7F7F,^O6+^O7
4,$7F7F7F,O6+O8
5,$7F7F7F,O7+O9

Чтобы поверхность была прозрачной, необходимо в описании модели указать старший (4-й) байт цвета, больше 0.
Чем больше это значение, тем прозрачнее повехность модели. В примере этот байт отмечен красным цветом.
Еще этот байт называют альфа-каналом.

В описании объектов модели часто удобно делать локальные расчеты параметров объектов.
Это повышает точность, сокращает размер кода и время разработчика.

Перейти на следующую страницу Перейти на предыдущую страницу
Сайт управляется системой uCoz