Обсуждение:Pixilang
3d анимая Пиксилэнг
правитьЯ долго пытался написать качественную графику на си шарп , но для виндовс компакт мобиле очень неудобно без большого компьютера, а с помощью этой программы , очень легко и быстро, ... програму я пишу как не странно не в блакноте а в экселе и копирую в блокнот перед сохранением. вод код программы которую мне удалось написать за 2 дня . 3d площадка со свободным вращением
--------- --------- -----
// арена 9 х 9 клеток по осям X и Z // Y = 0 , потом будем регулировать //----------------------------------------------------- //-----------------------------------------------------
s = 30000 u = s/10
// arena 10*10 точек ARX ARY ARZ
//объявляем массивы координат арены
Arena_X = new_array(100) Arena_Y = new_array(100) Arena_Z = new_array(100)
//----------------------------------------------------- //-----------------------------------------------------
// заполним архив ( сетку) с помощью цикла while clear(BLACK) // сетка X
ax=0 bx=0 cx=0
while (ax<100) {
if bx > 9 { bx-10 clear(BLACK) } cx=(bx*u*2+u-s)
Arena_X[ax] =cx
print("ax= $ax bx= $bx cx= $cx",-100,-100+bx*10,#CCFFCC) frame
ax+1 bx+1 }
//----------------------------------------------------- //-----------------------------------------------------
// сетка Z
az=0 bz=0 cz=0 dz=0 while (az<100) {
while (bz<10) { Arena_Z[az+bz] = Arena_X[dz]
bz+1 } cz=Arena_Z[az] print("az= $az cz= $cz ",-100, 10+dz*10,#CCFFCC) frame dz+1 az+10 bz=0 }
//----------------------------------------------------- //----------------------------------------------------- // циклом WHILE объеденяем 3 сетки
cube = new_array( 100 * 8 ) ax=0 while (ax<100) { cube[ ax* 8 + 0 ] = Arena_X[ax] cube[ ax* 8 + 1 ] = Arena_Y[ax] cube[ ax* 8 + 2 ] = Arena_Z[ax]
print("x",-100+ax*2 ,110,#CCFFCC) frame ax+1 }
//----------------------------------------------------- //----------------------------------------------------- // заполняем сетку граней //(9*9*2)=162 опять циклом while // по схеме // 00 0 1 2 3 4 5 6 7 8 9 // 10 0 1 2 3 4 5 6 7 8 9 // 20 0 1 2 3 4 5 6 7 8 9 // 30 0 1 2 3 4 5 6 7 8 9 // 40 0 1 2 3 4 5 6 7 8 9 // ... .. .. .. .. .. .. .. .. .. // 90 0 1 2 3 4 5 6 7 8 9 // клетки сетки будут такие // в клетке по 2 грани // 01) 00 01 10 , 01 10 11 // 02) 01 02 11 , 02 11 12 // ... .. .. .. .. .. .. .. .. .. // 08) 08 09 18 , 09 18 19 // ... .. .. .. .. .. .. .. .. .. // ... .. .. .. .. .. .. .. .. .. // 10) 10 11 20 , 11 20 21 // // левые верхние клетки имеют // координаты от 00 до 88, // отсюда видна закономерность // заполнения массива пар // теугольн. +0 +1 +10 , +1 +10 +11 // цвет возьмем для одних - один // для других - другой произвольный // далее будем регулировать // и так опять циклы
//----------------------------------------------------- //-----------------------------------------------------
ax=0 az=0 txz=0 cube_t = new_array( 162 * 8 ) while (ax<8) { while (az<80) {
// теугольн. +0 +1 +10 , +1 +10 +11
cube_t[ txz * 8 + 0 ] = ax+az+0 cube_t[ txz * 8 + 1 ] = ax+az+1 cube_t[ txz * 8 + 2 ] = ax+az+10 cube_t[ txz * 8 + 3 ] = #f00000 cube_t[ txz * 8 + 4 ] = 256
cube_t[ (txz+1) * 8 + 0 ] = ax+az+1 cube_t[ (txz+1) * 8 + 1 ] = ax+az+10 cube_t[ (txz+1) * 8 + 2 ] = ax+az+11 cube_t[ (txz+1) * 8 + 3 ] = #0000f0 cube_t[ (txz+1) * 8 + 4 ] = 256
print("x",-100+txz ,120,#ff3322) frame az+10 txz+2 } az=0 ax+1 }
//----------------------------------------------------- //----------------------------------------------------- // пометим первый треугольник cube_t[ 0 * 8 + 3 ] = #ffff00 // пометим третий треугольник cube_t[ (2) * 8 + 3 ] = #00ff00
//----------------------------------------------------- //----------------------------------------------------- //----------------------------------------------------- //----------------------------------------------------- //----------------------------------------------------- //----------------------------------------------------- //----------------------------------------------------- //-----------------------------------------------------
start_timer( 0 )
st:
transp( 256 ) clear( BLACK )
//----------------------------------------------------- //-----------------------------------------------------
t = get_timer( 0 ) / 32
c = get_color( csin( t ) + 168, ccos( t ) + 180, csin( t / 2 ) + 198 )
sc2 = 0
again: //----------------------------------------------------- //----------------------------------------------------- t_rotate_x(350,0,0 ) //
t_reset t_scale(256,256,256 ) t_rotate_z( t, 0, 0 ) t_rotate_x( t*2,0,0 ) t_rotate_y( t*3,0,0 )
// transp( csin( t )+128) //прозрачность
transp(240)
sort_triangles( cube, cube_t ) triangles3d( cube, cube_t ) $b=fps
print("** $b **",-40,0,#ffffff)
frame( 0 )
go st