/programs/demos/3DS/README.TXT |
---|
File deleted |
/programs/demos/3DS/GRD_TEX.INC |
---|
File deleted |
/programs/demos/3DS/DATA.INC |
---|
File deleted |
/programs/demos/3DS/3STENCIL.INC |
---|
File deleted |
/programs/demos/3DS/TEX_CAT.INC |
---|
File deleted |
/programs/demos/3DS/Tupfile.lua |
---|
File deleted |
/programs/demos/3DS/History.txt |
---|
File deleted |
\ No newline at end of file |
/programs/demos/3DS/GRD_CAT.INC |
---|
File deleted |
/programs/demos/3DS/GRD_LINE.INC |
---|
File deleted |
/programs/demos/3DS/3R_PHG.INC |
---|
File deleted |
/programs/demos/3DS/3GLASS.INC |
---|
File deleted |
/programs/demos/3DS/3DMATH.INC |
---|
File deleted |
/programs/demos/3DS/TWO_TEX.INC |
---|
File deleted |
/programs/demos/3DS/VIEW3DS.ASM |
---|
File deleted |
/programs/demos/3DS/FLAT_CAT.INC |
---|
File deleted |
/programs/demos/3DS/A_PROCS.INC |
---|
File deleted |
/programs/demos/3DS/B_PROCS.INC |
---|
File deleted |
\ No newline at end of file |
/programs/demos/3DS/BUMP_CAT.INC |
---|
File deleted |
/programs/demos/3DS/ASC.INC |
---|
File deleted |
\ No newline at end of file |
/programs/demos/3DS/BUMP_TEX.INC |
---|
File deleted |
/programs/demos/3DS/build.bat |
---|
File deleted |
\ No newline at end of file |
/programs/demos/3DS/3ds_objects/iron.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/programs/demos/3DS/3ds_objects/teapot.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/programs/demos/3DS/3ds_objects/knot.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/programs/demos/3DS/3ds_objects/ZS_Mouth.3DS |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/programs/demos/3DS/3ds_objects/opacity2.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/programs/demos/3DS/3ds_objects/face.3DS |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/programs/demos/3DS/3ds_objects/second-A.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/programs/demos/3DS/3ds_objects/ZS_Sword.3DS |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/programs/demos/3DS/3ds_objects/sink.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/programs/demos/3DS/3ds_objects/UV_Cyl.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/programs/demos/3DS/3ds_objects/hrt.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/programs/demos/3DS/3ds_objects/surf32.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/programs/demos/3DS/3ds_objects/torus0.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/programs/demos/3DS/3ds_objects/fighter.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/programs/demos/3DS/3ds_objects/House.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/programs/demos/3DS/3ds_objects/cube.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/programs/demos/3DS/3ds_objects/knight.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/programs/demos/3DS/3ds_objects/shield1.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/programs/demos/3DS/3ds_objects/cone.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/programs/demos/3DS/3ds_objects/ZS_Pos3.3DS |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/programs/demos/3DS/3ds_objects/03.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/programs/demos/3DS/asc_objects/AR2.ASC |
---|
File deleted |
/programs/demos/3DS/asc_objects/box.asc |
---|
File deleted |
/programs/demos/3DS/asc_objects/PALLERO.ASC |
---|
File deleted |
/programs/demos/3DS/asc_objects/ARCEE.ASC |
---|
File deleted |
/programs/demos/3DS/asc_objects/2TORUS.ASC |
---|
File deleted |
/programs/demos/3DS/asc_objects/3TORUS.ASC |
---|
File deleted |
/programs/demos/3DS/asc_objects/TOORUS.ASC |
---|
File deleted |
/programs/demos/view3ds/3dmath.inc |
---|
0,0 → 1,592 |
x3d equ 0 |
y3d equ 2 |
z3d equ 4 |
vec_x equ 0 |
vec_y equ 4 |
vec_z equ 8 |
; 3d point - triple integer word coordinate |
; vector - triple float dword coordinate |
;----------------------in: -------------------------------- |
;------------------------ esi - pointer to 1st 3d point --- |
;------------------------ edi - pointer to 2nd 3d point --- |
;------------------------ ebx - pointer to result vector -- |
;---------------------- out : none ------------------------ |
reverse_mx_3x3: |
; esi - source matrix |
; edi - desired reversed matrix |
push ebp |
mov ebp,esp |
sub esp,4 |
.det equ ebp-4 |
fninit |
fld dword[esi] |
fmul dword[esi+16] |
fmul dword[esi+32] |
fld dword[esi+12] |
fmul dword[esi+28] |
fmul dword[esi+8] |
faddp |
fld dword[esi+24] |
fmul dword[esi+4] |
fmul dword[esi+20] |
faddp |
fld dword[esi] |
fmul dword[esi+28] |
fmul dword[esi+20] |
fchs |
faddp |
fld dword[esi+24] |
fmul dword[esi+16] |
fmul dword[esi+8] |
fchs |
faddp |
fld dword[esi+12] |
fmul dword[esi+4] |
fmul dword[esi+32] |
fchs |
faddp |
fstp dword[.det] |
cmp dword[.det],0 |
jne @f |
int3 |
@@: |
; fld1 |
; fdiv dword[.det] |
; fstp dword[.det] |
fld dword[esi+16] |
fmul dword[esi+32] |
fld dword[esi+20] |
fmul dword[esi+28] |
fchs |
faddp |
fdiv dword[.det] |
fstp dword[edi] |
fld dword[esi+8] |
fmul dword[esi+28] |
fld dword[esi+4] |
fmul dword[esi+32] |
fchs |
faddp |
fdiv dword[.det] |
fstp dword[edi+4] |
fld dword[esi+4] |
fmul dword[esi+20] |
fld dword[esi+8] |
fmul dword[esi+16] |
fchs |
faddp |
fdiv dword[.det] |
fstp dword[edi+8] |
fld dword[esi+20] |
fmul dword[esi+24] |
fld dword[esi+12] |
fmul dword[esi+32] |
fchs |
faddp |
fdiv dword[.det] |
fstp dword[edi+12] |
fld dword[esi] |
fmul dword[esi+32] |
fld dword[esi+8] |
fmul dword[esi+24] |
fchs |
faddp |
fdiv dword[.det] |
fstp dword[edi+16] |
fld dword[esi+8] |
fmul dword[esi+12] |
fld dword[esi] |
fmul dword[esi+20] |
fchs |
faddp |
fdiv dword[.det] |
fstp dword[edi+20] |
fld dword[esi+12] |
fmul dword[esi+28] |
fld dword[esi+16] |
fmul dword[esi+24] |
fchs |
faddp |
fdiv dword[.det] |
fstp dword[edi+24] |
fld dword[esi+4] |
fmul dword[esi+24] |
fld dword[esi] |
fmul dword[esi+28] |
fchs |
faddp |
fdiv dword[.det] |
fstp dword[edi+28] |
fld dword[esi] |
fmul dword[esi+16] |
fld dword[esi+4] |
fmul dword[esi+12] |
fchs |
faddp |
fdiv dword[.det] |
fstp dword[edi+32] |
mov esp,ebp |
pop ebp |
ret |
make_vector_r: |
if Ext < SSE2 |
fninit |
fld dword[edi] ;edi+x3d |
fsub dword[esi] ;esi+x3d |
fstp dword[ebx+vec_x] |
fld dword[edi+4] |
fsub dword[esi+4] |
fstp dword[ebx+vec_y] |
fld dword[edi+8] |
fsub dword[esi+8] |
fstp dword[ebx+vec_z] |
else |
movups xmm0,[esi] |
movups xmm1,[edi] |
subps xmm1,xmm0 |
movlps [ebx],xmm1 |
movhlps xmm1,xmm1 |
movss [ebx+8],xmm1 |
end if |
ret |
;---------------------- in: ------------------------------- |
;--------------------------- esi - pointer to 1st vector -- |
;--------------------------- edi - pointer to 2nd vector -- |
;--------------------------- ebx - pointer to result vector |
;---------------------- out : none |
cross_product: |
fninit |
fld dword [esi+vec_y] |
fmul dword [edi+vec_z] |
fld dword [esi+vec_z] |
fmul dword [edi+vec_y] |
fsubp ;st1 ,st |
fstp dword [ebx+vec_x] |
fld dword [esi+vec_z] |
fmul dword [edi+vec_x] |
fld dword [esi+vec_x] |
fmul dword [edi+vec_z] |
fsubp ;st1 ,st |
fstp dword [ebx+vec_y] |
fld dword [esi+vec_x] |
fmul dword [edi+vec_y] |
fld dword [esi+vec_y] |
fmul dword [edi+vec_x] |
fsubp ;st1 ,st |
fstp dword [ebx+vec_z] |
ret |
;----------------------- in: ------------------------------ |
;---------------------------- edi - pointer to vector ----- |
;----------------------- out : none |
normalize_vector: |
if Ext = SSE2 | Ext = SSE | Ext = SSE3 |
movups xmm0,[edi] |
andps xmm0,[zero_hgst_dd] |
movups xmm1,xmm0 |
mulps xmm0,xmm0 |
movhlps xmm2,xmm0 |
addps xmm0,xmm2 |
movaps xmm2,xmm0 |
shufps xmm2,xmm2,11100001b |
addps xmm0,xmm2 |
shufps xmm0,xmm0,0 |
rsqrtps xmm0,xmm0 |
mulps xmm0,xmm1 |
movlps [edi],xmm0 |
movhlps xmm0,xmm0 |
movss [edi+8],xmm0 |
end if |
if 0 ; Ext >= SSE3 |
movups xmm0,[edi] |
andps xmm0,[zero_hgst_dd] |
movups xmm1,xmm0 |
mulps xmm0,xmm0 |
haddps xmm0,xmm0 |
haddps xmm0,xmm0 |
rsqrtps xmm0,xmm0 |
mulps xmm0,xmm1 |
movlps [edi],xmm0 |
movhlps xmm0,xmm0 |
movss [edi+8],xmm0 |
end if |
if Ext < SSE |
fninit |
fld dword [edi+vec_x] |
fmul st, st |
fld dword [edi+vec_y] |
fmul st, st |
fld dword [edi+vec_z] |
fmul st, st |
faddp st1, st |
faddp st1, st |
fsqrt |
ftst |
fstsw ax |
sahf |
jnz @f |
fst dword [edi+vec_x] |
fst dword [edi+vec_y] |
fstp dword [edi+vec_z] |
ret |
@@: |
fld st |
fld st |
fdivr dword [edi+vec_x] |
fstp dword [edi+vec_x] |
fdivr dword [edi+vec_y] |
fstp dword [edi+vec_y] |
fdivr dword [edi+vec_z] |
fstp dword [edi+vec_z] |
end if |
ret |
;------------------in: ------------------------- |
;------------------ esi - pointer to 1st vector |
;------------------ edi - pointer to 2nd vector |
;------------------out: ------------------------ |
;------------------ st0 - dot-product |
dot_product: |
fninit |
;if Ext >=SSE3 |
; movups xmm0,[esi] |
; movups xmm1,[edi] |
; andps xmm0,[zero_hgst_dd] |
; mulps xmm0,xmm1 |
; haddps xmm0,xmm0 |
; haddps xmm0,xmm0 |
; movss [esp-4],xmm0 |
; fld dword[esp-4] |
;else |
fld dword [esi+vec_x] |
fmul dword [edi+vec_x] |
fld dword [esi+vec_y] |
fmul dword [edi+vec_y] |
fld dword [esi+vec_z] |
fmul dword [edi+vec_z] |
faddp |
faddp |
;end if |
ret |
; DOS version Coded by Mikolaj Felix aka Majuma |
; mfelix@polbox.com |
; www.majuma.xt.pl |
; into FASM translation by Macgub |
init_sincos_tab: |
.counter equ dword [ebp-4] ; cur angle |
push ebp |
mov ebp,esp |
xor eax,eax |
push eax ; init .counter |
mov edi,cos_tab |
mov esi,sin_tab |
mov ecx,256 |
fninit |
fld .counter |
@@: |
fld st |
fsincos |
fstp dword [edi] |
fstp dword [esi] |
; fadd [piD180] |
fadd [piD128] |
add esi,4 |
add edi,4 |
loop @b |
ffree st |
mov esp,ebp |
pop ebp |
ret |
;------ |
; esi - offset (pointer) to angles, edi offset to 3x3 matrix |
make_rotation_matrix: |
.sinx equ dword[ebp-4] |
.cosx equ dword[ebp-8] |
.siny equ dword[ebp-12] |
.cosy equ dword[ebp-16] |
.sinz equ dword[ebp-20] |
.cosz equ dword[ebp-24] |
push ebp |
mov ebp,esp |
sub esp,24 |
movzx ebx,word[esi] |
shl ebx,2 |
mov eax,dword[sin_tab+ebx] |
mov .sinx,eax |
mov edx,dword[cos_tab+ebx] |
mov .cosx,edx |
movzx ebx,word[esi+2] |
shl ebx,2 |
mov eax,dword[sin_tab+ebx] |
mov .siny,eax |
mov edx,dword[cos_tab+ebx] |
mov .cosy,edx |
movzx ebx,word[esi+4] |
shl ebx,2 |
mov eax,dword[sin_tab+ebx] |
mov .sinz,eax |
mov edx,dword[cos_tab+ebx] |
mov .cosz,edx |
fninit |
fld .cosy |
fmul .cosz |
fstp dword[edi] |
fld .sinx |
fmul .siny |
fmul .cosz |
fld .cosx |
fmul .sinz |
fchs |
faddp |
fstp dword[edi+12] |
fld .cosx |
fmul .siny |
fmul .cosz |
fld .sinx |
fmul .sinz |
faddp |
fstp dword[edi+24] |
fld .cosy |
fmul .sinz |
fstp dword[edi+4] |
fld .sinx |
fmul .siny |
fmul .sinz |
fld .cosx |
fmul .cosz |
faddp |
fstp dword[edi+16] |
fld .cosx |
fmul .siny |
fmul .sinz |
fld .sinx |
fchs |
fmul .cosz |
faddp |
fstp dword[edi+28] |
fld .siny |
fchs |
fstp dword[edi+8] |
fld .cosy |
fmul .sinx |
fstp dword[edi+20] |
fld .cosx |
fmul .cosy |
fstp dword[edi+32] |
mov esp,ebp |
pop ebp |
ret |
;--------------------- |
; in: esi - ptr to points(normals], each point(normal) coeficient as dword |
; edi - ptr to rotated points(normals) |
; ebx - ptr to 3x3 (9 dwords, 36 bytes) rotation matrix |
; ecx - number of points(normals) |
rotary: |
if Ext<SSE |
fninit |
.again: |
fld dword[esi] |
fmul dword[ebx] |
fld dword[esi+4] |
fmul dword[ebx+12] |
faddp |
fld dword[esi+8] |
fmul dword[ebx+24] |
faddp |
fstp dword[edi] |
fld dword[esi+4] |
fmul dword[ebx+16] |
fld dword[esi] |
fmul dword[ebx+4] |
faddp |
fld dword[esi+8] |
fmul dword[ebx+28] |
faddp |
fstp dword[edi+4] |
fld dword[esi+8] |
fmul dword[ebx+32] |
fld dword[esi] |
fmul dword[ebx+8] |
fld dword[esi+4] |
fmul dword[ebx+20] |
faddp |
faddp |
fstp dword[edi+8] |
add esi,12 |
add edi,12 |
loop .again |
mov [edi],dword -1 |
else |
; Copyright (C) 1999-2001 Brian Paul |
; Copyright (C) Maciej Guba |
;--------------------- |
; in: esi - ptr to points(normals], each point(normal) coeficient as dword |
; edi - ptr to rotated points(normals) |
; ebx - ptr to 3x3 (9 dwords, 36 bytes) rotation matrix |
; ecx - number of points(normals) |
;align 32 |
movups xmm4,[ebx] |
; lddqu xmm4,[ebx] ; I tried sse3 :D |
movups xmm5,[ebx+12] |
movups xmm6,[ebx+24] |
;align 32 |
.again: |
movss xmm0,dword[esi] |
shufps xmm0,xmm0,0 |
mulps xmm0,xmm4 |
movss xmm1,dword[esi+4] |
shufps xmm1,xmm1,0 |
mulps xmm1,xmm5 |
movss xmm2,dword[esi+8] |
shufps xmm2,xmm2,0 |
mulps xmm2,xmm6 |
addps xmm0,xmm1 |
addps xmm0,xmm2 |
movups [edi],xmm0 |
add esi,12 |
add edi,12 |
dec ecx |
jne .again |
mov [edi],dword -1 |
end if |
ret |
;---------------------------------------------- |
; esi - pointer to 3x3 matrix |
add_scale_to_matrix: |
fninit |
fld [rsscale] |
fld dword[esi] ;----- |
fmul st,st1 |
fstp dword[esi] |
fld dword[esi+12] ; x scale |
fmul st,st1 |
fstp dword[esi+12] |
fld dword[esi+24] |
fmul st,st1 |
fstp dword[esi+24] ;------ |
fld dword[esi+4] ;----- |
fmul st,st1 |
fstp dword[esi+4] |
fld dword[esi+16] ; y scale |
fmul st,st1 |
fstp dword[esi+16] |
fld dword[esi+28] |
fmul st,st1 |
fstp dword[esi+28] ;------ |
fld dword[esi+8] ;----- |
fmul st,st1 |
fstp dword[esi+8] |
fld dword[esi+20] ; z scale |
fmul st,st1 |
fstp dword[esi+20] |
fld dword[esi+32] |
fmulp st1,st |
fstp dword[esi+32] ;------ |
ret |
;in esi - offset to 3d points (point as 3 dwords float) |
; edi - offset to 2d points ( as 3 words integer) |
; ecx - number of points |
translate_points: ; just convert into integer; z coord still needed |
fninit |
.again: |
if 0 |
fld dword[esi+8] |
; fmul [rsscale] |
fist word[edi+4] |
fisub [zobs] |
fchs |
fld dword[esi] |
; fmul [rsscale] |
fisub [xobs] |
fimul [zobs] |
fdiv st0,st1 |
fiadd [xobs] |
fiadd [vect_x] |
fistp word[edi] |
fld dword[esi+4] |
; fmul [rsscale] |
fisub [yobs] |
fimul [zobs] |
fdivrp ; st0,st1 |
fiadd [yobs] |
fiadd [vect_y] |
fistp word[edi+2] |
end if |
; movups xmm0,[esi] |
; cvtps2dq xmm0,xmm0 |
; packsdw xmm0,xmm0 |
; movq [edi] |
fld dword[esi] |
fiadd [vect_x] |
fistp word[edi] |
fld dword[esi+4] |
fiadd [vect_y] |
fistp word[edi+2] |
fld dword[esi+8] |
fistp word[edi+4] |
add esi,12 |
add edi,6 |
dec ecx |
jnz .again |
ret |
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |
/programs/demos/view3ds/3ds_objects/03.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/demos/view3ds/3ds_objects/House.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/demos/view3ds/3ds_objects/UV_Cyl.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/demos/view3ds/3ds_objects/ZS_Mouth.3DS |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/demos/view3ds/3ds_objects/ZS_Pos3.3DS |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/demos/view3ds/3ds_objects/ZS_Sword.3DS |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/demos/view3ds/3ds_objects/cone.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/demos/view3ds/3ds_objects/cube.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/demos/view3ds/3ds_objects/face.3DS |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/demos/view3ds/3ds_objects/fighter.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/demos/view3ds/3ds_objects/hrt.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/demos/view3ds/3ds_objects/iron.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/demos/view3ds/3ds_objects/knight.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/demos/view3ds/3ds_objects/knot.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/demos/view3ds/3ds_objects/opacity2.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/demos/view3ds/3ds_objects/second-A.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/demos/view3ds/3ds_objects/shield1.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/demos/view3ds/3ds_objects/sink.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/demos/view3ds/3ds_objects/surf32.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/demos/view3ds/3ds_objects/teapot.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/demos/view3ds/3ds_objects/torus0.3ds |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/demos/view3ds/3glass.inc |
---|
0,0 → 1,543 |
; Glass like rendering triangle by Maciej Guba. |
; http://macgub.hekko.pl, macgub3@wp.pl |
ROUND2 equ 10 |
glass_tri: |
;----procedure render glass like triangle with z coord -- |
;----interpolation ( Catmull alghoritm )----------------- |
;----I normalize normal vector in every pixel ----------- |
;------------------in - eax - x1 shl 16 + y1 ------------ |
;---------------------- ebx - x2 shl 16 + y2 ------------ |
;---------------------- ecx - x3 shl 16 + y3 ------------ |
;---------------------- edx - ptr to stencil_buff ------- |
;---------------------- esi - pointer to Z-buffer filled- |
;---------------------- with dd float variables-------- |
;---------------------- edi - pointer to screen buffer--- |
;---------------------- xmm0 - 1st normal vector -------- |
;---------------------- xmm1 - 2cond normal vector ------ |
;---------------------- xmm2 - 3rd normal vector -------- |
;---------------------- xmm3 - normalized light vector -- |
;---------------------- xmm4 - lo -> hi z1, z2, z3 coords |
;---------------------- as dwords floats --------------- |
;---------------------- xmm5 - lo -> hi y_min, y_max, --- |
;---------------------- x_min, x_max as dword integers - |
;---------------------- stack - no parameters ----------- |
;-------------------------------------------------------- |
;----------------- procedure don't save registers !! ---- |
push ebp |
mov ebp,esp |
sub esp,512 |
sub ebp,16 |
and ebp,0xfffffff0 |
.1_nv equ [ebp-16] |
.2_nv equ [ebp-32] |
.3_nv equ [ebp-48] |
.l_v equ [ebp-64] |
.z3 equ [ebp-72] |
.z2 equ [ebp-76] |
.z1 equ [ebp-80] |
.x1 equ [ebp-82] |
.y1 equ [ebp-84] |
.x2 equ [ebp-86] |
.y2 equ [ebp-88] |
.x3 equ [ebp-90] |
.y3 equ [ebp-92] |
.Zbuf equ [ebp-96] |
.x_max equ [ebp-100] |
.x_min equ [ebp-104] |
.y_max equ [ebp-108] |
.y_min equ [ebp-112] |
.screen equ [ebp-116] |
.dx12 equ [ebp-120] |
.dx13 equ [ebp-124] |
.dx23 equ [ebp-128] |
.dn12 equ [ebp-144] |
.dn13 equ [ebp-160] |
.dn23 equ [ebp-176] |
.dz12 equ [ebp-180] |
.dz13 equ [ebp-184] |
.dz23 equ [ebp-188] |
.cnv1 equ [ebp-208] ; cur normal vectors |
.cnv2 equ [ebp-224] |
.cz2 equ [ebp-228] |
.cz1 equ [ebp-232] |
.stencil_buff equ [ebp-236] |
.sort3: ; sort triangle coordinates... |
cmp ax,bx |
jle .sort1 |
xchg eax,ebx |
shufps xmm4,xmm4,11100001b |
movaps xmm6,xmm0 |
movaps xmm0,xmm1 |
movaps xmm1,xmm6 |
.sort1: |
cmp bx,cx |
jle .sort2 |
xchg ebx,ecx |
shufps xmm4,xmm4,11011000b |
movaps xmm6,xmm1 |
movaps xmm1,xmm2 |
movaps xmm2,xmm6 |
jmp .sort3 |
.sort2: |
movaps .z1,xmm4 |
mov .y1,eax |
mov .y2,ebx |
mov .y3,ecx |
mov .stencil_buff, edx |
movdqa .y_min,xmm5 |
if 1 ; check if at last only fragment |
packssdw xmm5,xmm5 ; of triangle is in visable area |
pshuflw xmm5,xmm5,11011000b |
movdqu xmm7,.y3 |
movdqa xmm6,xmm5 |
pshufd xmm5,xmm5,0 ; xmm5 lo-hi -> broadcasted y_min, x_min |
pshufd xmm6,xmm6,01010101b ;xmm6 -> brd y_max x_max |
movdqa xmm4,xmm7 |
pcmpgtw xmm7,xmm5 |
pcmpgtw xmm4,xmm6 |
pxor xmm7,xmm4 |
pmovmskb eax,xmm7 |
and eax,0x00aaaaaa |
or eax,eax |
jz .rpt_loop2_end |
end if |
movaps .1_nv,xmm0 |
movaps .2_nv,xmm1 |
movaps .3_nv,xmm2 |
movaps .l_v,xmm3 |
; mov .Zbuf,esi |
mov .screen,edi |
mov bx,.y2 ; calc deltas |
sub bx,.y1 |
jnz .rpt_dx12_make |
xorps xmm7,xmm7 |
mov dword .dx12,0 |
mov dword .dz12,0 |
movaps .dn12,xmm7 |
jmp .rpt_dx12_done |
.rpt_dx12_make: |
mov ax,.x2 |
sub ax,.x1 |
cwde |
movsx ebx,bx |
shl eax,ROUND2 |
cdq |
idiv ebx |
mov .dx12,eax |
cvtsi2ss xmm6,ebx |
movss xmm5,.z2 |
subss xmm5,.z1 |
divss xmm5,xmm6 |
movss .dz12,xmm5 |
movaps xmm0,.2_nv |
subps xmm0,.1_nv |
shufps xmm6,xmm6,0 |
divps xmm0,xmm6 |
movaps .dn12,xmm0 |
.rpt_dx12_done: |
mov bx,.y3 ; calc deltas |
sub bx,.y1 |
jnz .rpt_dx13_make |
xorps xmm7,xmm7 |
mov dword .dx13,0 |
mov dword .dz13,0 |
movaps .dn13,xmm7 |
jmp .rpt_dx13_done |
.rpt_dx13_make: |
mov ax,.x3 |
sub ax,.x1 |
cwde |
movsx ebx,bx |
shl eax,ROUND2 |
cdq |
idiv ebx |
mov .dx13,eax |
cvtsi2ss xmm6,ebx |
movss xmm5,.z3 |
subss xmm5,.z1 |
divss xmm5,xmm6 |
movss .dz13,xmm5 |
movaps xmm0,.3_nv |
subps xmm0,.1_nv |
shufps xmm6,xmm6,0 |
divps xmm0,xmm6 |
movaps .dn13,xmm0 |
.rpt_dx13_done: |
mov bx,.y3 ; calc deltas |
sub bx,.y2 |
jnz .rpt_dx23_make |
xorps xmm7,xmm7 |
mov dword .dx23,0 |
mov dword .dz23,0 |
movaps .dn23,xmm7 |
jmp .rpt_dx23_done |
.rpt_dx23_make: |
mov ax,.x3 |
sub ax,.x2 |
cwde |
movsx ebx,bx |
shl eax,ROUND2 |
cdq |
idiv ebx |
mov .dx23,eax |
cvtsi2ss xmm6,ebx |
movss xmm5,.z3 |
subss xmm5,.z2 |
divss xmm5,xmm6 |
movss .dz23,xmm5 |
movaps xmm0,.3_nv |
subps xmm0,.2_nv |
shufps xmm6,xmm6,0 |
divps xmm0,xmm6 |
movaps .dn23,xmm0 |
.rpt_dx23_done: |
movsx eax,word .x1 |
shl eax,ROUND2 |
mov ebx,eax |
mov edx,.z1 |
mov .cz1,edx |
mov .cz2,edx |
movaps xmm0,.1_nv |
movaps .cnv1,xmm0 |
movaps .cnv2,xmm0 |
movsx ecx,word .y1 |
cmp cx,.y2 |
jge .rpt_loop1_end |
.rpt_loop1: |
pushad |
movaps xmm2,.y_min |
movaps xmm0,.cnv1 |
movaps xmm1,.cnv2 |
movlps xmm3,.cz1 |
movaps xmm4,.l_v |
sar ebx,ROUND2 |
sar eax,ROUND2 |
mov edx,.stencil_buff |
mov edi,.screen |
; mov esi,.Zbuf |
call glass_line |
popad |
movaps xmm0,.cnv1 |
movaps xmm1,.cnv2 |
movss xmm2,.cz1 |
movss xmm3,.cz2 |
addps xmm0,.dn13 |
addps xmm1,.dn12 |
addss xmm2,.dz13 |
addss xmm3,.dz12 |
add eax,.dx13 |
add ebx,.dx12 |
movaps .cnv1,xmm0 |
movaps .cnv2,xmm1 |
movss .cz1,xmm2 |
movss .cz2,xmm3 |
add ecx,1 |
cmp cx,.y2 |
jl .rpt_loop1 |
.rpt_loop1_end: |
movsx ecx,word .y2 |
cmp cx,.y3 |
jge .rpt_loop2_end |
movsx ebx,word .x2 ; eax - cur x1 |
shl ebx,ROUND2 ; ebx - cur x2 |
push dword .z2 |
pop dword .cz2 |
movaps xmm0,.2_nv |
movaps .cnv2,xmm0 |
.rpt_loop2: |
pushad |
movaps xmm2,.y_min |
movaps xmm0,.cnv1 |
movaps xmm1,.cnv2 |
movlps xmm3,.cz1 |
movaps xmm4,.l_v |
sar ebx,ROUND2 |
sar eax,ROUND2 |
mov edx,.stencil_buff |
mov edi,.screen |
; mov esi,.Zbuf |
call glass_line |
popad |
movaps xmm0,.cnv1 |
movaps xmm1,.cnv2 |
movss xmm2,.cz1 |
movss xmm3,.cz2 |
addps xmm0,.dn13 |
addps xmm1,.dn23 |
addss xmm2,.dz13 |
addss xmm3,.dz23 |
add eax,.dx13 |
add ebx,.dx23 |
movaps .cnv1,xmm0 |
movaps .cnv2,xmm1 |
movss .cz1,xmm2 |
movss .cz2,xmm3 |
add ecx,1 |
cmp cx,.y3 |
jl .rpt_loop2 |
.rpt_loop2_end: |
add esp,512 |
pop ebp |
ret |
align 16 |
glass_line: |
; in: |
; xmm0 - normal vector 1 |
; xmm1 - normal vect 2 |
; xmm3 - lo -> hi z1, z2 coords as dwords floats |
; xmm2 - lo -> hi y_min, y_max, x_min, x_max |
; as dword integers |
; xmm4 - normalized light vector |
; eax - x1 |
; ebx - x2 |
; ecx - y |
; edx - stencil buff ptr |
; edi - screen buffer |
; esi - z buffer ===> not needed in glass rendering |
push ebp |
mov ebp,esp |
sub esp,256 |
sub ebp,16 |
and ebp,0xfffffff0 |
.n1 equ [ebp-16] |
.n2 equ [ebp-32] |
.lv equ [ebp-48] |
.lx1 equ [ebp-52] |
.lx2 equ [ebp-56] |
.z2 equ [ebp-60] |
.z1 equ [ebp-64] |
.screen equ [ebp-68] |
.zbuff equ [ebp-72] |
.x_max equ [ebp-74] |
.x_min equ [ebp-76] |
.y_max equ [ebp-78] |
.y_min equ [ebp-80] |
.dn equ [ebp-96] |
.dz equ [ebp-100] |
.y equ [ebp-104] |
.cnv equ [ebp-128] |
.col_sum_b equ [ebp-136] |
.col_sum_g equ [ebp-140] |
.col_sum_r equ [ebp-144] |
.cur_col equ [ebp-160] |
.stencil_buf equ [ebp-164] |
mov .y,ecx |
packssdw xmm2,xmm2 |
movq .y_min,xmm2 |
cmp cx,.y_min |
jl .end_rp_line |
cmp cx,.y_max |
jge .end_rp_line ; |
cmp eax,ebx |
je .end_rp_line |
jl @f |
xchg eax,ebx |
movaps xmm7,xmm0 |
movaps xmm0,xmm1 |
movaps xmm1,xmm7 |
shufps xmm3,xmm3,11100001b |
@@: |
cmp ax,.x_max |
jge .end_rp_line |
cmp bx,.x_min |
jle .end_rp_line |
movaps .lv,xmm4 |
movaps .n1,xmm0 |
movaps .n2,xmm1 |
mov .lx1,eax |
mov .lx2,ebx |
mov .stencil_buf,edx |
movlps .z1,xmm3 |
sub ebx,eax |
cvtsi2ss xmm7,ebx |
shufps xmm7,xmm7,0 |
subps xmm1,xmm0 |
divps xmm1,xmm7 |
movaps .dn,xmm1 |
psrldq xmm3,4 |
subss xmm3,.z1 |
divss xmm3,xmm7 |
movss .dz,xmm3 |
mov ebx,.lx1 |
cmp bx,.x_min ; clipping on function4 |
jge @f |
movzx eax,word .x_min |
sub eax,ebx |
cvtsi2ss xmm7,eax |
shufps xmm7,xmm7,0 |
mulss xmm3,xmm7 |
mulps xmm1,xmm7 |
addss xmm3,.z1 |
addps xmm1,.n1 |
movsx eax,word .x_min |
movss .z1,xmm3 |
movaps .n1,xmm1 |
mov dword .lx1,eax |
@@: |
movzx eax,word .x_max |
cmp .lx2,eax |
jl @f |
mov .lx2,eax |
@@: |
movzx eax,word[xres_var] |
mul dword .y |
add eax,.lx1 |
shl eax,2 |
add edi,eax |
mov ebx,eax |
add ebx,.stencil_buf |
mov ecx,.lx2 |
sub ecx,.lx1 |
movaps xmm0,.n1 |
movss xmm2,.z1 |
align 16 |
.ddraw: |
movaps xmm7,xmm0 |
mulps xmm7,xmm7 ; normalize |
andps xmm7,[zero_hgst_dd] |
haddps xmm7,xmm7 |
haddps xmm7,xmm7 |
rsqrtps xmm7,xmm7 |
mulps xmm7,xmm0 |
; maxps xmm7,[the_zero] |
movaps .cnv,xmm7 |
mov edx,lights_aligned ; lights_aligned - global variable |
xorps xmm1,xmm1 ; instead global can be used .lv - light vect. |
.again_col: |
movaps xmm3,.cnv |
mulps xmm3,[edx] |
haddps xmm3,xmm3 |
haddps xmm3,xmm3 ; xmm3 - dot pr |
; cmp [bump_flag],1 ; on/off temporaly |
; depend on bump button |
; je @f |
; stencil |
movss xmm5,xmm2 |
movss xmm6,xmm2 |
addss xmm5,[aprox] |
subss xmm6,[aprox] |
cmpnltss xmm5,dword[ebx] |
cmpnltss xmm6,dword[ebx] |
xorps xmm5,xmm6 |
movd eax,xmm5 |
or eax,eax |
jz .no_reflective |
@@: |
movaps xmm6,xmm3 ;xmm7 |
mulps xmm6,xmm6 |
mulps xmm6,xmm6 |
mulps xmm6,xmm6 |
mulps xmm6,xmm6 |
mulps xmm6,xmm6 |
mulps xmm6,[edx+48] |
.no_reflective: |
movaps xmm7,xmm3 |
mulps xmm7,[edx+16] |
addps xmm7,xmm6 |
addps xmm7,[edx+32] |
minps xmm7,[mask_255f] ; global |
maxps xmm1,xmm7 |
add edx,64 ; size of one light in aligned list |
cmp edx,lights_aligned_end |
jl .again_col |
cvtps2dq xmm1,xmm1 |
movd xmm6,[edi] |
packssdw xmm1,xmm1 |
packuswb xmm1,xmm1 |
paddusb xmm1,xmm6 |
movd [edi],xmm1 |
.skip: |
add edi,4 |
add ebx,4 ; stencil_buff |
addps xmm0,.dn |
addss xmm2,.dz |
sub ecx,1 |
jnz .ddraw |
.end_rp_line: |
add esp,256 |
pop ebp |
ret |
/programs/demos/view3ds/3glass_tex.inc |
---|
0,0 → 1,762 |
; Bilinear filtering, real Phongs shading and glass like parallel. |
; Thanks to authors of 3dica tutorial. |
; Implemented in FASM by Maciej Guba. |
; http://macgub.j.pl |
ROUND2 equ 10 |
glass_tex_tri: |
;----Procedure render Phongs shaded triangle with z coord |
;----interpolation ( Catmull alghoritm ), each pixel is - |
;----covered by texture using bilinear filtering.-------- |
;----I normalize normal vector in every pixel ----------- |
;------------------in - eax - x1 shl 16 + y1 ------------ |
;---------------------- ebx - x2 shl 16 + y2 ------------ |
;---------------------- ecx - x3 shl 16 + y3 ------------ |
;---------------------- esi - pointer to stencil buffer-- |
;---------------------- filled with dd float variables- |
;---------------------- edi - pointer to screen buffer--- |
;---------------------- edx - pointer to texture--------- |
;---------------------- xmm0 - 1st normal vector -------- |
;---------------------- xmm1 - 2cond normal vector ------ |
;---------------------- xmm2 - 3rd normal vector -------- |
;---------------------- xmm3 - normalized light vector -- |
;---------------------- xmm4 - lo -> hi z1, z2, z3 coords |
;---------------------- as dwords floats --------------- |
;---------------------- xmm5 - lo -> hi y_min, y_max, --- |
;---------------------- x_min, x_max as dword integers - |
;---------------------- xmm6 - lo -> hi tx1, ty1, tx2, -- |
;---------------------- ty2, tx3, ty3 as word, xres as-- |
;---------------------- dword integers------------------ |
;---------------------- stack - no parameters ----------- |
;-------------------------------------------------------- |
;----------------- procedure don't save registers !! ---- |
push ebp |
mov ebp,esp |
sub esp,512 |
sub ebp,16 |
and ebp,0xfffffff0 |
.1_nv equ [ebp-16] |
.2_nv equ [ebp-32] |
.3_nv equ [ebp-48] |
.l_v equ [ebp-64] |
.z3 equ [ebp-72] |
.z2 equ [ebp-76] |
.z1 equ [ebp-80] |
.x1 equ [ebp-82] |
.y1 equ [ebp-84] |
.x2 equ [ebp-86] |
.y2 equ [ebp-88] |
.x3 equ [ebp-90] |
.y3 equ [ebp-92] |
.Zbuf equ [ebp-96] |
.x_max equ [ebp-100] |
.x_min equ [ebp-104] |
.y_max equ [ebp-108] |
.y_min equ [ebp-112] |
.screen equ [ebp-116] |
.dx12 equ [ebp-120] |
.dx13 equ [ebp-124] |
.dx23 equ [ebp-128] |
.dn12 equ [ebp-144] |
.dn13 equ [ebp-160] |
.dn23 equ [ebp-176] |
.cnv1 equ [ebp-192] ; cur normal vectors |
.cnv2 equ [ebp-208] |
.x_res equ [ebp-212] |
.ty3 equ [ebp-214] |
.tx3 equ [ebp-216] |
.ty2 equ [ebp-218] |
.tx2 equ [ebp-220] |
.ty1 equ [ebp-222] |
.tx1 equ [ebp-224] |
.dz12 equ [ebp-232] |
.dty12 equ [ebp-236] |
.dtx12 equ [ebp-240] |
.dz13 equ [ebp-248] |
.dty13 equ [ebp-252] |
.dtx13 equ [ebp-256] |
.dz23 equ [ebp-264] |
.dty23 equ [ebp-268] |
.dtx23 equ [ebp-272] |
.cz1 equ [ebp-280] |
.cty1 equ [ebp-284] |
.ctx1 equ [ebp-288] |
.cz2 equ [ebp-296] |
.cty2 equ [ebp-300] |
.ctx2 equ [ebp-304] |
.tx_ptr equ [ebp-308] |
emms |
; movd .x_res,xmm7 |
.sort3: ; sort triangle coordinates... |
cmp ax,bx |
jle .sort1 |
xchg eax,ebx |
shufps xmm4,xmm4,11100001b |
shufps xmm6,xmm6,11100001b |
movaps xmm7,xmm0 |
movaps xmm0,xmm1 |
movaps xmm1,xmm7 |
.sort1: |
cmp bx,cx |
jle .sort2 |
xchg ebx,ecx |
shufps xmm4,xmm4,11011000b |
shufps xmm6,xmm6,11011000b |
movaps xmm7,xmm1 |
movaps xmm1,xmm2 |
movaps xmm2,xmm7 |
jmp .sort3 |
.sort2: |
; movq .tx1,xmm6 |
; pshufd xmm6,xmm6,01001110b |
; movd .tx3,xmm6 |
movaps .tx1,xmm6 |
movaps .z1,xmm4 |
mov .y1,eax |
mov .y2,ebx |
mov .y3,ecx |
movdqa .y_min,xmm5 |
if 1 ; check if at last only fragment |
packssdw xmm5,xmm5 ; of triangle is in visable area |
pshuflw xmm5,xmm5,11011000b |
movdqu xmm7,.y3 |
movdqa xmm6,xmm5 |
pshufd xmm5,xmm5,0 ; xmm5 lo-hi -> broadcasted y_min, x_min |
pshufd xmm6,xmm6,01010101b ;xmm6 -> brd y_max x_max |
movdqa xmm4,xmm7 |
pcmpgtw xmm7,xmm5 |
pcmpgtw xmm4,xmm6 |
pxor xmm7,xmm4 |
pmovmskb eax,xmm7 |
and eax,0x00aaaaaa |
or eax,eax |
jz .rpt_loop2_end |
end if |
movaps .1_nv,xmm0 |
movaps .2_nv,xmm1 |
movaps .3_nv,xmm2 |
movaps .l_v,xmm3 |
mov .Zbuf,esi |
mov .screen,edi |
mov .tx_ptr,edx |
mov bx,.y2 ; calc deltas |
sub bx,.y1 |
jnz .rpt_dx12_make |
xorps xmm7,xmm7 |
mov dword .dx12,0 |
movaps .dtx12,xmm7 |
movaps .dn12,xmm7 |
jmp .rpt_dx12_done |
.rpt_dx12_make: |
mov ax,.x2 |
sub ax,.x1 |
cwde |
movsx ebx,bx |
shl eax,ROUND2 |
cdq |
idiv ebx |
mov .dx12,eax |
cvtsi2ss xmm6,ebx |
shufps xmm6,xmm6,0 |
movss xmm5,.z2 |
subss xmm5,.z1 |
divss xmm5,xmm6 |
movss .dz12,xmm5 |
movd xmm0,.tx1 |
movd xmm2,.tx2 |
pxor xmm1,xmm1 |
punpcklwd xmm0,xmm1 |
punpcklwd xmm2,xmm1 |
psubd xmm2,xmm0 |
; cvtdq2ps xmm0,xmm0 |
cvtdq2ps xmm2,xmm2 |
; movlps .ctx1,xmm0 |
; movlps .ctx2,xmm2 |
; subps xmm2,xmm0 |
divps xmm2,xmm6 |
movlps .dtx12,xmm2 |
movaps xmm0,.2_nv |
subps xmm0,.1_nv |
divps xmm0,xmm6 |
movaps .dn12,xmm0 |
.rpt_dx12_done: |
mov bx,.y3 ; calc deltas |
sub bx,.y1 |
jnz .rpt_dx13_make |
xorps xmm7,xmm7 |
mov dword .dx13,0 |
movaps .dtx13,xmm7 |
movaps .dn13,xmm7 |
jmp .rpt_dx13_done |
.rpt_dx13_make: |
mov ax,.x3 |
sub ax,.x1 |
cwde |
movsx ebx,bx |
shl eax,ROUND2 |
cdq |
idiv ebx |
mov .dx13,eax |
cvtsi2ss xmm6,ebx |
shufps xmm6,xmm6,0 |
movss xmm5,.z3 |
subss xmm5,.z1 |
divss xmm5,xmm6 |
movss .dz13,xmm5 |
movd xmm0,.tx1 |
movd xmm2,.tx3 |
pxor xmm1,xmm1 |
punpcklwd xmm0,xmm1 |
punpcklwd xmm2,xmm1 |
psubd xmm2,xmm0 |
; cvtdq2ps xmm0,xmm0 |
cvtdq2ps xmm2,xmm2 |
; subps xmm2,xmm0 |
divps xmm2,xmm6 |
movlps .dtx13,xmm2 |
movaps xmm0,.3_nv |
subps xmm0,.1_nv |
divps xmm0,xmm6 |
movaps .dn13,xmm0 |
.rpt_dx13_done: |
mov bx,.y3 ; calc deltas |
sub bx,.y2 |
jnz .rpt_dx23_make |
xorps xmm7,xmm7 |
mov dword .dx23,0 |
movaps .dtx23,xmm7 |
movaps .dn23,xmm7 |
jmp .rpt_dx23_done |
.rpt_dx23_make: |
mov ax,.x3 |
sub ax,.x2 |
cwde |
movsx ebx,bx |
shl eax,ROUND2 |
cdq |
idiv ebx |
mov .dx23,eax |
cvtsi2ss xmm6,ebx |
shufps xmm6,xmm6,0 |
movss xmm5,.z3 |
subss xmm5,.z2 |
divss xmm5,xmm6 |
movss .dz23,xmm5 |
movd xmm0,.tx2 |
movd xmm2,.tx3 |
pxor xmm1,xmm1 |
punpcklwd xmm0,xmm1 |
punpcklwd xmm2,xmm1 |
psubd xmm2,xmm0 |
; cvtdq2ps xmm0,xmm0 |
cvtdq2ps xmm2,xmm2 |
; movlps .ctx1,xmm0 |
; movlps .ctx2,xmm2 |
; subps xmm2,xmm0 |
divps xmm2,xmm6 |
movlps .dtx23,xmm2 |
movaps xmm0,.3_nv |
subps xmm0,.2_nv |
divps xmm0,xmm6 |
movaps .dn23,xmm0 |
.rpt_dx23_done: |
movsx eax,word .x1 |
shl eax,ROUND2 |
mov ebx,eax |
mov edx,.z1 |
movd xmm1,.tx1 |
pxor xmm2,xmm2 |
punpcklwd xmm1,xmm2 |
cvtdq2ps xmm1,xmm1 |
mov .cz1,edx |
mov .cz2,edx |
movaps xmm0,.1_nv |
movlps .ctx1,xmm1 |
movlps .ctx2,xmm1 |
movaps .cnv1,xmm0 |
movaps .cnv2,xmm0 |
; mov edx,.dx13 |
; cmp edx,.dx12 |
; jg .second_cause |
movsx ecx,word .y1 |
cmp cx,.y2 |
jge .rpt_loop1_end |
.rpt_loop1: |
pushad |
movaps xmm2,.y_min |
movaps xmm0,.cnv1 |
movaps xmm1,.cnv2 |
; movlps xmm3,.cz1 ; cz1, cz2 both |
movaps xmm3,.ctx1 |
movaps xmm5,.ctx2 |
movaps xmm4,.l_v |
movd xmm6,.x_res |
sar ebx,ROUND2 |
sar eax,ROUND2 |
mov edx,.tx_ptr |
mov edi,.screen |
mov esi,.Zbuf |
call glass_tex_line |
popad |
movaps xmm0,.cnv1 |
movaps xmm1,.cnv2 |
; movss xmm2,.cz1 |
; movss xmm3,.cz2 |
movaps xmm2,.ctx1 |
movaps xmm3,.ctx2 |
addps xmm0,.dn13 |
addps xmm1,.dn12 |
addps xmm2,.dtx13 |
addps xmm3,.dtx12 |
add eax,.dx13 |
add ebx,.dx12 |
movaps .cnv1,xmm0 |
movaps .cnv2,xmm1 |
; movss .cz1,xmm2 |
; movss .cz2,xmm3 |
movaps .ctx1,xmm2 |
movaps .ctx2,xmm3 |
add ecx,1 |
cmp cx,.y2 |
jl .rpt_loop1 |
; jmp .rpt_loop2_end |
.rpt_loop1_end: |
movsx ecx,word .y2 |
cmp cx,.y3 |
jge .rpt_loop2_end |
movsx ebx,word .x2 ; eax - cur x1 |
shl ebx,ROUND2 ; ebx - cur x2 |
push dword .z2 |
pop dword .cz2 |
movd xmm1,.tx2 |
pxor xmm2,xmm2 |
punpcklwd xmm1,xmm2 |
cvtdq2ps xmm1,xmm1 |
movlps .ctx2,xmm1 |
movaps xmm0,.2_nv |
movaps .cnv2,xmm0 |
.rpt_loop2: |
pushad |
movaps xmm2,.y_min |
movaps xmm0,.cnv1 |
movaps xmm1,.cnv2 |
movaps xmm3,.ctx1 |
movaps xmm5,.ctx2 |
movaps xmm4,.l_v |
sar ebx,ROUND2 |
sar eax,ROUND2 |
mov edx,.tx_ptr |
mov edi,.screen |
mov esi,.Zbuf |
movd xmm6,.x_res |
call glass_tex_line |
popad |
movaps xmm0,.cnv1 |
movaps xmm1,.cnv2 |
; movss xmm2,.cz1 |
; movss xmm3,.cz2 |
movaps xmm2,.ctx1 |
movaps xmm3,.ctx2 |
addps xmm0,.dn13 |
addps xmm1,.dn23 |
; addss xmm2,.dz13 |
; addss xmm3,.dz23 |
addps xmm2,.dtx13 |
addps xmm3,.dtx23 |
add eax,.dx13 |
add ebx,.dx23 |
movaps .cnv1,xmm0 |
movaps .cnv2,xmm1 |
movaps .ctx1,xmm2 |
movaps .ctx2,xmm3 |
; movss .cz1,xmm2 |
; movss .cz2,xmm3 |
add ecx,1 |
cmp cx,.y3 |
jl .rpt_loop2 |
.second_cause: ;dx13 > dx12 |
.rpt_loop2_end: |
add esp,512 |
pop ebp |
ret |
align 16 |
glass_tex_line: |
; in: |
; xmm0 - normal vector 1 |
; xmm1 - normal vect 2 |
; xmm3 - lo -> hi tx1, ty1, z1 coords as dwords float |
; xmm5 - lo -> hi tx2, ty2, z2 coords as dwords float |
; xmm2 - lo -> hi y_min, y_max, x_min, x_max |
; as dword integers |
; xmm4 - normalized light vector |
; eax - x1 |
; ebx - x2 |
; ecx - y |
; edi - screen buffer |
; esi - stencil buffer filled with dd floats |
; edx - texture pointer (handle) |
; xmm6 - lowest dword x_res as integer |
push ebp |
mov ebp,esp |
sub esp,350 |
sub ebp,16 |
and ebp,0xfffffff0 |
.n1 equ [ebp-16] |
.n2 equ [ebp-32] |
.lv equ [ebp-48] |
.lx1 equ [ebp-52] |
.lx2 equ [ebp-56] |
; .z2 equ [ebp-60] |
; .z1 equ [ebp-64] |
.screen equ [ebp-68] |
.zbuff equ [ebp-72] |
.x_max equ [ebp-74] |
.x_min equ [ebp-76] |
.y_max equ [ebp-78] |
.y_min equ [ebp-80] |
.dn equ [ebp-96] |
.x_res equ [ebp-100] |
.y equ [ebp-104] |
.cnv equ [ebp-128] |
.z1 equ [ebp-136] |
.ty1 equ [ebp-140] |
.tx1 equ [ebp-144] |
.z2 equ [ebp-152] |
.ty2 equ [ebp-156] |
.tx2 equ [ebp-160] |
.cz equ [ebp-168] |
.cty equ [ebp-172] |
.ctx equ [ebp-176] |
.dz equ [ebp-184] |
.dty equ [ebp-188] |
.dtx equ [ebp-192] |
.yd equ [ebp-196] |
.xd equ [ebp-200] |
.yf equ [ebp-204] |
.xf equ [ebp-208] |
.w4 equ [ebp-212] |
.w3 equ [ebp-216] |
.w2 equ [ebp-220] |
.w1 equ [ebp-224] |
.p4 equ [ebp-228] |
.p3 equ [ebp-232] |
.p2 equ [ebp-236] |
.p1 equ [ebp-240] |
.tx_ptr equ [ebp-244] |
; movaps xmm7,xmm3 |
; movaps xmm3,xmm5 |
; movaps xmm5,xmm7 |
mov .y,ecx |
packssdw xmm2,xmm2 |
; movaps xmm7,xmm2 |
; movhps xmm2,[the_zero] |
; pshuflw xmm2,xmm2,11111000b |
; pshufd xmm2,xmm2,11111100b |
; movlps xmm7,[the_zero] |
; pshufhw xmm7,xmm7,11111111b |
; movlps xmm7,[the_zero] |
; psrldq xmm7,4 |
; por xmm2,xmm7 |
movq .y_min,xmm2 |
cmp cx,.y_min |
jl .end_line |
cmp cx,.y_max |
jge .end_line ; |
cmp eax,ebx |
je .end_line |
jl @f |
xchg eax,ebx |
movaps xmm7,xmm0 |
movaps xmm0,xmm1 |
movaps xmm1,xmm7 |
movaps xmm7,xmm3 |
movaps xmm3,xmm5 |
movaps xmm5,xmm7 |
@@: |
cmp ax,.x_max |
jge .end_line |
cmp bx,.x_min |
jle .end_line |
movaps .lv,xmm4 |
movaps .n1,xmm0 |
movaps .n2,xmm1 |
mov .lx1,eax |
mov .lx2,ebx |
movaps .tx1,xmm3 |
movaps .tx2,xmm5 |
movd .x_res,xmm6 |
mov .tx_ptr,edx |
sub ebx,eax |
cvtsi2ss xmm7,ebx |
shufps xmm7,xmm7,0 |
subps xmm1,xmm0 |
divps xmm1,xmm7 |
movaps .dn,xmm1 |
subps xmm5,xmm3 |
divps xmm5,xmm7 |
movaps .dtx,xmm5 |
mov ebx,.lx1 |
cmp bx,.x_min ; clipping on function4 |
jge @f |
movzx eax,word .x_min |
sub eax,ebx |
cvtsi2ss xmm7,eax |
shufps xmm7,xmm7,0 |
mulps xmm5,xmm7 |
mulps xmm1,xmm7 |
addps xmm5,.tx1 |
addps xmm1,.n1 |
movsx eax,word .x_min |
movaps .tx1,xmm5 |
movaps .n1,xmm1 |
mov dword .lx1,eax |
@@: |
movzx eax,word .x_max |
cmp .lx2,eax |
jl @f |
mov .lx2,eax |
@@: |
mov eax,.x_res |
mul dword .y |
add eax,.lx1 |
shl eax,2 |
add edi,eax |
add esi,eax |
mov ecx,.lx2 |
sub ecx,.lx1 |
; movaps xmm0,.n1 |
movaps xmm2,.tx1 |
; xorps xmm1,xmm1 |
align 16 |
.ddraw: |
; movhlps xmm7,xmm2 |
; cmpnltss xmm7,dword[esi] |
; movd eax,xmm7 |
; or eax,eax |
; jnz .skip |
xorps xmm5,xmm5 |
; movhlps xmm7,xmm2 |
; movss [esi],xmm7 |
movaps xmm7,.n1 ;xmm0 |
mulps xmm7,xmm7 ; normalize |
haddps xmm7,xmm7 |
haddps xmm7,xmm7 |
rsqrtps xmm7,xmm7 |
mulps xmm7,.n1 ;xmm0 |
; andps xmm7,[abs_z_coof] |
movaps .cnv,xmm7 |
movaps xmm6,xmm2 |
minps xmm6,[tex_m2] ; float TEX_X-2,TEX_Y-2 |
cvttps2dq xmm7,xmm6 |
cvtdq2ps xmm4,xmm7 |
subps xmm6,xmm4 |
movlps .xf,xmm6 |
; movaps xmm5,.lv |
mov eax,lights_aligned ; global |
align 16 |
.again_col: |
movaps xmm0,[eax] ; calc multple lights |
mulps xmm0,.cnv ;.lv ; last dword should be zeroed |
haddps xmm0,xmm0 |
haddps xmm0,xmm0 |
; andps xmm0,[abs_val] ;calc absolute value |
if 1 |
; stencil |
movhlps xmm6,xmm2 |
movhlps xmm4,xmm2 |
addss xmm6,[aprox] |
subss xmm4,[aprox] |
cmpnltss xmm6,dword[esi] |
cmpnltss xmm4,dword[esi] |
xorps xmm6,xmm4 |
xorps xmm4,xmm4 |
movd ebx,xmm6 |
cmp ebx,-1 |
jne .no_reflective |
end if |
movaps xmm4,xmm0 |
mulps xmm4,xmm4 |
mulps xmm4,xmm4 |
mulps xmm4,xmm4 |
mulps xmm4,xmm4 |
mulps xmm4,[eax+48] |
.no_reflective: |
maxps xmm0,[the_zero] |
; movaps xmm1,xmm0 |
mulps xmm0,[eax+16] |
addps xmm4,xmm0 |
addps xmm4,[eax+32] |
maxps xmm5,xmm4 |
add eax,64 |
cmp eax,lights_aligned_end |
jnz .again_col |
minps xmm5,[mask_255f] |
; texture coords work |
movd eax,xmm7 |
psrldq xmm7,4 |
movd ebx,xmm7 |
shl ebx,TEX_SHIFT |
add eax,ebx |
lea eax,[eax*3] |
add eax,.tx_ptr |
mov ebx,eax |
add ebx,TEX_X*3 |
movd xmm7,[eax] |
movd xmm6,[eax+3] |
movd xmm4,[ebx] |
movd xmm3,[ebx+3] |
punpcklbw xmm7,xmm6 ;xmm7 r1 r2 g1 g2 b1 b2 |
punpcklbw xmm4,xmm3 ;xmm4 r3 r4 g3 g4 b3 b4 |
punpcklwd xmm7,xmm4 ;xmm7 r1 r2 r3 r4 g1 g2 g3 g4 ... |
movdqa xmm6,xmm7 |
movdqa xmm4,xmm7 |
psrldq xmm6,4 |
psrldq xmm4,8 |
punpcklbw xmm7,[the_zero] ; broadcasted 0 |
punpcklbw xmm6,[the_zero] |
punpcklbw xmm4,[the_zero] |
punpcklwd xmm7,[the_zero] |
punpcklwd xmm6,[the_zero] |
punpcklwd xmm4,[the_zero] |
; calc w ......... |
movlps xmm3,[the_one] ; broadcasted dword 1.0 |
cvtdq2ps xmm7,xmm7 |
subps xmm3,.xf |
cvtdq2ps xmm6,xmm6 |
movhps xmm3,.xf |
cvtdq2ps xmm4,xmm4 |
movaps xmm1,xmm3 ; 1-xf, 1-yf, xf, yf |
shufps xmm3,xmm3,10001000b |
shufps xmm1,xmm1,11110101b |
mulps xmm3,xmm1 |
mulps xmm7,xmm3 |
mulps xmm6,xmm3 |
mulps xmm4,xmm3 |
haddps xmm7,xmm7 ; r |
haddps xmm6,xmm6 ; g |
haddps xmm4,xmm4 ; b |
haddps xmm7,xmm7 ; r |
haddps xmm6,xmm6 ; g |
haddps xmm4,xmm4 ; b |
movlhps xmm7,xmm6 |
shufps xmm7,xmm7,11101000b |
movlhps xmm7,xmm4 |
mulps xmm5,xmm7 |
cvtps2dq xmm5,xmm5 |
psrld xmm5,8 |
movd xmm6,[edi] |
packssdw xmm5,xmm5 |
packuswb xmm5,xmm5 |
paddusb xmm5,xmm6 |
movd [edi],xmm5 |
.skip: |
add edi,4 |
add esi,4 |
; addps xmm0,.dn |
movaps xmm0,.n1 ; cur normal |
addps xmm0,.dn |
addps xmm2,.dtx |
movaps .n1,xmm0 |
sub ecx,1 |
jnz .ddraw |
.end_line: |
add esp,350 |
pop ebp |
ret |
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |
/programs/demos/view3ds/3r_phg.inc |
---|
0,0 → 1,528 |
; Real Phong's shading implemented if flat assembler |
; by Maciej Guba. |
; http://macgub.vxm.pl |
ROUND2 equ 10 |
real_phong_tri_z: |
;----procedure render Phongs shaded triangle with z coord |
;----interpolation ( Catmull alghoritm )----------------- |
;----I normalize normal vector in every pixel ----------- |
;------------------in - eax - x1 shl 16 + y1 ------------ |
;---------------------- ebx - x2 shl 16 + y2 ------------ |
;---------------------- ecx - x3 shl 16 + y3 ------------ |
;---------------------- esi - pointer to Z-buffer filled- |
;---------------------- with dd float variables-------- |
;---------------------- edi - pointer to screen buffer--- |
;---------------------- xmm0 - 1st normal vector -------- |
;---------------------- xmm1 - 2cond normal vector ------ |
;---------------------- xmm2 - 3rd normal vector -------- |
;---------------------- xmm3 - normalized light vector -- |
;---------------------- xmm4 - lo -> hi z1, z2, z3 coords |
;---------------------- as dwords floats --------------- |
;---------------------- xmm5 - lo -> hi y_min, y_max, --- |
;---------------------- x_min, x_max as dword integers - |
;---------------------- stack - no parameters ----------- |
;-------------------------------------------------------- |
;----------------- procedure don't save registers !! ---- |
push ebp |
mov ebp,esp |
sub esp,512 |
sub ebp,16 |
and ebp,0xfffffff0 |
.1_nv equ [ebp-16] |
.2_nv equ [ebp-32] |
.3_nv equ [ebp-48] |
.l_v equ [ebp-64] |
.z3 equ [ebp-72] |
.z2 equ [ebp-76] |
.z1 equ [ebp-80] |
.x1 equ [ebp-82] |
.y1 equ [ebp-84] |
.x2 equ [ebp-86] |
.y2 equ [ebp-88] |
.x3 equ [ebp-90] |
.y3 equ [ebp-92] |
.Zbuf equ [ebp-96] |
.x_max equ [ebp-100] |
.x_min equ [ebp-104] |
.y_max equ [ebp-108] |
.y_min equ [ebp-112] |
.screen equ [ebp-116] |
.dx12 equ [ebp-120] |
.dx13 equ [ebp-124] |
.dx23 equ [ebp-128] |
.dn12 equ [ebp-144] |
.dn13 equ [ebp-160] |
.dn23 equ [ebp-176] |
.dz12 equ [ebp-180] |
.dz13 equ [ebp-184] |
.dz23 equ [ebp-188] |
.cnv1 equ [ebp-208] ; cur normal vectors |
.cnv2 equ [ebp-224] |
.cz2 equ [ebp-228] |
.cz1 equ [ebp-232] |
.sort3: ; sort triangle coordinates... |
cmp ax,bx |
jle .sort1 |
xchg eax,ebx |
shufps xmm4,xmm4,11100001b |
movaps xmm6,xmm0 |
movaps xmm0,xmm1 |
movaps xmm1,xmm6 |
.sort1: |
cmp bx,cx |
jle .sort2 |
xchg ebx,ecx |
shufps xmm4,xmm4,11011000b |
movaps xmm6,xmm1 |
movaps xmm1,xmm2 |
movaps xmm2,xmm6 |
jmp .sort3 |
.sort2: |
movaps .z1,xmm4 |
mov .y1,eax |
mov .y2,ebx |
mov .y3,ecx |
movdqa .y_min,xmm5 |
if 1 ; check if at last only fragment |
packssdw xmm5,xmm5 ; of triangle is in visable area |
pshuflw xmm5,xmm5,11011000b |
movdqu xmm7,.y3 |
movdqa xmm6,xmm5 |
pshufd xmm5,xmm5,0 ; xmm5 lo-hi -> broadcasted y_min, x_min |
pshufd xmm6,xmm6,01010101b ;xmm6 -> brd y_max x_max |
movdqa xmm4,xmm7 |
pcmpgtw xmm7,xmm5 |
pcmpgtw xmm4,xmm6 |
pxor xmm7,xmm4 |
pmovmskb eax,xmm7 |
and eax,0x00aaaaaa |
or eax,eax |
jz .rpt_loop2_end |
end if |
movaps .1_nv,xmm0 |
movaps .2_nv,xmm1 |
movaps .3_nv,xmm2 |
movaps .l_v,xmm3 |
mov .Zbuf,esi |
mov .screen,edi |
mov bx,.y2 ; calc deltas |
sub bx,.y1 |
jnz .rpt_dx12_make |
xorps xmm7,xmm7 |
mov dword .dx12,0 |
mov dword .dz12,0 |
movaps .dn12,xmm7 |
jmp .rpt_dx12_done |
.rpt_dx12_make: |
mov ax,.x2 |
sub ax,.x1 |
cwde |
movsx ebx,bx |
shl eax,ROUND2 |
cdq |
idiv ebx |
mov .dx12,eax |
cvtsi2ss xmm6,ebx |
movss xmm5,.z2 |
subss xmm5,.z1 |
divss xmm5,xmm6 |
movss .dz12,xmm5 |
movaps xmm0,.2_nv |
subps xmm0,.1_nv |
shufps xmm6,xmm6,0 |
divps xmm0,xmm6 |
movaps .dn12,xmm0 |
.rpt_dx12_done: |
mov bx,.y3 ; calc deltas |
sub bx,.y1 |
jnz .rpt_dx13_make |
xorps xmm7,xmm7 |
mov dword .dx13,0 |
mov dword .dz13,0 |
movaps .dn13,xmm7 |
jmp .rpt_dx13_done |
.rpt_dx13_make: |
mov ax,.x3 |
sub ax,.x1 |
cwde |
movsx ebx,bx |
shl eax,ROUND2 |
cdq |
idiv ebx |
mov .dx13,eax |
cvtsi2ss xmm6,ebx |
movss xmm5,.z3 |
subss xmm5,.z1 |
divss xmm5,xmm6 |
movss .dz13,xmm5 |
movaps xmm0,.3_nv |
subps xmm0,.1_nv |
shufps xmm6,xmm6,0 |
divps xmm0,xmm6 |
movaps .dn13,xmm0 |
.rpt_dx13_done: |
mov bx,.y3 ; calc deltas |
sub bx,.y2 |
jnz .rpt_dx23_make |
xorps xmm7,xmm7 |
mov dword .dx23,0 |
mov dword .dz23,0 |
movaps .dn23,xmm7 |
jmp .rpt_dx23_done |
.rpt_dx23_make: |
mov ax,.x3 |
sub ax,.x2 |
cwde |
movsx ebx,bx |
shl eax,ROUND2 |
cdq |
idiv ebx |
mov .dx23,eax |
cvtsi2ss xmm6,ebx |
movss xmm5,.z3 |
subss xmm5,.z2 |
divss xmm5,xmm6 |
movss .dz23,xmm5 |
movaps xmm0,.3_nv |
subps xmm0,.2_nv |
shufps xmm6,xmm6,0 |
divps xmm0,xmm6 |
movaps .dn23,xmm0 |
.rpt_dx23_done: |
movsx eax,word .x1 |
shl eax,ROUND2 |
mov ebx,eax |
mov edx,.z1 |
mov .cz1,edx |
mov .cz2,edx |
movaps xmm0,.1_nv |
movaps .cnv1,xmm0 |
movaps .cnv2,xmm0 |
movsx ecx,word .y1 |
cmp cx,.y2 |
jge .rpt_loop1_end |
.rpt_loop1: |
pushad |
movaps xmm2,.y_min |
movaps xmm0,.cnv1 |
movaps xmm1,.cnv2 |
movlps xmm3,.cz1 |
movaps xmm4,.l_v |
sar ebx,ROUND2 |
sar eax,ROUND2 |
mov edi,.screen |
mov esi,.Zbuf |
call real_phong_line_z |
popad |
movaps xmm0,.cnv1 |
movaps xmm1,.cnv2 |
movss xmm2,.cz1 |
movss xmm3,.cz2 |
addps xmm0,.dn13 |
addps xmm1,.dn12 |
addss xmm2,.dz13 |
addss xmm3,.dz12 |
add eax,.dx13 |
add ebx,.dx12 |
movaps .cnv1,xmm0 |
movaps .cnv2,xmm1 |
movss .cz1,xmm2 |
movss .cz2,xmm3 |
add ecx,1 |
cmp cx,.y2 |
jl .rpt_loop1 |
.rpt_loop1_end: |
movsx ecx,word .y2 |
cmp cx,.y3 |
jge .rpt_loop2_end |
movsx ebx,word .x2 ; eax - cur x1 |
shl ebx,ROUND2 ; ebx - cur x2 |
push dword .z2 |
pop dword .cz2 |
movaps xmm0,.2_nv |
movaps .cnv2,xmm0 |
.rpt_loop2: |
pushad |
movaps xmm2,.y_min |
movaps xmm0,.cnv1 |
movaps xmm1,.cnv2 |
movlps xmm3,.cz1 |
movaps xmm4,.l_v |
sar ebx,ROUND2 |
sar eax,ROUND2 |
mov edi,.screen |
mov esi,.Zbuf |
call real_phong_line_z |
popad |
movaps xmm0,.cnv1 |
movaps xmm1,.cnv2 |
movss xmm2,.cz1 |
movss xmm3,.cz2 |
addps xmm0,.dn13 |
addps xmm1,.dn23 |
addss xmm2,.dz13 |
addss xmm3,.dz23 |
add eax,.dx13 |
add ebx,.dx23 |
movaps .cnv1,xmm0 |
movaps .cnv2,xmm1 |
movss .cz1,xmm2 |
movss .cz2,xmm3 |
add ecx,1 |
cmp cx,.y3 |
jl .rpt_loop2 |
.rpt_loop2_end: |
add esp,512 |
pop ebp |
ret |
align 16 |
real_phong_line_z: |
; in: |
; xmm0 - normal vector 1 |
; xmm1 - normal vect 2 |
; xmm3 - lo -> hi z1, z2 coords as dwords floats |
; xmm2 - lo -> hi y_min, y_max, x_min, x_max |
; as dword integers |
; xmm4 - normalized light vector |
; eax - x1 |
; ebx - x2 |
; ecx - y |
; edi - screen buffer |
; esi - z buffer filled with dd floats |
push ebp |
mov ebp,esp |
sub esp,160 |
sub ebp,16 |
and ebp,0xfffffff0 |
.n1 equ [ebp-16] |
.n2 equ [ebp-32] |
.lv equ [ebp-48] |
.lx1 equ [ebp-52] |
.lx2 equ [ebp-56] |
.z2 equ [ebp-60] |
.z1 equ [ebp-64] |
.screen equ [ebp-68] |
.zbuff equ [ebp-72] |
.x_max equ [ebp-74] |
.x_min equ [ebp-76] |
.y_max equ [ebp-78] |
.y_min equ [ebp-80] |
.dn equ [ebp-96] |
.dz equ [ebp-100] |
.y equ [ebp-104] |
.cnv equ [ebp-128] |
mov .y,ecx |
packssdw xmm2,xmm2 |
movq .y_min,xmm2 |
cmp cx,.y_min |
jl .end_rp_line |
cmp cx,.y_max |
jge .end_rp_line ; |
cmp eax,ebx |
je .end_rp_line |
jl @f |
xchg eax,ebx |
movaps xmm7,xmm0 |
movaps xmm0,xmm1 |
movaps xmm1,xmm7 |
shufps xmm3,xmm3,11100001b |
@@: |
cmp ax,.x_max |
jge .end_rp_line |
cmp bx,.x_min |
jle .end_rp_line |
movaps .lv,xmm4 |
movaps .n1,xmm0 |
movaps .n2,xmm1 |
mov .lx1,eax |
mov .lx2,ebx |
movlps .z1,xmm3 |
sub ebx,eax |
cvtsi2ss xmm7,ebx |
shufps xmm7,xmm7,0 |
subps xmm1,xmm0 |
divps xmm1,xmm7 |
movaps .dn,xmm1 |
psrldq xmm3,4 |
subss xmm3,.z1 |
divss xmm3,xmm7 |
movss .dz,xmm3 |
mov ebx,.lx1 |
cmp bx,.x_min ; clipping on function4 |
jge @f |
movzx eax,word .x_min |
sub eax,ebx |
cvtsi2ss xmm7,eax |
shufps xmm7,xmm7,0 |
mulss xmm3,xmm7 |
mulps xmm1,xmm7 |
addss xmm3,.z1 |
addps xmm1,.n1 |
movsx eax,word .x_min |
movss .z1,xmm3 |
movaps .n1,xmm1 |
mov dword .lx1,eax |
@@: |
movzx eax,word .x_max |
cmp .lx2,eax |
jl @f |
mov .lx2,eax |
@@: |
movzx eax,word[size_x_var] |
mul dword .y |
; mov edx,.x1 |
add eax,.lx1 |
shl eax,2 |
add edi,eax |
add esi,eax |
mov ecx,.lx2 |
sub ecx,.lx1 |
movaps xmm0,.n1 |
movss xmm2,.z1 |
align 16 |
.ddraw: |
movss xmm7,xmm2 |
cmpnltss xmm7,dword[esi] |
movd eax,xmm7 |
or eax,eax |
jnz .skip |
movss [esi],xmm2 |
movaps xmm7,xmm0 |
mulps xmm7,xmm7 ; normalize |
haddps xmm7,xmm7 |
haddps xmm7,xmm7 |
rsqrtps xmm7,xmm7 |
mulps xmm7,xmm0 |
movaps .cnv,xmm7 |
mov edx,lights_aligned ; lights - global variable |
xorps xmm1,xmm1 ; instead global can be used .lv - light vect. |
@@: |
movaps xmm6,[edx+16] |
movaps xmm5,[edx] |
movaps xmm3,[edx+48] |
andps xmm5,[zero_hgst_dd] ; global |
mulps xmm5,.cnv ;.lv ; last dword should be zeroed |
haddps xmm5,xmm5 |
haddps xmm5,xmm5 |
; mulps xmm5,[env_const2] |
; maxps xmm5,[dot_min] |
; minps xmm5,[dot_max] |
movaps xmm7,xmm5 |
; mulps xmm7,[env_const2] |
; mulps xmm7,[env_const2] |
; maxps xmm7,[dot_min] |
; minps xmm7,[dot_max] |
mulps xmm7,xmm7 |
mulps xmm7,xmm7 |
mulps xmm5,xmm6 |
mulps xmm7,xmm7 |
mulps xmm7,xmm3 |
addps xmm5,xmm7 |
minps xmm5,[mask_255f] ; global |
maxps xmm1,xmm5 |
; movq xmm3,[edx+20] ; minimal color |
; punpcklwd xmm3,[minimum0] |
; cvtdq2ps xmm3,xmm3 |
; maxps xmm1,xmm3 |
add edx,64 |
cmp edx,lights_aligned_end ; global |
jnz @b |
cvtps2dq xmm1,xmm1 |
packssdw xmm1,xmm1 |
packuswb xmm1,xmm1 |
movd [edi],xmm1 |
.skip: |
add edi,4 |
add esi,4 |
addps xmm0,.dn |
addss xmm2,.dz |
sub ecx,1 |
jnz .ddraw |
.end_rp_line: |
add esp,160 |
pop ebp |
ret |
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |
/programs/demos/view3ds/3stencil.inc |
---|
0,0 → 1,327 |
ROUND2 equ 10 |
stencil_tri: |
; procedure calculate triangle in stencil buffer |
; ----------------in - eax - x1 shl 16 + y1 ---------------------- |
; -------------------- ebx - x2 shl 16 + y2 ---------------------- |
; -------------------- ecx - x3 shl 16 + y3 ---------------------- |
; -------------------- esi - pointer to s-buffer ----------------- |
; -------------------- xmm0 - lo -> hi z1, z2, z3 as dword float |
.x1 equ [ebp-2] |
.y1 equ [ebp-4] |
.x2 equ [ebp-6] |
.y2 equ [ebp-8] |
.x3 equ [ebp-10] |
.y3 equ [ebp-12] |
.dx12 equ dword[ebp-20] |
.dx13 equ dword[ebp-24] |
.dx23 equ dword[ebp-28] |
.dz12 equ dword[ebp-32] |
.dz13 equ dword[ebp-36] |
.dz23 equ dword[ebp-40] |
.zz2 equ [ebp-44] |
.zz1 equ [ebp-48] |
.z3 equ [ebp-56] |
.z2 equ [ebp-60] |
.z1 equ [ebp-64] |
.s_buff equ [ebp-68] |
push ebp |
mov ebp,esp |
sub esp,128 |
and ebp,0xfffffff0 |
.sort2: |
cmp ax,bx |
jle .sort1 |
xchg eax,ebx |
shufps xmm0,xmm0,11100001b |
.sort1: |
cmp bx,cx |
jle .sort3 |
xchg ebx,ecx |
shufps xmm0,xmm0,11011000b |
jmp .sort2 |
.sort3: |
mov .y1,eax ; store triangle coordinates in user friendly variables |
mov .y2,ebx |
mov .y3,ecx |
; mov edx,100.11 |
; movd xmm0,edx |
; shufps xmm0,xmm0,11100000b |
movaps .z1,xmm0 |
; mov dword .z1,edx |
; mov .z2,edx |
; mov .z3,edx |
mov .s_buff,esi |
mov edx,80008000h ; eax,ebx,ecx are ANDd together into edx which means that |
and edx,ebx ; if *all* of them are negative a sign flag is raised |
and edx,ecx |
and edx,eax |
test edx,80008000h ; Check both X&Y at once |
jne .loop2_end |
mov bx,.y2 ; calc delta 12 |
sub bx,.y1 |
jnz .dx12_make |
mov .dx12,0 |
mov .dz12,0 |
jmp .dx12_done |
.dx12_make: |
mov ax,.x2 |
sub ax,.x1 |
cwde |
movsx ebx,bx |
shl eax,ROUND2 |
cdq |
idiv ebx |
mov .dx12,eax |
movss xmm1,.z2 |
cvtsi2ss xmm2,ebx |
subss xmm1,.z1 |
divss xmm1,xmm2 |
movss .dz12,xmm1 |
; mov .dz12, dword 0.11 |
.dx12_done: |
mov bx,.y3 ; calc delta 13 |
sub bx,.y1 |
jnz .dx13_make |
mov .dx13,0 |
mov .dz13,0 |
jmp .dx13_done |
.dx13_make: |
mov ax,.x3 |
sub ax,.x1 |
cwde |
movsx ebx,bx |
shl eax,ROUND2 |
cdq |
idiv ebx |
mov .dx13,eax |
movss xmm1,.z3 |
cvtsi2ss xmm2,ebx |
subss xmm1,.z1 |
divss xmm1,xmm2 |
movss .dz13,xmm1 |
; mov .dz13, dword 0.11 |
.dx13_done: |
mov bx,.y3 ; calc delta 23 |
sub bx,.y2 |
jnz .dx23_make |
mov .dx23,0 |
mov .dz23,0 |
jmp .dx23_done |
.dx23_make: |
mov ax,.x3 |
sub ax,.x2 |
cwde |
movsx ebx,bx |
shl eax,ROUND2 |
cdq |
idiv ebx |
mov .dx23,eax |
movss xmm1,.z3 |
cvtsi2ss xmm2,ebx |
subss xmm1,.z2 |
divss xmm1,xmm2 |
movss .dz23,xmm1 |
.dx23_done: |
mov edx,.z1 |
mov .zz1,edx |
mov .zz2,edx |
movsx eax,word .x1 |
shl eax,ROUND2 ; eax - cur x1 |
mov ebx,eax ; ebx - cur x2 |
mov cx,.y1 |
cmp cx,.y2 |
jge .loop1_end |
.loop1: |
pushad |
sar ebx,ROUND2 |
sar eax,ROUND2 |
; movq xmm0,.zz1 |
movlps xmm0,.zz1 |
; mov edx,0.11 |
; movd xmm0,edx |
; shufps xmm0,xmm0,11100000b |
mov esi,.s_buff |
call stencil_line |
popad |
add eax,.dx13 |
add ebx,.dx12 |
movss xmm1,.zz1 |
movss xmm2,.zz2 |
addss xmm1,.dz13 |
addss xmm2,.dz12 |
movss .zz1,xmm1 |
movss .zz2,xmm2 |
add cx,1 |
cmp cx,.y2 |
jl .loop1 |
.loop1_end: |
mov edx,.z2 |
mov .zz2,edx |
movsx ebx,word .x2 |
shl ebx,ROUND2 |
mov cx,.y2 |
cmp cx,.y3 |
jge .loop2_end |
.loop2: |
pushad |
sar ebx,ROUND2 |
sar eax,ROUND2 |
movlps xmm0,.zz1 |
mov esi,.s_buff |
call stencil_line |
popad |
add eax,.dx13 |
add ebx,.dx23 |
movss xmm1,.zz1 |
movss xmm2,.zz2 |
addss xmm1,.dz13 |
addss xmm2,.dz23 |
movss .zz1,xmm1 |
movss .zz2,xmm2 |
add cx,1 |
cmp cx,.y3 |
jl .loop2 |
.loop2_end: |
add esp,128 |
pop ebp |
ret |
stencil_line: |
;---------------------------------------------------- |
;-------------in xmm0 - lo -> hi z1, z2 |
;--------------- eax - x1 --------------------------- |
;--------------- ebx - x2 --------------------------- |
;--------------- ecx - y----------------------------- |
;--------------- esi - pointer to s-buffer |
.dz equ [ebp-4] |
.z2 equ [ebp-8] |
.z1 equ [ebp-12] |
.x2 equ [ebp-16] |
.x1 equ [ebp-20] |
.s_buf equ [ebp-24] |
; cmp eax,ebx |
; je @f |
; int3 |
; @@: |
push ebp |
mov ebp,esp |
sub esp,64 |
; cmp eax,0 |
; jg @f |
; |
; @@: |
or cx,cx |
jle .l_quit |
cmp cx,[size_y_var] |
jge .l_quit |
movzx ecx,cx |
mov .s_buf,esi |
cmp eax,ebx |
je .l_quit |
jl .l_ok |
xchg eax,ebx |
shufps xmm0,xmm0,11100001b |
.l_ok: |
cmp ax,[size_x_var] |
jge .l_quit |
cmp bx,0 |
jle .l_quit |
movlps .z1,xmm0 |
mov .x1,eax |
mov .x2,ebx |
sub ebx,eax |
movss xmm0,.z2 |
cvtsi2ss xmm1,ebx |
subss xmm0,.z1 |
divss xmm0,xmm1 |
movss .dz,xmm0 |
movzx edx,word[size_x_var] |
cmp eax,1 |
jge @f |
mov eax,.x1 |
neg eax |
cvtsi2ss xmm2,eax |
mulss xmm2,.dz |
addss xmm2,.z1 |
movss .z1,xmm2 |
mov dword .x1,0 |
movzx edx,word[size_x_var] |
sub edx,1 |
@@: |
cmp .x2,edx |
jl @f |
mov .x2,edx |
@@: |
; mov eax,.x1 |
; cmp .x2,eax |
; je .l_quit |
movzx edx,word[size_x_var] |
mov esi,.s_buf |
mov eax,ecx ; y |
mul edx |
add eax,.x1 |
shl eax,2 |
add esi,eax |
mov ecx,.x2 |
sub ecx,.x1 |
movss xmm2,.z1 ; cz |
.ccalc: |
; movss xmm1,xmm2 |
comiss xmm2,dword[esi] |
jg @f |
movss dword[esi],xmm2 |
@@: |
add esi,4 |
addss xmm2,.dz |
sub ecx,1 |
jnz .ccalc |
.l_quit: |
mov esp,ebp |
pop ebp |
ret |
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |
/programs/demos/view3ds/Tupfile.lua |
---|
0,0 → 1,2 |
if tup.getconfig("NO_FASM") ~= "" then return end |
tup.rule("view3ds.asm", "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "view3ds") |
/programs/demos/view3ds/a_procs.inc |
---|
0,0 → 1,623 |
do_sinus: |
.x equ [ebp-8] |
.y equ [ebp-12] |
.new_y equ [ebp-16] |
.temp equ [ebp-20] |
push ebp |
mov ebp,esp |
sub esp,64 |
mov dword .x,0 |
mov dword .y,0 |
mov esi,[screen_ptr] |
mov edi,[Zbuffer_ptr] |
push edi |
; clear Zbuffer temporally used as image buffer |
movzx ecx,word[size_x_var] |
movzx eax,word[size_y_var] |
imul ecx,eax ;SIZE_X*SIZE_Y |
xor eax,eax |
cld |
rep stosd |
pop edi |
fninit |
.again: |
fild dword .x |
fmul [sin_frq] |
fistp dword .temp |
mov eax, .temp |
and eax, 0x000000ff |
fld dword [sin_tab+eax*4] |
fimul dword [sin_amplitude] |
fiadd dword .y |
fistp dword .new_y |
mov eax,.new_y |
or eax,eax |
jl .skip |
movzx ebx,word[size_y_var] |
cmp eax,ebx ;SIZE_Y |
jg .skip |
movzx edx,word[size_x_var] |
mul edx |
; shl eax,9 |
add eax,dword .x |
lea ebx,[eax*3] |
cmp [dr_flag],12 ; 32 bit col cause |
jl @f |
add ebx,eax |
@@: |
mov eax,[esi] |
mov [edi+ebx],eax |
.skip: |
add esi,3 |
cmp [dr_flag],12 |
jl @f |
inc esi |
@@: |
inc dword .x |
movzx edx,word[size_x_var] |
cmp dword .x,edx ;SIZE_X |
jl .again |
mov dword .x,0 |
inc dword .y |
movzx edx,word[size_y_var] |
cmp dword .y,edx ;SIZE_Y |
jl .again |
; copy from temporary buffer -> Zbuffer to screen |
mov esi,[Zbuffer_ptr] |
mov edi,[screen_ptr] |
movzx ecx,word[size_x_var] |
movzx eax,word[size_y_var] |
imul ecx,eax |
cmp [dr_flag],12 |
jge @f |
lea ecx,[ecx*3] |
shr ecx,2 |
; mov ecx,SIZE_X*SIZE_Y*3/4 |
@@: |
cld |
rep movsd |
mov esp,ebp |
pop ebp |
ret |
draw_dots: |
mov esi,[points_translated_ptr] |
mov ecx,[points_count_var] |
.drw: |
@@: |
lodsd |
add esi,2 ; skip z |
movzx ebx,ax |
shr eax,16 ; bx = x , ax = y |
or ax,ax |
jl @f |
or bx,bx |
jl @f |
cmp ax,[size_y_var] ;SIZE_Y |
jge @f |
cmp bx,[size_x_var] ;SIZE_X |
jge @f |
movzx edx,word[size_x_var] ;SIZE_X ; SIZE_X not only power of 2 -> 256,512,... |
mul edx |
add eax,ebx |
mov edi,[screen_ptr] |
lea eax,[eax*3] |
add edi,eax |
xor eax,eax |
not eax |
stosd |
@@: |
loop .drw |
ret |
do_emboss: ; sse2 version only |
if Ext >= SSE2 |
movzx ecx,[bumps_deep_flag] |
inc ecx |
call blur_screen ;blur n times |
mov eax,[size_y_var] ;load both x, y |
mov ebx,eax |
shr ebx,16 |
cwde |
mul ebx |
mov ecx,eax |
sub ecx,ebx |
sub ecx,ebx |
mov esi,[screen_ptr] |
mov edi,[Zbuffer_ptr] |
cmp [dr_flag],12 |
jge @f |
lea ebx,[ebx*3] |
jmp .f |
@@: |
shl ebx,2 |
.f: |
mov edx,esi |
add esi,ebx |
lea ebx,[ebx+esi] |
pxor xmm0,xmm0 |
push eax |
.emb: |
cmp [dr_flag],12 |
jge @f |
movlps xmm1,[esi+3] |
movhps xmm1,[esi+6] |
movlps xmm2,[esi-3] |
movhps xmm2,[esi] |
movlps xmm3,[ebx] |
movhps xmm3,[ebx+3] |
movlps xmm4,[edx] |
movhps xmm4,[edx+3] |
jmp .ff |
@@: |
movlps xmm1,[esi+4] |
movhps xmm1,[esi+8] |
movlps xmm2,[esi-4] |
movhps xmm2,[esi] |
movlps xmm3,[ebx] |
movhps xmm3,[ebx+4] |
movlps xmm4,[edx] |
movhps xmm4,[edx+4] |
.ff: |
punpcklbw xmm1,xmm0 |
punpcklbw xmm2,xmm0 |
punpcklbw xmm3,xmm0 |
punpcklbw xmm4,xmm0 |
psubsw xmm1,xmm2 |
paddw xmm1,[emboss_bias] |
psubsw xmm3,xmm4 |
paddw xmm3,[emboss_bias] |
pmulhw xmm1,xmm3 |
movaps xmm7,xmm1 |
movaps xmm6,xmm1 |
psrlq xmm7,2*8 |
psrlq xmm6,4*8 |
pmaxsw xmm1,xmm7 |
pmaxsw xmm1,xmm6 |
if 0 |
movaps xmm7,xmm3 |
movaps xmm6,xmm3 |
psrlq xmm7,2*8 |
psrlq xmm6,4*8 |
pmaxsw xmm3,xmm7 |
pmaxsw xmm3,xmm6 |
end if |
pmaxsw xmm1,xmm3 |
movd eax,xmm1 |
movzx eax,al |
; cmp [dr_flag],12 |
; je @f |
lea eax,[eax*3+envmap_cub] |
; jmp .fff |
;@@: |
mov eax,[eax] |
mov [edi],eax ;xmm1 |
psrldq xmm1,8 |
movd eax,xmm1 |
movzx eax,al |
lea eax,[eax*3+envmap_cub] |
mov eax,[eax] |
mov [edi+4],eax |
cmp [dr_flag],12 |
jl @f |
add esi,2 |
add ebx,2 |
add edx,2 |
@@: |
add edi,8 |
add esi,6 |
add ebx,6 |
add edx,6 |
sub ecx,2 |
jnc .emb |
pop ecx ;,eax |
mov edi,[screen_ptr] |
mov esi,[Zbuffer_ptr] |
cmp [dr_flag],12 |
jge .e |
@@: |
movsd |
dec edi |
loop @b |
.e: |
rep movsd |
end if |
ret |
;********************************EMBOSS DONE******************************* |
generate_object2: ; torus |
;in ax - figure number 2=torus, 3=loop, 4=loop |
;locals |
; counter dw ? |
; sin dd ? |
; cos dd ? |
;endl |
.counter equ word[ebp-2] |
.sin equ dword[ebp-6] |
.cos equ dword[ebp-10] |
.sin2 equ dword[ebp-14] |
.cos2 equ dword[ebp-18] |
.piD180m3 equ dword[ebp-22] |
.cD2 equ word[ebp-24] |
push ebp |
mov ebp,esp |
sub esp,24 |
push ax |
fninit |
mov edi,[points_ptr] |
xor eax,eax |
; init seed -> 4 3d points |
mov dword[edi],-1.0 ; x |
add edi,4 |
stosd ; y |
stosd ; z |
mov dword[edi],-0.9 ; x1 |
mov dword[edi+4],0.1 ; y1 |
add edi,8 |
stosd ; z1 |
mov dword[edi],-0.8 |
add edi,4 |
stosd |
stosd |
mov dword[edi],-0.9 ; x3 |
mov dword[edi+4],-0.1 ; y3 |
add edi,8 |
stosd ; z3 |
mov [points_count_var],4 |
fld [piD180] |
fidiv [i3] |
fstp .piD180m3 |
mov .cD2,5 |
pop ax |
mov ecx,1 |
mov edx,9 |
.next: ; calc angle and rotate seed 4 points |
mov .counter,cx |
mov ebx,[points_ptr] |
fld .piD180m3 |
fimul .counter |
fld st |
fsincos |
fstp .sin |
fstp .cos |
fadd st,st0 |
fsincos |
fstp .sin2 |
fstp .cos2 |
.rotor: ; next 4 |
; rotary y |
fld dword[ebx] ; x |
fld .sin |
fmul dword[ebx+8] ; z * sinbeta |
fchs |
fld .cos |
fmul dword[ebx] ; x * cosbeta |
faddp |
fstp dword[edi] ; new x |
fmul .sin ; old x * sinbeta |
fld .cos |
fmul dword[ebx+8] ; z * cosbeta |
faddp |
dec dx |
or dx,dx |
jnz @f |
; mov .counter,dx |
fld st |
fidiv [i3] |
faddp |
@@: |
fstp dword[edi+8] ; new z |
fld dword[ebx+4] |
or dx,dx |
jnz @f |
; fld1 |
; faddp |
; fld st |
fadd st,st0 |
fadd st,st0 |
; fxch |
; fimul [i3] |
; fsin |
; faddp |
mov dx,9 |
@@: |
fstp dword[edi+4] |
; rotary x |
cmp al,3 |
jl .end_rot |
fld dword[edi+4] ;y |
fld .sin2 |
fmul dword[edi+8] ;z |
fld .cos2 |
fmul dword[edi+4] ;y |
faddp |
fstp dword[edi+4] ; new y |
fmul .sin2 ; sinbeta * old y |
fchs |
fld .cos2 |
fmul dword[edi+8] |
faddp |
fstp dword[edi+8] |
; rotary z |
cmp al,4 |
jl .end_rot |
fld dword[edi] ;x |
fld .sin |
fmul dword[edi+4] ;y |
fld .cos |
fmul dword[edi] ;x |
faddp |
fstp dword[edi] ;new x |
fmul .sin ; sinbeta * old x |
fchs |
fld .cos |
fmul dword[edi+4] ; cosbeta * y |
faddp |
fstp dword[edi+4] ; new y |
.end_rot: |
add edi,12 |
add ebx,12 |
mov esi,[points_ptr] |
add esi,12*4 |
cmp ebx,esi |
jl .rotor |
add [points_count_var],4 |
add cx,18 |
cmp cx,(18*21*3)+1 |
jle .next |
mov edi,[triangles_ptr] |
mov eax,4 |
mov ebx,4+4 |
mov [triangles_count_var],160*3 ;164*3 ;140 |
mov ecx,80*3 ;68 |
@@: |
stosd ;---- |
mov [edi],ebx ; | |
add edi,4 ; | |
inc eax ; | |
stosd ; |repeat 4 times |
mov [edi],ebx ; | |
inc ebx |
add edi,4 |
stosd ; | |
mov [edi],ebx ; | |
add edi,4 ;---- |
loop @b |
mov dword[edi],-1 ; < - end mark |
mov [culling_flag],0 |
mov esp,ebp |
pop ebp |
ret |
generate_object3: ; heart |
;locals |
; counter dw ? |
; sin dd ? |
; cos dd ? |
;endl |
.counter equ word[ebp-2] |
.sin equ dword[ebp-6] |
.cos equ dword[ebp-10] |
.sin2 equ dword[ebp-14] |
.cos2 equ dword[ebp-18] |
.piD180m3 equ dword[ebp-22] |
.cD2 equ word[ebp-24] |
push ebp |
mov ebp,esp |
sub esp,24 |
fninit |
mov edi,[points_ptr] |
xor eax,eax |
; init seed -> eight 3d points |
mov dword[edi],2.0 |
add edi,4 |
stosd |
stosd |
mov dword[edi],2.0 |
mov dword[edi+4],-0.5 |
add edi,8 |
stosd |
mov dword[edi],1.5 |
mov dword[edi+4],-1.5 |
add edi,8 |
stosd |
mov dword[edi],1.0 |
mov dword[edi+4],-2.0 |
add edi,8 |
stosd |
stosd |
mov dword[edi],-2.5 |
add edi,4 |
stosd |
mov [points_count_var],5 |
mov ecx,1 |
.next: ; calc angle and rotate seed 4 points |
mov .counter,cx |
mov ebx,[points_ptr] |
fld [piD180] |
fimul .counter |
fsincos |
fstp .sin |
fstp .cos |
.rotor: ; next 4 |
; rotary y |
fld dword[ebx] ; x |
fld .sin |
fmul dword[ebx+8] ; z * sinbeta |
fchs |
fld .cos |
fmul dword[ebx] ; x * cosbeta |
faddp |
fidiv [i3] |
fstp dword[edi] ; new x |
fmul .sin ; old x * sinbeta |
fld .cos |
fmul dword[ebx+8] ; z * cosbeta |
faddp |
fstp dword[edi+8] ; new z |
fld dword[ebx+4] ;y |
fstp dword[edi+4] |
.end_rot: |
add edi,12 |
add ebx,12 |
mov esi,[points_ptr] |
add esi,12*5 |
cmp ebx,esi ;real_points + (12*5) |
jl .rotor |
add [points_count_var],5 |
add cx,18 |
cmp cx,(18*21)+1 |
jle .next |
;last points |
xor eax,eax |
mov dword[edi],0.22 |
mov dword[edi+4],0.77 |
mov dword[edi+8],1.25 |
add edi,12 |
mov dword[edi],0.22 |
mov dword[edi+4],0.77 |
mov dword[edi+8],-1.25 |
add edi,12 |
stosd |
add [points_count_var],2 |
; init triangles list |
mov edi,[triangles_ptr] |
mov eax,5 |
mov ebx,5+5 |
mov [triangles_count_var],200 ;204 |
mov ecx,100 |
@@: |
stosd ;---- |
mov [edi],ebx ; | |
add edi,4 ; | |
inc eax ; | |
stosd ; |repeat |
mov [edi],ebx ; | |
inc ebx |
add edi,4 |
stosd ; | |
mov [edi],ebx ; | |
add edi,4 ;---- |
loop @b |
mov eax,5 |
mov ebx,[points_count_var] |
sub ebx,2 |
mov dl,2 |
.nx: |
mov ecx,5 |
add [triangles_count_var],ecx |
@@: |
stosd |
add eax,5 |
stosd |
mov dword[edi],ebx |
add edi,4 |
loop @b |
cmp dl,1 |
je @f |
inc ebx |
jmp .lab |
@@: |
dec ebx |
.lab: |
mov ecx,5 |
add [triangles_count_var],ecx |
@@: |
stosd |
add eax,5 |
stosd |
mov dword[edi],ebx |
add edi,4 |
loop @b |
dec dl |
or dl,dl |
jnz .nx |
sub eax,25 |
stosd |
sub eax,50 |
stosd |
mov dword[edi],ebx |
add edi,4 |
stosd |
add eax,50 |
stosd |
inc ebx |
mov dword[edi],ebx |
add edi,4 |
add [triangles_count_var],2 |
mov dword[edi],-1 ; < - end mark |
mov [culling_flag],0 |
mov esp,ebp |
pop ebp |
ret |
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |
/programs/demos/view3ds/asc.inc |
---|
0,0 → 1,815 |
; Files *.asc routines by Maciej Guba |
; Thanks to Reverend for integer/float/ascii conversion examples |
read_asc: |
mov eax,[fptr] |
.find_vert: |
cmp dword[eax],'Vert' |
je @f |
inc eax |
jmp .find_vert |
@@: |
add eax,4 |
cmp dword[eax],'ices' |
jne .find_vert |
add eax,3 |
@@: |
inc eax |
cmp byte[eax],'0' ; search end of ascii number of vertices string |
jb @b |
cmp byte[eax],'9' |
ja @b |
; eax - start ascii number |
@@: |
inc eax |
cmp byte[eax],'0' |
jb .convert1 |
cmp byte[eax],'9' |
ja .convert1 |
jmp @b |
.convert1: |
dec eax |
mov ebx,eax |
push eax |
call ascii_to_integer |
mov [points_count_var],edx |
pop eax |
@@: |
inc eax |
cmp dword[eax],'Face' |
jne @b |
add eax,3 |
@@: |
inc eax |
cmp byte[eax],'0' |
jb @b |
cmp byte[eax],'9' |
ja @b |
; eax - start ascii number |
@@: |
inc eax |
cmp byte[eax],'0' |
jb .convert2 |
cmp byte[eax],'9' |
ja .convert2 |
jmp @b |
; eax - end ascii number |
.convert2: |
dec eax |
mov ebx,eax |
push eax |
call ascii_to_integer |
mov [triangles_count_var],edx |
pop eax |
@@: |
inc eax |
cmp dword[eax],'Vert' |
jnz @b |
inc eax |
mov edi,[points_ptr] |
xor ebx,ebx |
.decode_vertices: |
push ebx |
@@: |
inc eax |
cmp dword[eax],'Vert' |
jne @b |
xor ecx,ecx |
.decode_coord: |
push ecx |
@@: |
inc eax |
mov dl,byte[eax] |
cmp dl,byte[XYZpartices+ecx] |
jne @b |
@@: |
inc eax |
cmp byte[eax],'.' |
je .readF |
cmp byte[eax],'-' |
je .readF |
cmp byte[eax],'0' |
jb @b |
cmp byte[eax],'9' |
ja @b |
.readF: ; read float |
mov esi,eax |
push eax |
push ecx |
call atof ; st0 - desired dword float |
pop ecx |
pop eax |
fstp dword[edi] |
add edi,4 |
pop ecx |
inc ecx |
cmp ecx,3 |
jne .decode_coord |
pop ebx |
inc ebx |
cmp ebx,[points_count_var] |
jne .decode_vertices |
mov dword[edi],-1 |
mov esi,eax |
@@: |
inc esi |
cmp dword[esi],'Face' |
jne @b |
xor edx,edx |
mov edi,[triangles_ptr] |
cld |
.decode_face: |
push edx |
@@: |
inc esi |
cmp dword[esi],'Face' |
jne @b |
@@: |
inc esi |
cmp byte[esi],'0' ; face number start |
jb @b |
cmp byte[esi],'9' |
ja @b |
@@: |
inc esi |
cmp byte[esi],'0' |
jb @f |
cmp byte[esi],'9' ; face number end |
ja @f |
jmp @b |
@@: |
xor ecx,ecx |
.next_vertex_number: |
push ecx |
@@: |
inc esi |
cmp byte[esi],'0' |
jb @b |
cmp byte[esi],'9' |
ja @b |
; eax - start ascii number |
@@: |
inc esi |
cmp byte[esi],'0' |
jb @f |
cmp byte[esi],'9' |
ja @f |
jmp @b |
; eax - end ascii number |
@@: |
dec esi |
mov ebx,esi |
push esi |
call ascii_to_integer |
mov eax,edx |
stosd |
pop esi |
add esi,4 |
pop ecx |
inc ecx |
cmp ecx,3 |
jne .next_vertex_number |
pop edx |
inc edx |
cmp edx,[triangles_count_var] |
jne .decode_face |
mov dword[edi],-1 ;dword[triangles+ebx+2],-1 ; end mark |
mov eax,1 ;-> mark if ok |
ret |
ascii_to_integer: |
; in --- [ebx] -> end of ascii string |
; out -- edx -> desired number |
xor edx,edx |
xor ecx,ecx |
.again: |
movzx eax,byte[ebx] |
sub al,'0' |
cwde |
push edx |
mul dword[convert_muler+ecx] |
pop edx |
add edx,eax |
dec ebx |
cmp byte[ebx],'0' |
jb .end |
cmp byte[ebx],'9' |
ja .end |
add ecx,4 |
jmp .again |
@@: |
.end: |
ret |
;=============================================================================== |
; ASCII to float conversion procedure |
; |
; input: |
; esi - pointer to string |
; |
; output: |
; st0 - number changed into float |
; |
;=============================================================================== |
atof: |
.string equ ebp-4 |
push ebp |
mov ebp,esp |
sub esp,32 |
push eax ecx esi |
mov [.string],esi |
fninit |
fldz |
fldz |
cld |
cmp byte [esi], '-' |
jnz @F |
inc esi |
@@: |
xor eax, eax |
align 4 |
.loop.integer_part: |
lodsb |
cmp al, '.' |
jz .mantisa |
cmp al,'0' |
jb .exit |
cmp al,'9' |
ja .exit |
fimul [i10] |
sub al, '0' |
push eax |
fiadd dword [esp] |
add esp, 4 |
jmp .loop.integer_part |
.mantisa: |
xor ecx, ecx |
xor eax, eax |
cld |
fxch st1 |
@@: |
lodsb |
cmp al,'0' |
jb .exit |
cmp al,'9' |
ja .exit |
cmp ecx,7*4 |
je .exit ; max 7 digits in mantisa |
sub al,'0' |
push eax |
fild dword[esp] |
fidiv dword[convert_muler+4+ecx] |
faddp |
add esp,4 |
add ecx,4 |
jmp @b |
.exit: |
faddp |
mov eax, [.string] |
cmp byte [eax], '-' |
jnz @F |
fchs |
@@: |
cld |
stc ; always returns no error |
pop esi ecx eax |
mov esp,ebp |
pop ebp |
ret |
itoa: ; unsigned dword integer to ascii procedure |
; in eax - variable |
; esi - Pointer to ascii string |
; out esi - desired ascii string |
; edi - end of ascii string - ptr to memory |
.temp_string equ dword[ebp-36] |
.ptr equ dword[ebp-40] |
.var equ dword[ebp-44] |
push ecx |
push ebp |
mov ebp,esp |
sub esp,64 |
mov .var,eax |
mov eax,-1 |
lea edi,.temp_string |
cld |
mov ecx,9 |
rep stosd ; make floor |
mov .ptr,esi |
lea edi,.temp_string |
add edi,34 |
std |
xor eax,eax |
stosb ; mark begin |
mov eax,.var |
mov esi,10 |
@@: |
xor edx,edx |
div esi |
xchg eax,edx |
add al,'0' |
stosb |
xchg eax,edx |
or eax,eax |
jnz @b |
stosb ; mark end |
lea esi,.temp_string |
cld |
@@: |
lodsb |
or al,al |
jnz @b |
mov edi,.ptr |
@@: |
lodsb |
stosb |
or al,al |
jnz @b |
mov esp,ebp |
pop ebp |
pop ecx |
ret |
if 1 |
ftoa_mac: |
; in : esi - pointer to dword float |
; edi - pointer to ascii string |
.ptr_f equ dword[ebp-4] |
.sign equ dword[ebp-8] ; 0 -> less than zero, 1 - otherwise |
.ptr_ascii equ dword[ebp-12] |
.integer equ dword[ebp-20] |
.fraction equ dword[ebp-28] |
.status_orginal equ word[ebp-32] |
.status_changed equ word[ebp-34] |
push ecx |
push ebp |
mov ebp,esp |
sub esp,64 |
fninit |
fnstcw .status_orginal |
mov ax, .status_orginal |
or ax, 0000110000000000b |
mov .status_changed, ax |
fldcw .status_changed |
; -------------------------------- |
; check if signed |
xor eax, eax |
fld dword[esi] |
fst .sign |
test .sign, 80000000h |
setz al |
mov .sign, eax |
mov .ptr_f,esi |
mov .ptr_ascii,edi |
fabs |
fld st0 |
frndint |
fist .integer |
fsubp st1, st0 |
mov eax,.integer |
mov esi,.ptr_ascii |
call itoa |
; edi -> ptr to end of ascii string |
dec edi |
mov al,'.' |
stosb |
mov ecx, 6 ; max 6 digits in fraction part |
.loop: |
fimul [i10] |
fld st0 |
frndint |
fist .fraction |
fsubp st1, st0 |
mov esi,edi |
mov eax,.fraction |
add al,'0' |
stosb |
ftst |
fnstsw ax |
test ax, 0100000000000000b |
jz @F |
test ax, 0000010100000000b |
jz .finish |
@@: |
loop .loop |
if 0 |
fldcw .status_orginal |
fimul [i10] |
fist .fraction |
; mov esi,edi |
mov eax,.fraction |
add al,'0' |
stosb |
; call itoa |
; -------------------------------- |
; restore previous values |
.finish: |
; fstp st0 |
ffree st |
mov eax,.fraction |
mov esi,edi |
; call itoa |
add al,'0' |
stosb |
end if |
.finish: |
ffree st |
cmp .sign,0 |
jnz @f |
mov esi,.ptr_ascii |
dec esi |
mov byte[esi],'-' |
@@: |
mov esp,ebp |
pop ebp |
pop ecx |
ret |
end if |
if 0 |
;=============================================================================== |
; float to ASCII conversion procedure |
; |
; input: |
; buffer - pointer to memory where output will be saved |
; precision - number of digits after dot |
; |
; output: |
; no immediate output |
; |
; notes: |
; separate integer and mantisa part with dot '.' |
; so GOOD 123.456 |
; WRONG 123,456 |
; |
; coded by Reverend // HTB + RAG |
;=============================================================================== |
proc ftoa buffer, precision |
locals |
status_original dw ? |
status_changed dw ? |
integer dd ? |
mantisa dd ? |
signed dd ? |
endl |
push eax ecx;edi ecx |
; -------------------------------- |
; set correct precision |
mov eax, [precision] |
cmp eax, 51 |
jb @F |
mov eax, 51 |
@@: |
mov [precision], eax |
; -------------------------------- |
; change control wortd of fpu to prevent rounding |
fnstcw [status_original] |
mov ax, [status_original] |
or ax, 0000110000000000b |
mov [status_changed], ax |
fldcw [status_changed] |
; -------------------------------- |
; check if signed |
xor eax, eax |
fst [signed] |
test [signed], 80000000h |
setnz al |
mov [signed], eax |
; -------------------------------- |
; cut integer and mantisa separately |
fld st0 |
fld st0 ; st0 = x, st1 = x |
frndint |
fist [integer] ; st0 = x, st1 = x |
fabs |
fsubp st1, st0 ; st0 = mantisa(x) |
; -------------------------------- |
; save integer part in buffer |
; mov edi, [buffer] |
mov esi,[buffer] |
; push [signed] |
; push edi |
; push 10 |
; push [integer] |
mov eax,[integer] |
call itoa |
; add edi, eax |
mov al, '.' |
stosb |
mov esi,edi |
; -------------------------------- |
; save mantisa part in buffer |
mov ecx, [precision] |
dec ecx |
.loop: |
fimul [i10] |
fld st0 |
frndint |
fist [mantisa] |
fsubp st1, st0 |
; push 0 |
; push edi |
; push 10 |
; push [mantisa] |
mov esi,edi |
mov eax,[mantisa] |
call itoa |
; add edi, eax |
ftst |
fnstsw ax |
test ax, 0100000000000000b |
jz @F |
test ax, 0000010100000000b |
jz .finish |
@@: |
loop .loop |
fldcw [status_original] |
fimul [i10] |
fist [mantisa] |
; push 0 |
; push edi |
; push 10 |
; push [mantisa] |
mov esi,edi |
mov eax,[mantisa] |
call itoa |
; -------------------------------- |
; restore previous values |
.finish: |
fstp st0 |
cmp [signed],1 |
jnz @f |
mov byte[buffer],'-' |
@@: |
stc |
pop ecx eax ;edi eax |
ret |
endp |
end if |
if 0 |
write_asc: |
.counter equ dword[ebp-4] |
push ebp |
mov ebp,esp |
sub esp,64 |
fninit |
mov edi,asc_file_buffer |
mov esi,asc_main_header |
cld |
@@: |
lodsb |
cmp al,1 |
jz @f |
stosb |
jmp @b |
@@: |
mov esi,asc_info_header |
@@: |
lodsb |
cmp al,1 |
jz @f |
stosb |
jmp @b |
@@: |
push esi ; -> position in header info |
movzx eax,[points_count_var] |
mov esi,edi |
call itoa ; unsigned dword integer to ascii procedure |
pop esi |
inc esi |
@@: |
lodsb |
cmp al,1 |
jz @f |
stosb |
jmp @b |
@@: |
push esi |
movzx eax,[triangles_count_var] |
mov esi,edi |
call itoa |
pop esi |
inc esi |
@@: |
lodsb |
cmp al,1 |
jz @f |
stosb |
jmp @b |
@@: |
;============================================================= |
;================vertex list parser=========================== |
;============================================================= |
xor ecx,ecx |
.again_vertex: |
push ecx |
mov esi,asc_one_vertex_formula |
@@: |
lodsb |
cmp al,1 |
jz @f |
stosb |
jmp @b |
@@: |
mov eax,ecx |
; push ecx |
push esi |
mov esi,edi |
call itoa |
pop esi |
; pop ecx |
inc esi |
xor ebx,ebx |
.next_vertex_coef: |
push ebx |
@@: |
lodsb |
cmp al,1 |
jz @f |
stosb |
jmp @b |
@@: |
; int3 |
push esi |
lea esi,[ecx*3] |
shl esi,2 |
add esi,points_r |
add esi,ebx |
; int3 |
call ftoa_mac |
; std |
; fld dword[esi] |
; pushad |
; stdcall ftoa, edi, 30 |
; popad |
; add edi,20 |
pop esi |
pop ebx |
add ebx,4 |
cmp ebx,12 |
jnz .next_vertex_coef |
@@: |
lodsb |
cmp al,1 |
jz @f |
stosb |
jmp @b |
@@: |
pop ecx |
inc ecx |
cmp cx,[points_count_var] |
jnz .again_vertex |
; mov edi,[temp_edi] |
mov esi,asc_face_list_header |
@@: |
lodsb |
cmp al,1 ; all face header |
jz @f |
stosb |
jmp @b |
@@: |
;===================================== |
; ==============face list parser====== |
;===================================== |
xor ecx,ecx |
.again_face: |
push ecx |
mov .counter,ecx |
mov esi,asc_one_face_formula |
@@: |
lodsb |
cmp al,1 |
jz @f |
stosb |
jmp @b |
@@: |
mov eax,ecx |
push esi |
mov esi,edi |
call itoa |
pop esi |
inc esi |
@@: |
lodsb |
cmp al,1 |
jz @f |
stosb |
jmp @b |
@@: |
xor ebx,ebx |
.next_face_index: |
push ebx |
mov ecx,.counter |
lea ecx,[ecx*3] |
add ecx,ecx |
movzx eax,word[triangles+ecx+ebx] |
push esi |
mov esi,edi |
call itoa |
pop esi |
@@: |
lodsb |
cmp al,1 |
jz @f |
stosb |
jmp @b |
@@: |
pop ebx |
add ebx,2 |
cmp ebx,6 |
jnz .next_face_index |
; push esi |
mov esi,asc_material |
@@: |
lodsb |
cmp al,1 |
jz @f |
stosb |
jmp @b |
@@: |
; pop esi |
pop ecx |
inc ecx |
cmp cx,[triangles_count_var] |
jnz .again_face |
; write file |
sub edi,asc_file_buffer |
; mov [file_buffer+2],edi |
mov [FileSize],edi |
invoke CreateFile,asc_file_name, GENERIC_WRITE, 0, 0,CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 |
mov [hfile],eax |
invoke WriteFile,eax,asc_file_buffer,[FileSize], byteswritten, 0 |
invoke CloseHandle,[hfile] |
mov esp,ebp |
pop ebp |
ret |
end if |
if 0 |
asc_file_buffer: |
rd 65536 |
ascii_string rb 50 |
ftoa_muler dd 1000000000 |
file_size dd ? |
file_handle dd ? |
end if |
if 0 |
convert_muler: |
dd 1, 10, 100, 1000, 10000 |
XYZpartices: |
db 'X','Y','Z' |
i10 dw 10 |
points_count_var dd ? |
triangles_count_var dd ? |
points rb 100 |
triangles rb 100 |
asc_file: |
file "2TORUS.ASC" |
end if |
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |
/programs/demos/view3ds/asc_objects/2TORUS.ASC |
---|
0,0 → 1,3894 |
Ambient light color: Red=0.039216 Green=0.039216 Blue=0.039216 |
Named object: "Object01" |
Tri-mesh, Vertices: 512 Faces: 1024 |
Vertex list: |
Vertex 0: X: -99.192619 Y: 226.066895 Z: -0.00002 |
Vertex 1: X: -97.418694 Y: 223.674133 Z: 14.974417 |
Vertex 2: X: -92.366959 Y: 216.860184 Z: 27.66913 |
Vertex 3: X: -84.806511 Y: 206.662369 Z: 36.15147 |
Vertex 4: X: -75.888351 Y: 194.63324 Z: 39.130074 |
Vertex 5: X: -66.9702 Y: 182.604095 Z: 36.15147 |
Vertex 6: X: -59.409748 Y: 172.406281 Z: 27.669136 |
Vertex 7: X: -54.358021 Y: 165.592316 Z: 14.974428 |
Vertex 8: X: -52.584087 Y: 163.19957 Z: -0.000005 |
Vertex 9: X: -54.358017 Y: 165.592316 Z: -14.974438 |
Vertex 10: X: -59.409744 Y: 172.406265 Z: -27.669153 |
Vertex 11: X: -66.970192 Y: 182.60408 Z: -36.151497 |
Vertex 12: X: -75.888351 Y: 194.633224 Z: -39.1301 |
Vertex 13: X: -84.806519 Y: 206.662369 Z: -36.151497 |
Vertex 14: X: -92.366966 Y: 216.860184 Z: -27.669159 |
Vertex 15: X: -97.418694 Y: 223.674149 Z: -14.974438 |
Vertex 16: X: -142.843033 Y: 177.923004 Z: -0.000013 |
Vertex 17: X: -140.288467 Y: 176.391266 Z: 14.974423 |
Vertex 18: X: -133.013687 Y: 172.029205 Z: 27.669138 |
Vertex 19: X: -122.126213 Y: 165.5009 Z: 36.151478 |
Vertex 20: X: -109.283562 Y: 157.800262 Z: 39.130077 |
Vertex 21: X: -96.440903 Y: 150.099609 Z: 36.151474 |
Vertex 22: X: -85.553429 Y: 143.57132 Z: 27.669144 |
Vertex 23: X: -78.278648 Y: 139.209259 Z: 14.974431 |
Vertex 24: X: -75.724083 Y: 137.67749 Z: -0.000001 |
Vertex 25: X: -78.278648 Y: 139.209244 Z: -14.974435 |
Vertex 26: X: -85.553421 Y: 143.57132 Z: -27.669147 |
Vertex 27: X: -96.440903 Y: 150.099594 Z: -36.151489 |
Vertex 28: X: -109.283562 Y: 157.800247 Z: -39.130096 |
Vertex 29: X: -122.126221 Y: 165.5009 Z: -36.151493 |
Vertex 30: X: -133.013702 Y: 172.02919 Z: -27.669153 |
Vertex 31: X: -140.288483 Y: 176.391266 Z: -14.97443 |
Vertex 32: X: -164.746902 Y: 116.739586 Z: -0.000004 |
Vertex 33: X: -161.800613 Y: 116.302017 Z: 14.974433 |
Vertex 34: X: -153.410309 Y: 115.055931 Z: 27.669147 |
Vertex 35: X: -140.853317 Y: 113.191032 Z: 36.151485 |
Vertex 36: X: -126.041344 Y: 110.991234 Z: 39.130085 |
Vertex 37: X: -111.22937 Y: 108.791435 Z: 36.151482 |
Vertex 38: X: -98.672386 Y: 106.926529 Z: 27.669147 |
Vertex 39: X: -90.282074 Y: 105.680443 Z: 14.974437 |
Vertex 40: X: -87.335785 Y: 105.242874 Z: 0.000004 |
Vertex 41: X: -90.282066 Y: 105.680443 Z: -14.974429 |
Vertex 42: X: -98.672371 Y: 106.926521 Z: -27.669142 |
Vertex 43: X: -111.229362 Y: 108.79142 Z: -36.151485 |
Vertex 44: X: -126.041344 Y: 110.991219 Z: -39.130089 |
Vertex 45: X: -140.853333 Y: 113.191025 Z: -36.151485 |
Vertex 46: X: -153.410324 Y: 115.055923 Z: -27.669144 |
Vertex 47: X: -161.800629 Y: 116.302017 Z: -14.974421 |
Vertex 48: X: -161.569565 Y: 51.831223 Z: 0.000006 |
Vertex 49: X: -158.680099 Y: 52.554459 Z: 14.974442 |
Vertex 50: X: -150.451599 Y: 54.614059 Z: 27.669155 |
Vertex 51: X: -138.136795 Y: 57.696468 Z: 36.151493 |
Vertex 52: X: -123.610481 Y: 61.332413 Z: 39.130089 |
Vertex 53: X: -109.084167 Y: 64.968361 Z: 36.151485 |
Vertex 54: X: -96.769363 Y: 68.050766 Z: 27.669153 |
Vertex 55: X: -88.540871 Y: 70.110359 Z: 14.974442 |
Page 1 |
Vertex 56: X: -85.651405 Y: 70.833595 Z: 0.000009 |
Vertex 57: X: -88.540871 Y: 70.110359 Z: -14.974424 |
Vertex 58: X: -96.769356 Y: 68.050766 Z: -27.669136 |
Vertex 59: X: -109.084167 Y: 64.968353 Z: -36.151478 |
Vertex 60: X: -123.610481 Y: 61.332401 Z: -39.130081 |
Vertex 61: X: -138.136795 Y: 57.696453 Z: -36.151478 |
Vertex 62: X: -150.451614 Y: 54.614052 Z: -27.669134 |
Vertex 63: X: -158.680099 Y: 52.554455 Z: -14.974411 |
Vertex 64: X: -133.794724 Y: -6.920366 Z: 0.000015 |
Vertex 65: X: -131.401978 Y: -5.146431 Z: 14.97445 |
Vertex 66: X: -124.588013 Y: -0.094702 Z: 27.669165 |
Vertex 67: X: -114.390198 Y: 7.465739 Z: 36.151497 |
Vertex 68: X: -102.361053 Y: 16.383898 Z: 39.130096 |
Vertex 69: X: -90.331909 Y: 25.30205 Z: 36.151493 |
Vertex 70: X: -80.134094 Y: 32.862492 Z: 27.669157 |
Vertex 71: X: -73.320129 Y: 37.914215 Z: 14.974447 |
Vertex 72: X: -70.927383 Y: 39.688148 Z: 0.000014 |
Vertex 73: X: -73.320129 Y: 37.914215 Z: -14.974419 |
Vertex 74: X: -80.134087 Y: 32.862488 Z: -27.669132 |
Vertex 75: X: -90.331902 Y: 25.30204 Z: -36.151474 |
Vertex 76: X: -102.361053 Y: 16.383888 Z: -39.130077 |
Vertex 77: X: -114.390198 Y: 7.465729 Z: -36.15147 |
Vertex 78: X: -124.58802 Y: -0.094717 Z: -27.669127 |
Vertex 79: X: -131.401978 Y: -5.146442 Z: -14.974403 |
Vertex 80: X: -85.650818 Y: -50.570816 Z: 0.000021 |
Vertex 81: X: -84.119064 Y: -48.016247 Z: 14.974457 |
Vertex 82: X: -79.756996 Y: -40.741467 Z: 27.66917 |
Vertex 83: X: -73.228699 Y: -29.853992 Z: 36.151505 |
Vertex 84: X: -65.528053 Y: -17.011341 Z: 39.1301 |
Vertex 85: X: -57.827404 Y: -4.168683 Z: 36.151497 |
Vertex 86: X: -51.299114 Y: 6.718789 Z: 27.669163 |
Vertex 87: X: -46.937046 Y: 13.993567 Z: 14.97445 |
Vertex 88: X: -45.405293 Y: 16.54813 Z: 0.000017 |
Vertex 89: X: -46.937046 Y: 13.993564 Z: -14.974416 |
Vertex 90: X: -51.299107 Y: 6.71879 Z: -27.669127 |
Vertex 91: X: -57.827404 Y: -4.168693 Z: -36.15147 |
Vertex 92: X: -65.528053 Y: -17.011351 Z: -39.130074 |
Vertex 93: X: -73.228706 Y: -29.85401 Z: -36.151466 |
Vertex 94: X: -79.756996 Y: -40.741489 Z: -27.669121 |
Vertex 95: X: -84.119064 Y: -48.016266 Z: -14.974397 |
Vertex 96: X: -24.467348 Y: -72.474686 Z: 0.000024 |
Vertex 97: X: -24.029781 Y: -69.528389 Z: 14.97446 |
Vertex 98: X: -22.783695 Y: -61.138088 Z: 27.669172 |
Vertex 99: X: -20.918798 Y: -48.581097 Z: 36.151505 |
Vertex 100: X: -18.719 Y: -33.769123 Z: 39.130104 |
Vertex 101: X: -16.519203 Y: -18.95715 Z: 36.151497 |
Vertex 102: X: -14.654305 Y: -6.400167 Z: 27.669165 |
Vertex 103: X: -13.40822 Y: 1.990143 Z: 14.974452 |
Vertex 104: X: -12.970654 Y: 4.93643 Z: 0.000019 |
Vertex 105: X: -13.40822 Y: 1.990146 Z: -14.974414 |
Vertex 106: X: -14.654305 Y: -6.400159 Z: -27.669125 |
Vertex 107: X: -16.519203 Y: -18.957151 Z: -36.15147 |
Vertex 108: X: -18.719 Y: -33.769131 Z: -39.13007 |
Vertex 109: X: -20.918798 Y: -48.58112 Z: -36.151463 |
Vertex 110: X: -22.783697 Y: -61.138111 Z: -27.669117 |
Vertex 111: X: -24.029781 Y: -69.528412 Z: -14.974394 |
Vertex 112: X: 40.441055 Y: -69.297318 Z: 0.000024 |
Vertex 113: X: 39.717819 Y: -66.407845 Z: 14.974459 |
Vertex 114: X: 37.658218 Y: -58.179363 Z: 27.669172 |
Vertex 115: X: 34.575806 Y: -45.864559 Z: 36.151505 |
Vertex 116: X: 30.939854 Y: -31.338243 Z: 39.130104 |
Page 2 |
Vertex 117: X: 27.3039 Y: -16.811939 Z: 36.151497 |
Vertex 118: X: 24.221489 Y: -4.497129 Z: 27.669165 |
Vertex 119: X: 22.161888 Y: 3.731354 Z: 14.974452 |
Vertex 120: X: 21.438652 Y: 6.620817 Z: 0.000019 |
Vertex 121: X: 22.161886 Y: 3.731357 Z: -14.974415 |
Vertex 122: X: 24.221487 Y: -4.497129 Z: -27.669125 |
Vertex 123: X: 27.3039 Y: -16.811941 Z: -36.15147 |
Vertex 124: X: 30.939854 Y: -31.338255 Z: -39.13007 |
Vertex 125: X: 34.575809 Y: -45.864567 Z: -36.151466 |
Vertex 126: X: 37.658222 Y: -58.179386 Z: -27.669119 |
Vertex 127: X: 39.717823 Y: -66.407867 Z: -14.974395 |
Vertex 128: X: 99.192673 Y: -41.52243 Z: 0.00002 |
Vertex 129: X: 97.418739 Y: -39.129681 Z: 14.974456 |
Vertex 130: X: 92.367004 Y: -32.315723 Z: 27.669168 |
Vertex 131: X: 84.806557 Y: -22.117916 Z: 36.151501 |
Vertex 132: X: 75.88839 Y: -10.088779 Z: 39.1301 |
Vertex 133: X: 66.97023 Y: 1.940364 Z: 36.151497 |
Vertex 134: X: 59.409779 Y: 12.138169 Z: 27.669163 |
Vertex 135: X: 54.358047 Y: 18.952124 Z: 14.974449 |
Vertex 136: X: 52.584114 Y: 21.344868 Z: 0.000016 |
Vertex 137: X: 54.358044 Y: 18.95212 Z: -14.974417 |
Vertex 138: X: 59.409775 Y: 12.138169 Z: -27.669127 |
Vertex 139: X: 66.97023 Y: 1.940354 Z: -36.15147 |
Vertex 140: X: 75.88839 Y: -10.08879 Z: -39.130074 |
Vertex 141: X: 84.806557 Y: -22.117933 Z: -36.151466 |
Vertex 142: X: 92.367012 Y: -32.315739 Z: -27.669121 |
Vertex 143: X: 97.418747 Y: -39.1297 Z: -14.974399 |
Vertex 144: X: 142.843079 Y: 6.621488 Z: 0.000013 |
Vertex 145: X: 140.288513 Y: 8.153243 Z: 14.974448 |
Vertex 146: X: 133.013733 Y: 12.515306 Z: 27.669163 |
Vertex 147: X: 122.126259 Y: 19.043596 Z: 36.151497 |
Vertex 148: X: 109.2836 Y: 26.744234 Z: 39.130096 |
Vertex 149: X: 96.440933 Y: 34.444874 Z: 36.151489 |
Vertex 150: X: 85.553459 Y: 40.97316 Z: 27.669157 |
Vertex 151: X: 78.278679 Y: 45.335217 Z: 14.974446 |
Vertex 152: X: 75.724113 Y: 46.86697 Z: 0.000013 |
Vertex 153: X: 78.278671 Y: 45.335213 Z: -14.97442 |
Vertex 154: X: 85.553452 Y: 40.973156 Z: -27.669134 |
Vertex 155: X: 96.440933 Y: 34.444866 Z: -36.151474 |
Vertex 156: X: 109.2836 Y: 26.744223 Z: -39.130077 |
Vertex 157: X: 122.126266 Y: 19.043579 Z: -36.151474 |
Vertex 158: X: 133.013748 Y: 12.51529 Z: -27.669128 |
Vertex 159: X: 140.288528 Y: 8.153232 Z: -14.974405 |
Vertex 160: X: 164.746933 Y: 67.804962 Z: 0.000004 |
Vertex 161: X: 161.800644 Y: 68.242531 Z: 14.974439 |
Vertex 162: X: 153.410324 Y: 69.488617 Z: 27.669153 |
Vertex 163: X: 140.853333 Y: 71.353508 Z: 36.151489 |
Vertex 164: X: 126.041359 Y: 73.553291 Z: 39.130089 |
Vertex 165: X: 111.229378 Y: 75.753082 Z: 36.151485 |
Vertex 166: X: 98.672394 Y: 77.617973 Z: 27.669151 |
Vertex 167: X: 90.282082 Y: 78.864044 Z: 14.974441 |
Vertex 168: X: 87.3358 Y: 79.301613 Z: 0.000008 |
Vertex 169: X: 90.282082 Y: 78.864044 Z: -14.974425 |
Vertex 170: X: 98.672386 Y: 77.617966 Z: -27.669138 |
Vertex 171: X: 111.229378 Y: 75.753067 Z: -36.151482 |
Vertex 172: X: 126.041359 Y: 73.553276 Z: -39.130085 |
Vertex 173: X: 140.853348 Y: 71.3535 Z: -36.151482 |
Vertex 174: X: 153.410339 Y: 69.488609 Z: -27.669138 |
Vertex 175: X: 161.800644 Y: 68.242531 Z: -14.974415 |
Vertex 176: X: 161.569504 Y: 132.713364 Z: -0.000006 |
Vertex 177: X: 158.680038 Y: 131.990128 Z: 14.974429 |
Page 3 |
Vertex 178: X: 150.451553 Y: 129.930527 Z: 27.669144 |
Vertex 179: X: 138.136749 Y: 126.848099 Z: 36.151482 |
Vertex 180: X: 123.610443 Y: 123.212143 Z: 39.130081 |
Vertex 181: X: 109.084137 Y: 119.57618 Z: 36.151478 |
Vertex 182: X: 96.769333 Y: 116.493759 Z: 27.669146 |
Vertex 183: X: 88.540848 Y: 114.434151 Z: 14.974436 |
Vertex 184: X: 85.651382 Y: 113.710915 Z: 0.000003 |
Vertex 185: X: 88.54084 Y: 114.434151 Z: -14.97443 |
Vertex 186: X: 96.769325 Y: 116.493752 Z: -27.669144 |
Vertex 187: X: 109.084137 Y: 119.576172 Z: -36.151485 |
Vertex 188: X: 123.610443 Y: 123.212135 Z: -39.130089 |
Vertex 189: X: 138.136749 Y: 126.848091 Z: -36.151489 |
Vertex 190: X: 150.451569 Y: 129.930527 Z: -27.669146 |
Vertex 191: X: 158.680054 Y: 131.990128 Z: -14.974424 |
Vertex 192: X: 133.794586 Y: 191.464966 Z: -0.000015 |
Vertex 193: X: 131.40184 Y: 189.691025 Z: 14.974422 |
Vertex 194: X: 124.587891 Y: 184.639282 Z: 27.669136 |
Vertex 195: X: 114.390083 Y: 177.078827 Z: 36.151474 |
Vertex 196: X: 102.360954 Y: 168.16066 Z: 39.130077 |
Vertex 197: X: 90.331818 Y: 159.242493 Z: 36.151474 |
Vertex 198: X: 80.134018 Y: 151.682037 Z: 27.669142 |
Vertex 199: X: 73.320061 Y: 146.630295 Z: 14.97443 |
Vertex 200: X: 70.927315 Y: 144.856369 Z: -0.000002 |
Vertex 201: X: 73.320053 Y: 146.630295 Z: -14.974436 |
Vertex 202: X: 80.13401 Y: 151.682037 Z: -27.669147 |
Vertex 203: X: 90.331818 Y: 159.242477 Z: -36.151493 |
Vertex 204: X: 102.360954 Y: 168.160645 Z: -39.130096 |
Vertex 205: X: 114.390091 Y: 177.078812 Z: -36.151493 |
Vertex 206: X: 124.587898 Y: 184.639282 Z: -27.669155 |
Vertex 207: X: 131.401855 Y: 189.691025 Z: -14.974432 |
Vertex 208: X: 85.650635 Y: 235.115356 Z: -0.000021 |
Vertex 209: X: 84.118889 Y: 232.560791 Z: 14.974415 |
Vertex 210: X: 79.756828 Y: 225.286011 Z: 27.66913 |
Vertex 211: X: 73.228546 Y: 214.398529 Z: 36.15147 |
Vertex 212: X: 65.527916 Y: 201.555847 Z: 39.130074 |
Vertex 213: X: 57.827286 Y: 188.713196 Z: 36.15147 |
Vertex 214: X: 51.299004 Y: 177.825714 Z: 27.669136 |
Vertex 215: X: 46.936947 Y: 170.550919 Z: 14.974427 |
Vertex 216: X: 45.405197 Y: 167.996353 Z: -0.000005 |
Vertex 217: X: 46.936947 Y: 170.550919 Z: -14.974439 |
Vertex 218: X: 51.299 Y: 177.825684 Z: -27.669153 |
Vertex 219: X: 57.827282 Y: 188.713165 Z: -36.151497 |
Vertex 220: X: 65.527916 Y: 201.555832 Z: -39.1301 |
Vertex 221: X: 73.228554 Y: 214.398514 Z: -36.151501 |
Vertex 222: X: 79.756836 Y: 225.285995 Z: -27.669161 |
Vertex 223: X: 84.118889 Y: 232.560776 Z: -14.974439 |
Vertex 224: X: 24.46714 Y: 257.019135 Z: -0.000024 |
Vertex 225: X: 24.029575 Y: 254.072845 Z: 14.974412 |
Vertex 226: X: 22.783503 Y: 245.682556 Z: 27.669127 |
Vertex 227: X: 20.918619 Y: 233.125549 Z: 36.151466 |
Vertex 228: X: 18.718842 Y: 218.313568 Z: 39.13007 |
Vertex 229: X: 16.519062 Y: 203.501587 Z: 36.15147 |
Vertex 230: X: 14.654181 Y: 190.944611 Z: 27.669134 |
Vertex 231: X: 13.408107 Y: 182.554291 Z: 14.974425 |
Vertex 232: X: 12.970543 Y: 179.608002 Z: -0.000007 |
Vertex 233: X: 13.408106 Y: 182.554291 Z: -14.974441 |
Vertex 234: X: 14.65418 Y: 190.944595 Z: -27.669155 |
Vertex 235: X: 16.519062 Y: 203.501572 Z: -36.151497 |
Vertex 236: X: 18.718842 Y: 218.313553 Z: -39.130104 |
Vertex 237: X: 20.918621 Y: 233.125534 Z: -36.151501 |
Vertex 238: X: 22.783503 Y: 245.682541 Z: -27.669163 |
Page 4 |
Vertex 239: X: 24.029577 Y: 254.072861 Z: -14.974442 |
Vertex 240: X: -40.441261 Y: 253.841705 Z: -0.000024 |
Vertex 241: X: -39.718021 Y: 250.95224 Z: 14.974413 |
Vertex 242: X: -37.658409 Y: 242.723755 Z: 27.669128 |
Vertex 243: X: -34.575981 Y: 230.408936 Z: 36.15147 |
Vertex 244: X: -30.94001 Y: 215.882629 Z: 39.13007 |
Vertex 245: X: -27.304039 Y: 201.356323 Z: 36.15147 |
Vertex 246: X: -24.221613 Y: 189.041534 Z: 27.669134 |
Vertex 247: X: -22.162001 Y: 180.813049 Z: 14.974426 |
Vertex 248: X: -21.438761 Y: 177.923584 Z: -0.000007 |
Vertex 249: X: -22.161999 Y: 180.813049 Z: -14.974441 |
Vertex 250: X: -24.221611 Y: 189.041504 Z: -27.669155 |
Vertex 251: X: -27.304039 Y: 201.356308 Z: -36.151497 |
Vertex 252: X: -30.940012 Y: 215.882614 Z: -39.130104 |
Vertex 253: X: -34.575985 Y: 230.40892 Z: -36.151501 |
Vertex 254: X: -37.658413 Y: 242.72374 Z: -27.669163 |
Vertex 255: X: -39.718025 Y: 250.952225 Z: -14.974441 |
Vertex 256: X: -3.744166 Y: 50.84124 Z: 190.711624 |
Vertex 257: X: 8.661436 Y: 49.304207 Z: 188.848938 |
Vertex 258: X: 19.198971 Y: 44.977974 Z: 183.373962 |
Vertex 259: X: 26.264196 Y: 38.521187 Z: 175.12027 |
Vertex 260: X: 28.7815 Y: 30.916832 Z: 165.344376 |
Vertex 261: X: 26.367643 Y: 23.322603 Z: 155.534576 |
Vertex 262: X: 19.390108 Y: 16.89464 Z: 147.184341 |
Vertex 263: X: 8.911171 Y: 12.611558 Z: 141.564896 |
Vertex 264: X: -3.473847 Y: 11.125428 Z: 139.531769 |
Vertex 265: X: -15.879449 Y: 12.662461 Z: 141.39447 |
Vertex 266: X: -26.416985 Y: 16.98868 Z: 146.869431 |
Vertex 267: X: -33.482216 Y: 23.445467 Z: 155.123123 |
Vertex 268: X: -35.999519 Y: 31.049828 Z: 164.899017 |
Vertex 269: X: -33.585655 Y: 38.644066 Z: 174.708817 |
Vertex 270: X: -26.608126 Y: 45.072014 Z: 183.059067 |
Vertex 271: X: -16.129177 Y: 49.355095 Z: 188.678497 |
Vertex 272: X: -4.168803 Y: -26.512711 Z: 229.380432 |
Vertex 273: X: 8.241518 Y: -27.189255 Z: 227.08757 |
Vertex 274: X: 18.792505 Y: -29.064959 Z: 220.387619 |
Vertex 275: X: 25.877867 Y: -31.854296 Z: 210.300568 |
Vertex 276: X: 28.418921 Y: -35.132587 Z: 198.362106 |
Vertex 277: X: 26.028807 Y: -38.400761 Z: 186.389755 |
Vertex 278: X: 19.071413 Y: -41.161263 Z: 176.206161 |
Vertex 279: X: 8.605921 Y: -42.993843 Z: 169.361725 |
Vertex 280: X: -3.774371 Y: -43.619469 Z: 166.898438 |
Vertex 281: X: -16.184692 Y: -42.94294 Z: 169.191299 |
Vertex 282: X: -26.73568 Y: -41.067223 Z: 175.891251 |
Vertex 283: X: -33.821041 Y: -38.277882 Z: 185.978302 |
Vertex 284: X: -36.362103 Y: -34.999592 Z: 197.916748 |
Vertex 285: X: -33.971985 Y: -31.731417 Z: 209.88913 |
Vertex 286: X: -27.014584 Y: -28.970919 Z: 220.072708 |
Vertex 287: X: -16.549088 Y: -27.138351 Z: 226.917145 |
Vertex 288: X: -4.38799 Y: -112.777107 Z: 235.50412 |
Vertex 289: X: 8.024771 Y: -112.493996 Z: 233.143143 |
Vertex 290: X: 18.582701 Y: -111.636909 Z: 226.249176 |
Vertex 291: X: 25.678453 Y: -110.336349 Z: 215.871796 |
Vertex 292: X: 28.231764 Y: -108.790268 Z: 203.590866 |
Vertex 293: X: 25.853918 Y: -107.234085 Z: 191.276031 |
Vertex 294: X: 18.906897 Y: -105.904648 Z: 180.802124 |
Vertex 295: X: 8.448368 Y: -105.00444 Z: 173.763702 |
Vertex 296: X: -3.929493 Y: -104.670425 Z: 171.232285 |
Vertex 297: X: -16.342251 Y: -104.953537 Z: 173.593262 |
Vertex 298: X: -26.900183 Y: -105.810593 Z: 180.487213 |
Vertex 299: X: -33.995941 Y: -107.111191 Z: 190.864578 |
Page 5 |
Vertex 300: X: -36.549255 Y: -108.657303 Z: 203.145508 |
Vertex 301: X: -34.171394 Y: -110.213486 Z: 215.460358 |
Vertex 302: X: -27.224392 Y: -111.542885 Z: 225.934265 |
Vertex 303: X: -16.765835 Y: -112.443092 Z: 232.972702 |
Vertex 304: X: -4.368368 Y: -194.819016 Z: 208.15036 |
Vertex 305: X: 8.044176 Y: -193.623245 Z: 206.093674 |
Vertex 306: X: 18.601492 Y: -190.16716 Z: 200.066284 |
Vertex 307: X: 25.696314 Y: -184.976852 Z: 190.985779 |
Vertex 308: X: 28.248526 Y: -178.842545 Z: 180.234604 |
Vertex 309: X: 25.869574 Y: -172.698105 Z: 169.449554 |
Vertex 310: X: 18.921635 Y: -167.478958 Z: 160.272522 |
Vertex 311: X: 8.462477 Y: -163.979721 Z: 154.100647 |
Vertex 312: X: -3.915599 Y: -162.733078 Z: 151.873505 |
Vertex 313: X: -16.328144 Y: -163.928818 Z: 153.930206 |
Vertex 314: X: -26.88546 Y: -167.384933 Z: 159.957596 |
Vertex 315: X: -33.980282 Y: -172.575241 Z: 169.038101 |
Vertex 316: X: -36.532501 Y: -178.709549 Z: 179.789246 |
Vertex 317: X: -34.153542 Y: -184.853989 Z: 190.574341 |
Vertex 318: X: -27.205605 Y: -190.073105 Z: 199.751358 |
Vertex 319: X: -16.746429 Y: -193.572372 Z: 205.923248 |
Vertex 320: X: -4.112908 Y: -260.148193 Z: 151.483536 |
Vertex 321: X: 8.296793 Y: -258.225708 Z: 150.05719 |
Vertex 322: X: 18.84601 Y: -252.700027 Z: 145.824951 |
Vertex 323: X: 25.928717 Y: -244.412369 Z: 139.431122 |
Vertex 324: X: 28.46665 Y: -234.624527 Z: 131.84906 |
Vertex 325: X: 26.073408 Y: -224.826492 Z: 124.233154 |
Vertex 326: X: 19.113367 Y: -216.510025 Z: 117.742767 |
Vertex 327: X: 8.646107 Y: -210.941177 Z: 113.366051 |
Vertex 328: X: -3.734814 Y: -208.967789 Z: 111.769279 |
Vertex 329: X: -16.144514 Y: -210.890274 Z: 113.195625 |
Vertex 330: X: -26.693726 Y: -216.41597 Z: 117.427841 |
Vertex 331: X: -33.776447 Y: -224.703629 Z: 123.821701 |
Vertex 332: X: -36.314369 Y: -234.491531 Z: 131.403702 |
Vertex 333: X: -33.921127 Y: -244.289505 Z: 139.019669 |
Vertex 334: X: -26.961082 Y: -252.605972 Z: 145.510056 |
Vertex 335: X: -16.493814 Y: -258.174805 Z: 149.88678 |
Vertex 336: X: -3.660517 Y: -298.818939 Z: 74.130638 |
Vertex 337: X: 8.74415 Y: -296.466339 Z: 73.564781 |
Vertex 338: X: 19.279045 Y: -289.715546 Z: 71.783012 |
Vertex 339: X: 26.340307 Y: -279.594452 Z: 69.056572 |
Vertex 340: X: 28.852926 Y: -267.64389 Z: 65.800529 |
Vertex 341: X: 26.434393 Y: -255.683197 Z: 62.510635 |
Vertex 342: X: 19.452902 Y: -245.533295 Z: 59.687668 |
Vertex 343: X: 8.9713 Y: -238.73941 Z: 57.761398 |
Vertex 344: X: -3.414645 Y: -236.335846 Z: 57.025131 |
Vertex 345: X: -15.819319 Y: -238.688507 Z: 57.590958 |
Vertex 346: X: -26.354193 Y: -245.43924 Z: 59.372757 |
Vertex 347: X: -33.415459 Y: -255.560333 Z: 62.099197 |
Vertex 348: X: -35.928097 Y: -267.510956 Z: 65.355186 |
Vertex 349: X: -33.509544 Y: -279.471649 Z: 68.645164 |
Vertex 350: X: -26.528048 Y: -289.621552 Z: 71.468102 |
Vertex 351: X: -16.046448 Y: -296.415436 Z: 73.394341 |
Vertex 352: X: -3.080057 Y: -304.943939 Z: -12.132051 |
Vertex 353: X: 9.318155 Y: -302.523163 Z: -11.738283 |
Vertex 354: X: 19.834658 Y: -295.578339 Z: -10.787296 |
Vertex 355: X: 26.868391 Y: -285.166901 Z: -9.423924 |
Vertex 356: X: 29.348547 Y: -272.873749 Z: -7.855628 |
Vertex 357: X: 26.897551 Y: -260.570526 Z: -6.321298 |
Vertex 358: X: 19.888527 Y: -250.130219 Z: -5.054484 |
Vertex 359: X: 9.388556 Y: -243.142303 Z: -4.247936 |
Vertex 360: X: -3.00385 Y: -240.670624 Z: -4.024609 |
Page 6 |
Vertex 361: X: -15.40205 Y: -243.0914 Z: -4.418377 |
Vertex 362: X: -25.918552 Y: -250.036224 Z: -5.369395 |
Vertex 363: X: -32.952286 Y: -260.447662 Z: -6.732736 |
Vertex 364: X: -35.432457 Y: -272.740814 Z: -8.301032 |
Vertex 365: X: -32.981461 Y: -285.044037 Z: -9.835362 |
Vertex 366: X: -25.972435 Y: -295.484283 Z: -11.102177 |
Vertex 367: X: -15.472451 Y: -302.47226 Z: -11.908724 |
Vertex 368: X: -2.459905 Y: -277.590729 Z: -94.171783 |
Vertex 369: X: 9.93141 Y: -275.474152 Z: -92.865356 |
Vertex 370: X: 20.428261 Y: -269.395905 Z: -89.31543 |
Vertex 371: X: 27.4326 Y: -260.281342 Z: -84.062439 |
Vertex 372: X: 29.878073 Y: -249.517929 Z: -77.906067 |
Vertex 373: X: 27.392401 Y: -238.744431 Z: -71.783607 |
Vertex 374: X: 20.353977 Y: -229.601059 Z: -66.627174 |
Vertex 375: X: 9.834356 Y: -223.47966 Z: -63.221722 |
Vertex 376: X: -2.56495 Y: -221.312241 Z: -62.085735 |
Vertex 377: X: -14.956264 Y: -223.428757 Z: -63.392132 |
Vertex 378: X: -25.453102 Y: -229.507004 Z: -66.942085 |
Vertex 379: X: -32.457458 Y: -238.621567 Z: -72.195045 |
Vertex 380: X: -34.902927 Y: -249.384995 Z: -78.35141 |
Vertex 381: X: -32.417252 Y: -260.158478 Z: -84.473877 |
Vertex 382: X: -25.378832 Y: -269.301849 Z: -89.630341 |
Vertex 383: X: -14.859198 Y: -275.423248 Z: -93.035797 |
Vertex 384: X: -1.894459 Y: -220.923523 Z: -159.498764 |
Vertex 385: X: 10.490553 Y: -219.437378 Z: -157.465622 |
Vertex 386: X: 20.969482 Y: -215.154358 Z: -151.846207 |
Vertex 387: X: 27.947012 Y: -208.726318 Z: -143.495926 |
Vertex 388: X: 30.360868 Y: -201.132141 Z: -133.686172 |
Vertex 389: X: 27.84358 Y: -193.527817 Z: -123.910225 |
Vertex 390: X: 20.778353 Y: -187.07103 Z: -115.65657 |
Vertex 391: X: 10.240824 Y: -182.744797 Z: -110.181564 |
Vertex 392: X: -2.164785 Y: -181.207779 Z: -108.318863 |
Vertex 393: X: -14.549797 Y: -182.693893 Z: -110.352005 |
Vertex 394: X: -25.02874 Y: -186.976974 Z: -115.97142 |
Vertex 395: X: -32.006271 Y: -193.404953 Z: -124.321732 |
Vertex 396: X: -34.420128 Y: -200.999146 Z: -134.131516 |
Vertex 397: X: -31.902828 Y: -208.603516 Z: -143.907394 |
Vertex 398: X: -24.837599 Y: -215.060303 Z: -152.161118 |
Vertex 399: X: -14.300055 Y: -219.386475 Z: -157.636032 |
Vertex 400: X: -1.469821 Y: -143.569504 Z: -198.167526 |
Vertex 401: X: 10.910456 Y: -142.943863 Z: -195.704208 |
Vertex 402: X: 21.375948 Y: -141.111313 Z: -188.859787 |
Vertex 403: X: 28.333357 Y: -138.350815 Z: -178.676193 |
Vertex 404: X: 30.723463 Y: -135.082657 Z: -166.703781 |
Vertex 405: X: 28.182417 Y: -131.804398 Z: -154.765366 |
Vertex 406: X: 21.097034 Y: -129.01506 Z: -144.678299 |
Vertex 407: X: 10.546053 Y: -127.139359 Z: -137.978394 |
Vertex 408: X: -1.864261 Y: -126.462845 Z: -135.685516 |
Vertex 409: X: -14.244553 Y: -127.088486 Z: -138.148804 |
Vertex 410: X: -24.710045 Y: -128.921005 Z: -144.99321 |
Vertex 411: X: -31.667437 Y: -131.681503 Z: -155.176804 |
Vertex 412: X: -34.057556 Y: -134.949661 Z: -167.149155 |
Vertex 413: X: -31.5165 Y: -138.227951 Z: -179.087631 |
Vertex 414: X: -24.431131 Y: -141.017288 Z: -189.174728 |
Vertex 415: X: -13.880136 Y: -142.89299 Z: -195.87468 |
Vertex 416: X: -1.250648 Y: -57.30505 Z: -204.291077 |
Vertex 417: X: 11.127214 Y: -57.63905 Z: -201.759644 |
Vertex 418: X: 21.58577 Y: -58.539303 Z: -194.721252 |
Vertex 419: X: 28.532782 Y: -59.86869 Z: -184.247375 |
Vertex 420: X: 30.910635 Y: -61.424934 Z: -171.932495 |
Vertex 421: X: 28.357306 Y: -62.971058 Z: -159.651611 |
Page 7 |
Vertex 422: X: 21.261574 Y: -64.271622 Z: -149.2742 |
Vertex 423: X: 10.703629 Y: -65.128708 Z: -142.38031 |
Vertex 424: X: -1.709129 Y: -65.411819 Z: -140.019287 |
Vertex 425: X: -14.086991 Y: -65.077835 Z: -142.55072 |
Vertex 426: X: -24.545534 Y: -64.177567 Z: -149.589142 |
Vertex 427: X: -31.492546 Y: -62.848164 Z: -160.063049 |
Vertex 428: X: -33.870399 Y: -61.291939 Z: -172.377869 |
Vertex 429: X: -31.317085 Y: -59.745827 Z: -184.658813 |
Vertex 430: X: -24.221338 Y: -58.445263 Z: -195.036194 |
Vertex 431: X: -13.66338 Y: -57.588161 Z: -201.930115 |
Vertex 432: X: -1.270272 Y: 24.73682 Z: -176.93721 |
Vertex 433: X: 11.107817 Y: 23.490162 Z: -174.710098 |
Vertex 434: X: 21.566975 Y: 19.990879 Z: -168.538284 |
Vertex 435: X: 28.514906 Y: 14.771749 Z: -159.361221 |
Vertex 436: X: 30.893866 Y: 8.627312 Z: -148.576187 |
Vertex 437: X: 28.34165 Y: 2.492975 Z: -137.824997 |
Vertex 438: X: 21.246832 Y: -2.697331 Z: -128.744492 |
Vertex 439: X: 10.689516 Y: -6.15343 Z: -122.71711 |
Vertex 440: X: -1.723015 Y: -7.349185 Z: -120.660408 |
Vertex 441: X: -14.101104 Y: -6.102542 Z: -122.88752 |
Vertex 442: X: -24.560274 Y: -2.603291 Z: -129.059433 |
Vertex 443: X: -31.508207 Y: 2.615839 Z: -138.236465 |
Vertex 444: X: -33.887154 Y: 8.760292 Z: -149.02153 |
Vertex 445: X: -31.334948 Y: 14.894629 Z: -159.772659 |
Vertex 446: X: -24.240105 Y: 20.084934 Z: -168.853165 |
Vertex 447: X: -13.682803 Y: 23.54105 Z: -174.880569 |
Vertex 448: X: -1.52573 Y: 90.065956 Z: -120.270317 |
Vertex 449: X: 10.855188 Y: 88.092567 Z: -118.673576 |
Vertex 450: X: 21.322458 Y: 82.523727 Z: -114.296867 |
Vertex 451: X: 28.282507 Y: 74.207253 Z: -107.80645 |
Vertex 452: X: 30.675741 Y: 64.409218 Z: -100.190575 |
Vertex 453: X: 28.137808 Y: 54.621334 Z: -92.608513 |
Vertex 454: X: 21.055094 Y: 46.333679 Z: -86.214684 |
Vertex 455: X: 10.505875 Y: 40.807999 Z: -81.982468 |
Vertex 456: X: -1.903812 Y: 38.885498 Z: -80.556137 |
Vertex 457: X: -14.284732 Y: 40.858887 Z: -82.152878 |
Vertex 458: X: -24.751986 Y: 46.427719 Z: -86.529594 |
Vertex 459: X: -31.712048 Y: 54.744198 Z: -93.020012 |
Vertex 460: X: -34.105286 Y: 64.542213 Z: -100.635918 |
Vertex 461: X: -31.567348 Y: 74.330132 Z: -108.217949 |
Vertex 462: X: -24.484634 Y: 82.617767 Z: -114.611748 |
Vertex 463: X: -13.935403 Y: 88.143463 Z: -118.843987 |
Vertex 464: X: -1.978122 Y: 128.736557 Z: -42.917454 |
Vertex 465: X: 10.407837 Y: 126.332993 Z: -42.181217 |
Vertex 466: X: 20.889421 Y: 119.539108 Z: -40.254974 |
Vertex 467: X: 27.870916 Y: 109.389206 Z: -37.432007 |
Vertex 468: X: 30.289457 Y: 97.428497 Z: -34.14209 |
Vertex 469: X: 27.776823 Y: 85.477936 Z: -30.886045 |
Vertex 470: X: 20.715551 Y: 75.356873 Z: -28.159634 |
Vertex 471: X: 10.180677 Y: 68.606125 Z: -26.377865 |
Vertex 472: X: -2.223983 Y: 66.253441 Z: -25.812067 |
Vertex 473: X: -14.609928 Y: 68.657021 Z: -26.548306 |
Vertex 474: X: -25.091528 Y: 75.450905 Z: -28.474545 |
Vertex 475: X: -32.073021 Y: 85.6008 Z: -31.297514 |
Vertex 476: X: -34.491562 Y: 97.561508 Z: -34.587402 |
Vertex 477: X: -31.978928 Y: 109.51207 Z: -37.843445 |
Vertex 478: X: -24.917671 Y: 119.633141 Z: -40.569916 |
Vertex 479: X: -14.382784 Y: 126.383888 Z: -42.351658 |
Vertex 480: X: -2.558581 Y: 134.861481 Z: 43.345238 |
Vertex 481: X: 9.833838 Y: 132.389786 Z: 43.121849 |
Vertex 482: X: 20.333811 Y: 125.401863 Z: 42.315361 |
Page 8 |
Vertex 483: X: 27.342817 Y: 114.961563 Z: 41.048489 |
Vertex 484: X: 29.793829 Y: 102.658333 Z: 39.514126 |
Vertex 485: X: 27.313662 Y: 90.365219 Z: 37.945889 |
Vertex 486: X: 20.279924 Y: 79.953773 Z: 36.582489 |
Vertex 487: X: 9.763424 Y: 73.008987 Z: 35.631531 |
Vertex 488: X: -2.634776 Y: 70.588181 Z: 35.237732 |
Vertex 489: X: -15.027183 Y: 73.059883 Z: 35.46109 |
Vertex 490: X: -25.527168 Y: 80.047806 Z: 36.267578 |
Vertex 491: X: -32.536201 Y: 90.488083 Z: 37.53442 |
Vertex 492: X: -34.987186 Y: 102.791321 Z: 39.068783 |
Vertex 493: X: -32.507034 Y: 115.084435 Z: 40.63702 |
Vertex 494: X: -25.473284 Y: 125.495903 Z: 42.00042 |
Vertex 495: X: -14.956781 Y: 132.440674 Z: 42.951439 |
Vertex 496: X: -3.178736 Y: 107.508194 Z: 125.384926 |
Vertex 497: X: 9.220579 Y: 105.340767 Z: 124.248924 |
Vertex 498: X: 19.740192 Y: 99.219383 Z: 120.843483 |
Vertex 499: X: 26.778616 Y: 90.075935 Z: 115.687004 |
Vertex 500: X: 29.264296 Y: 79.30246 Z: 109.564537 |
Vertex 501: X: 26.818815 Y: 68.539085 Z: 103.408173 |
Vertex 502: X: 19.814482 Y: 59.424492 Z: 98.155151 |
Vertex 503: X: 9.317629 Y: 53.34623 Z: 94.605225 |
Vertex 504: X: -3.073677 Y: 51.229729 Z: 93.298828 |
Vertex 505: X: -15.472984 Y: 53.397133 Z: 94.434784 |
Vertex 506: X: -25.992605 Y: 59.518517 Z: 97.84024 |
Vertex 507: X: -33.031029 Y: 68.661949 Z: 102.996735 |
Vertex 508: X: -35.516716 Y: 79.435448 Z: 109.119194 |
Vertex 509: X: -33.071236 Y: 90.198799 Z: 115.275551 |
Vertex 510: X: -26.066887 Y: 99.313416 Z: 120.528572 |
Vertex 511: X: -15.570028 Y: 105.39167 Z: 124.078514 |
Face list: |
Face 0: A:0 B:17 C:1 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 1 |
Face 1: A:0 B:16 C:17 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 1 |
Face 2: A:1 B:18 C:2 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 2 |
Face 3: A:1 B:17 C:18 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 2 |
Face 4: A:2 B:19 C:3 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 3 |
Face 5: A:2 B:18 C:19 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 3 |
Face 6: A:3 B:20 C:4 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 4 |
Face 7: A:3 B:19 C:20 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 4 |
Face 8: A:4 B:21 C:5 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 5 |
Face 9: A:4 B:20 C:21 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 5 |
Face 10: A:5 B:22 C:6 AB:0 BC:1 CA:1 |
Page 9 |
Material:"CYAN PLSTC" |
Smoothing: 6 |
Face 11: A:5 B:21 C:22 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 6 |
Face 12: A:6 B:23 C:7 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 7 |
Face 13: A:6 B:22 C:23 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 7 |
Face 14: A:7 B:24 C:8 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 8 |
Face 15: A:7 B:23 C:24 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 8 |
Face 16: A:8 B:25 C:9 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 9 |
Face 17: A:8 B:24 C:25 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 9 |
Face 18: A:9 B:26 C:10 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 10 |
Face 19: A:9 B:25 C:26 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 10 |
Face 20: A:10 B:27 C:11 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 11 |
Face 21: A:10 B:26 C:27 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 11 |
Face 22: A:11 B:28 C:12 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 12 |
Face 23: A:11 B:27 C:28 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 12 |
Face 24: A:12 B:29 C:13 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 13 |
Face 25: A:12 B:28 C:29 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 13 |
Face 26: A:13 B:30 C:14 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 14 |
Face 27: A:13 B:29 C:30 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 14 |
Face 28: A:14 B:31 C:15 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 15 |
Face 29: A:14 B:30 C:31 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 15 |
Face 30: A:15 B:16 C:0 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Page 10 |
Smoothing: 16 |
Face 31: A:15 B:31 C:16 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 16 |
Face 32: A:16 B:33 C:17 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 17 |
Face 33: A:16 B:32 C:33 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 17 |
Face 34: A:17 B:34 C:18 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 18 |
Face 35: A:17 B:33 C:34 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 18 |
Face 36: A:18 B:35 C:19 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 19 |
Face 37: A:18 B:34 C:35 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 19 |
Face 38: A:19 B:36 C:20 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 20 |
Face 39: A:19 B:35 C:36 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 20 |
Face 40: A:20 B:37 C:21 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 21 |
Face 41: A:20 B:36 C:37 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 21 |
Face 42: A:21 B:38 C:22 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 22 |
Face 43: A:21 B:37 C:38 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 22 |
Face 44: A:22 B:39 C:23 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 23 |
Face 45: A:22 B:38 C:39 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 23 |
Face 46: A:23 B:40 C:24 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 24 |
Face 47: A:23 B:39 C:40 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 24 |
Face 48: A:24 B:41 C:25 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 25 |
Face 49: A:24 B:40 C:41 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 25 |
Face 50: A:25 B:42 C:26 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 26 |
Page 11 |
Face 51: A:25 B:41 C:42 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 26 |
Face 52: A:26 B:43 C:27 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 27 |
Face 53: A:26 B:42 C:43 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 27 |
Face 54: A:27 B:44 C:28 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 28 |
Face 55: A:27 B:43 C:44 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 28 |
Face 56: A:28 B:45 C:29 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 29 |
Face 57: A:28 B:44 C:45 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 29 |
Face 58: A:29 B:46 C:30 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 30 |
Face 59: A:29 B:45 C:46 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 30 |
Face 60: A:30 B:47 C:31 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 31 |
Face 61: A:30 B:46 C:47 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 31 |
Face 62: A:31 B:32 C:16 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 32 |
Face 63: A:31 B:47 C:32 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 32 |
Face 64: A:32 B:49 C:33 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 1 |
Face 65: A:32 B:48 C:49 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 1 |
Face 66: A:33 B:50 C:34 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 2 |
Face 67: A:33 B:49 C:50 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 2 |
Face 68: A:34 B:51 C:35 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 3 |
Face 69: A:34 B:50 C:51 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 3 |
Face 70: A:35 B:52 C:36 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 4 |
Face 71: A:35 B:51 C:52 AB:1 BC:1 CA:0 |
Page 12 |
Material:"CYAN PLSTC" |
Smoothing: 4 |
Face 72: A:36 B:53 C:37 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 5 |
Face 73: A:36 B:52 C:53 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 5 |
Face 74: A:37 B:54 C:38 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 6 |
Face 75: A:37 B:53 C:54 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 6 |
Face 76: A:38 B:55 C:39 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 7 |
Face 77: A:38 B:54 C:55 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 7 |
Face 78: A:39 B:56 C:40 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 8 |
Face 79: A:39 B:55 C:56 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 8 |
Face 80: A:40 B:57 C:41 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 9 |
Face 81: A:40 B:56 C:57 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 9 |
Face 82: A:41 B:58 C:42 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 10 |
Face 83: A:41 B:57 C:58 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 10 |
Face 84: A:42 B:59 C:43 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 11 |
Face 85: A:42 B:58 C:59 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 11 |
Face 86: A:43 B:60 C:44 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 12 |
Face 87: A:43 B:59 C:60 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 12 |
Face 88: A:44 B:61 C:45 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 13 |
Face 89: A:44 B:60 C:61 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 13 |
Face 90: A:45 B:62 C:46 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 14 |
Face 91: A:45 B:61 C:62 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Page 13 |
Smoothing: 14 |
Face 92: A:46 B:63 C:47 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 15 |
Face 93: A:46 B:62 C:63 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 15 |
Face 94: A:47 B:48 C:32 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 16 |
Face 95: A:47 B:63 C:48 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 16 |
Face 96: A:48 B:65 C:49 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 17 |
Face 97: A:48 B:64 C:65 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 17 |
Face 98: A:49 B:66 C:50 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 18 |
Face 99: A:49 B:65 C:66 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 18 |
Face 100: A:50 B:67 C:51 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 19 |
Face 101: A:50 B:66 C:67 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 19 |
Face 102: A:51 B:68 C:52 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 20 |
Face 103: A:51 B:67 C:68 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 20 |
Face 104: A:52 B:69 C:53 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 21 |
Face 105: A:52 B:68 C:69 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 21 |
Face 106: A:53 B:70 C:54 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 22 |
Face 107: A:53 B:69 C:70 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 22 |
Face 108: A:54 B:71 C:55 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 23 |
Face 109: A:54 B:70 C:71 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 23 |
Face 110: A:55 B:72 C:56 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 24 |
Face 111: A:55 B:71 C:72 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 24 |
Page 14 |
Face 112: A:56 B:73 C:57 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 25 |
Face 113: A:56 B:72 C:73 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 25 |
Face 114: A:57 B:74 C:58 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 26 |
Face 115: A:57 B:73 C:74 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 26 |
Face 116: A:58 B:75 C:59 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 27 |
Face 117: A:58 B:74 C:75 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 27 |
Face 118: A:59 B:76 C:60 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 28 |
Face 119: A:59 B:75 C:76 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 28 |
Face 120: A:60 B:77 C:61 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 29 |
Face 121: A:60 B:76 C:77 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 29 |
Face 122: A:61 B:78 C:62 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 30 |
Face 123: A:61 B:77 C:78 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 30 |
Face 124: A:62 B:79 C:63 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 31 |
Face 125: A:62 B:78 C:79 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 31 |
Face 126: A:63 B:64 C:48 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 32 |
Face 127: A:63 B:79 C:64 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 32 |
Face 128: A:64 B:81 C:65 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 1 |
Face 129: A:64 B:80 C:81 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 1 |
Face 130: A:65 B:82 C:66 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 2 |
Face 131: A:65 B:81 C:82 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 2 |
Face 132: A:66 B:83 C:67 AB:0 BC:1 CA:1 |
Page 15 |
Material:"CYAN PLSTC" |
Smoothing: 3 |
Face 133: A:66 B:82 C:83 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 3 |
Face 134: A:67 B:84 C:68 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 4 |
Face 135: A:67 B:83 C:84 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 4 |
Face 136: A:68 B:85 C:69 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 5 |
Face 137: A:68 B:84 C:85 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 5 |
Face 138: A:69 B:86 C:70 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 6 |
Face 139: A:69 B:85 C:86 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 6 |
Face 140: A:70 B:87 C:71 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 7 |
Face 141: A:70 B:86 C:87 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 7 |
Face 142: A:71 B:88 C:72 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 8 |
Face 143: A:71 B:87 C:88 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 8 |
Face 144: A:72 B:89 C:73 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 9 |
Face 145: A:72 B:88 C:89 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 9 |
Face 146: A:73 B:90 C:74 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 10 |
Face 147: A:73 B:89 C:90 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 10 |
Face 148: A:74 B:91 C:75 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 11 |
Face 149: A:74 B:90 C:91 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 11 |
Face 150: A:75 B:92 C:76 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 12 |
Face 151: A:75 B:91 C:92 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 12 |
Face 152: A:76 B:93 C:77 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Page 16 |
Smoothing: 13 |
Face 153: A:76 B:92 C:93 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 13 |
Face 154: A:77 B:94 C:78 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 14 |
Face 155: A:77 B:93 C:94 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 14 |
Face 156: A:78 B:95 C:79 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 15 |
Face 157: A:78 B:94 C:95 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 15 |
Face 158: A:79 B:80 C:64 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 16 |
Face 159: A:79 B:95 C:80 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 16 |
Face 160: A:80 B:97 C:81 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 17 |
Face 161: A:80 B:96 C:97 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 17 |
Face 162: A:81 B:98 C:82 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 18 |
Face 163: A:81 B:97 C:98 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 18 |
Face 164: A:82 B:99 C:83 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 19 |
Face 165: A:82 B:98 C:99 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 19 |
Face 166: A:83 B:100 C:84 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 20 |
Face 167: A:83 B:99 C:100 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 20 |
Face 168: A:84 B:101 C:85 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 21 |
Face 169: A:84 B:100 C:101 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 21 |
Face 170: A:85 B:102 C:86 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 22 |
Face 171: A:85 B:101 C:102 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 22 |
Face 172: A:86 B:103 C:87 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 23 |
Page 17 |
Face 173: A:86 B:102 C:103 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 23 |
Face 174: A:87 B:104 C:88 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 24 |
Face 175: A:87 B:103 C:104 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 24 |
Face 176: A:88 B:105 C:89 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 25 |
Face 177: A:88 B:104 C:105 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 25 |
Face 178: A:89 B:106 C:90 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 26 |
Face 179: A:89 B:105 C:106 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 26 |
Face 180: A:90 B:107 C:91 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 27 |
Face 181: A:90 B:106 C:107 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 27 |
Face 182: A:91 B:108 C:92 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 28 |
Face 183: A:91 B:107 C:108 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 28 |
Face 184: A:92 B:109 C:93 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 29 |
Face 185: A:92 B:108 C:109 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 29 |
Face 186: A:93 B:110 C:94 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 30 |
Face 187: A:93 B:109 C:110 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 30 |
Face 188: A:94 B:111 C:95 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 31 |
Face 189: A:94 B:110 C:111 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 31 |
Face 190: A:95 B:96 C:80 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 32 |
Face 191: A:95 B:111 C:96 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 32 |
Face 192: A:96 B:113 C:97 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 1 |
Face 193: A:96 B:112 C:113 AB:1 BC:1 CA:0 |
Page 18 |
Material:"CYAN PLSTC" |
Smoothing: 1 |
Face 194: A:97 B:114 C:98 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 2 |
Face 195: A:97 B:113 C:114 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 2 |
Face 196: A:98 B:115 C:99 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 3 |
Face 197: A:98 B:114 C:115 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 3 |
Face 198: A:99 B:116 C:100 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 4 |
Face 199: A:99 B:115 C:116 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 4 |
Face 200: A:100 B:117 C:101 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 5 |
Face 201: A:100 B:116 C:117 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 5 |
Face 202: A:101 B:118 C:102 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 6 |
Face 203: A:101 B:117 C:118 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 6 |
Face 204: A:102 B:119 C:103 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 7 |
Face 205: A:102 B:118 C:119 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 7 |
Face 206: A:103 B:120 C:104 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 8 |
Face 207: A:103 B:119 C:120 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 8 |
Face 208: A:104 B:121 C:105 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 9 |
Face 209: A:104 B:120 C:121 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 9 |
Face 210: A:105 B:122 C:106 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 10 |
Face 211: A:105 B:121 C:122 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 10 |
Face 212: A:106 B:123 C:107 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 11 |
Face 213: A:106 B:122 C:123 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Page 19 |
Smoothing: 11 |
Face 214: A:107 B:124 C:108 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 12 |
Face 215: A:107 B:123 C:124 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 12 |
Face 216: A:108 B:125 C:109 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 13 |
Face 217: A:108 B:124 C:125 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 13 |
Face 218: A:109 B:126 C:110 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 14 |
Face 219: A:109 B:125 C:126 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 14 |
Face 220: A:110 B:127 C:111 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 15 |
Face 221: A:110 B:126 C:127 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 15 |
Face 222: A:111 B:112 C:96 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 16 |
Face 223: A:111 B:127 C:112 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 16 |
Face 224: A:112 B:129 C:113 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 17 |
Face 225: A:112 B:128 C:129 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 17 |
Face 226: A:113 B:130 C:114 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 18 |
Face 227: A:113 B:129 C:130 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 18 |
Face 228: A:114 B:131 C:115 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 19 |
Face 229: A:114 B:130 C:131 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 19 |
Face 230: A:115 B:132 C:116 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 20 |
Face 231: A:115 B:131 C:132 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 20 |
Face 232: A:116 B:133 C:117 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 21 |
Face 233: A:116 B:132 C:133 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 21 |
Page 20 |
Face 234: A:117 B:134 C:118 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 22 |
Face 235: A:117 B:133 C:134 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 22 |
Face 236: A:118 B:135 C:119 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 23 |
Face 237: A:118 B:134 C:135 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 23 |
Face 238: A:119 B:136 C:120 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 24 |
Face 239: A:119 B:135 C:136 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 24 |
Face 240: A:120 B:137 C:121 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 25 |
Face 241: A:120 B:136 C:137 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 25 |
Face 242: A:121 B:138 C:122 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 26 |
Face 243: A:121 B:137 C:138 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 26 |
Face 244: A:122 B:139 C:123 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 27 |
Face 245: A:122 B:138 C:139 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 27 |
Face 246: A:123 B:140 C:124 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 28 |
Face 247: A:123 B:139 C:140 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 28 |
Face 248: A:124 B:141 C:125 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 29 |
Face 249: A:124 B:140 C:141 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 29 |
Face 250: A:125 B:142 C:126 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 30 |
Face 251: A:125 B:141 C:142 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 30 |
Face 252: A:126 B:143 C:127 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 31 |
Face 253: A:126 B:142 C:143 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 31 |
Face 254: A:127 B:128 C:112 AB:0 BC:1 CA:1 |
Page 21 |
Material:"CYAN PLSTC" |
Smoothing: 32 |
Face 255: A:127 B:143 C:128 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 32 |
Face 256: A:128 B:145 C:129 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 1 |
Face 257: A:128 B:144 C:145 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 1 |
Face 258: A:129 B:146 C:130 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 2 |
Face 259: A:129 B:145 C:146 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 2 |
Face 260: A:130 B:147 C:131 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 3 |
Face 261: A:130 B:146 C:147 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 3 |
Face 262: A:131 B:148 C:132 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 4 |
Face 263: A:131 B:147 C:148 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 4 |
Face 264: A:132 B:149 C:133 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 5 |
Face 265: A:132 B:148 C:149 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 5 |
Face 266: A:133 B:150 C:134 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 6 |
Face 267: A:133 B:149 C:150 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 6 |
Face 268: A:134 B:151 C:135 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 7 |
Face 269: A:134 B:150 C:151 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 7 |
Face 270: A:135 B:152 C:136 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 8 |
Face 271: A:135 B:151 C:152 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 8 |
Face 272: A:136 B:153 C:137 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 9 |
Face 273: A:136 B:152 C:153 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 9 |
Face 274: A:137 B:154 C:138 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Page 22 |
Smoothing: 10 |
Face 275: A:137 B:153 C:154 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 10 |
Face 276: A:138 B:155 C:139 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 11 |
Face 277: A:138 B:154 C:155 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 11 |
Face 278: A:139 B:156 C:140 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 12 |
Face 279: A:139 B:155 C:156 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 12 |
Face 280: A:140 B:157 C:141 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 13 |
Face 281: A:140 B:156 C:157 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 13 |
Face 282: A:141 B:158 C:142 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 14 |
Face 283: A:141 B:157 C:158 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 14 |
Face 284: A:142 B:159 C:143 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 15 |
Face 285: A:142 B:158 C:159 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 15 |
Face 286: A:143 B:144 C:128 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 16 |
Face 287: A:143 B:159 C:144 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 16 |
Face 288: A:144 B:161 C:145 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 17 |
Face 289: A:144 B:160 C:161 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 17 |
Face 290: A:145 B:162 C:146 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 18 |
Face 291: A:145 B:161 C:162 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 18 |
Face 292: A:146 B:163 C:147 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 19 |
Face 293: A:146 B:162 C:163 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 19 |
Face 294: A:147 B:164 C:148 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 20 |
Page 23 |
Face 295: A:147 B:163 C:164 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 20 |
Face 296: A:148 B:165 C:149 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 21 |
Face 297: A:148 B:164 C:165 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 21 |
Face 298: A:149 B:166 C:150 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 22 |
Face 299: A:149 B:165 C:166 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 22 |
Face 300: A:150 B:167 C:151 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 23 |
Face 301: A:150 B:166 C:167 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 23 |
Face 302: A:151 B:168 C:152 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 24 |
Face 303: A:151 B:167 C:168 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 24 |
Face 304: A:152 B:169 C:153 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 25 |
Face 305: A:152 B:168 C:169 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 25 |
Face 306: A:153 B:170 C:154 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 26 |
Face 307: A:153 B:169 C:170 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 26 |
Face 308: A:154 B:171 C:155 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 27 |
Face 309: A:154 B:170 C:171 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 27 |
Face 310: A:155 B:172 C:156 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 28 |
Face 311: A:155 B:171 C:172 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 28 |
Face 312: A:156 B:173 C:157 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 29 |
Face 313: A:156 B:172 C:173 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 29 |
Face 314: A:157 B:174 C:158 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 30 |
Face 315: A:157 B:173 C:174 AB:1 BC:1 CA:0 |
Page 24 |
Material:"CYAN PLSTC" |
Smoothing: 30 |
Face 316: A:158 B:175 C:159 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 31 |
Face 317: A:158 B:174 C:175 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 31 |
Face 318: A:159 B:160 C:144 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 32 |
Face 319: A:159 B:175 C:160 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 32 |
Face 320: A:160 B:177 C:161 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 1 |
Face 321: A:160 B:176 C:177 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 1 |
Face 322: A:161 B:178 C:162 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 2 |
Face 323: A:161 B:177 C:178 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 2 |
Face 324: A:162 B:179 C:163 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 3 |
Face 325: A:162 B:178 C:179 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 3 |
Face 326: A:163 B:180 C:164 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 4 |
Face 327: A:163 B:179 C:180 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 4 |
Face 328: A:164 B:181 C:165 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 5 |
Face 329: A:164 B:180 C:181 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 5 |
Face 330: A:165 B:182 C:166 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 6 |
Face 331: A:165 B:181 C:182 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 6 |
Face 332: A:166 B:183 C:167 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 7 |
Face 333: A:166 B:182 C:183 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 7 |
Face 334: A:167 B:184 C:168 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 8 |
Face 335: A:167 B:183 C:184 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Page 25 |
Smoothing: 8 |
Face 336: A:168 B:185 C:169 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 9 |
Face 337: A:168 B:184 C:185 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 9 |
Face 338: A:169 B:186 C:170 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 10 |
Face 339: A:169 B:185 C:186 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 10 |
Face 340: A:170 B:187 C:171 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 11 |
Face 341: A:170 B:186 C:187 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 11 |
Face 342: A:171 B:188 C:172 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 12 |
Face 343: A:171 B:187 C:188 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 12 |
Face 344: A:172 B:189 C:173 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 13 |
Face 345: A:172 B:188 C:189 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 13 |
Face 346: A:173 B:190 C:174 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 14 |
Face 347: A:173 B:189 C:190 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 14 |
Face 348: A:174 B:191 C:175 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 15 |
Face 349: A:174 B:190 C:191 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 15 |
Face 350: A:175 B:176 C:160 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 16 |
Face 351: A:175 B:191 C:176 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 16 |
Face 352: A:176 B:193 C:177 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 17 |
Face 353: A:176 B:192 C:193 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 17 |
Face 354: A:177 B:194 C:178 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 18 |
Face 355: A:177 B:193 C:194 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 18 |
Page 26 |
Face 356: A:178 B:195 C:179 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 19 |
Face 357: A:178 B:194 C:195 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 19 |
Face 358: A:179 B:196 C:180 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 20 |
Face 359: A:179 B:195 C:196 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 20 |
Face 360: A:180 B:197 C:181 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 21 |
Face 361: A:180 B:196 C:197 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 21 |
Face 362: A:181 B:198 C:182 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 22 |
Face 363: A:181 B:197 C:198 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 22 |
Face 364: A:182 B:199 C:183 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 23 |
Face 365: A:182 B:198 C:199 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 23 |
Face 366: A:183 B:200 C:184 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 24 |
Face 367: A:183 B:199 C:200 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 24 |
Face 368: A:184 B:201 C:185 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 25 |
Face 369: A:184 B:200 C:201 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 25 |
Face 370: A:185 B:202 C:186 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 26 |
Face 371: A:185 B:201 C:202 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 26 |
Face 372: A:186 B:203 C:187 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 27 |
Face 373: A:186 B:202 C:203 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 27 |
Face 374: A:187 B:204 C:188 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 28 |
Face 375: A:187 B:203 C:204 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 28 |
Face 376: A:188 B:205 C:189 AB:0 BC:1 CA:1 |
Page 27 |
Material:"CYAN PLSTC" |
Smoothing: 29 |
Face 377: A:188 B:204 C:205 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 29 |
Face 378: A:189 B:206 C:190 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 30 |
Face 379: A:189 B:205 C:206 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 30 |
Face 380: A:190 B:207 C:191 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 31 |
Face 381: A:190 B:206 C:207 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 31 |
Face 382: A:191 B:192 C:176 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 32 |
Face 383: A:191 B:207 C:192 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 32 |
Face 384: A:192 B:209 C:193 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 1 |
Face 385: A:192 B:208 C:209 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 1 |
Face 386: A:193 B:210 C:194 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 2 |
Face 387: A:193 B:209 C:210 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 2 |
Face 388: A:194 B:211 C:195 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 3 |
Face 389: A:194 B:210 C:211 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 3 |
Face 390: A:195 B:212 C:196 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 4 |
Face 391: A:195 B:211 C:212 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 4 |
Face 392: A:196 B:213 C:197 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 5 |
Face 393: A:196 B:212 C:213 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 5 |
Face 394: A:197 B:214 C:198 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 6 |
Face 395: A:197 B:213 C:214 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 6 |
Face 396: A:198 B:215 C:199 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Page 28 |
Smoothing: 7 |
Face 397: A:198 B:214 C:215 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 7 |
Face 398: A:199 B:216 C:200 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 8 |
Face 399: A:199 B:215 C:216 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 8 |
Face 400: A:200 B:217 C:201 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 9 |
Face 401: A:200 B:216 C:217 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 9 |
Face 402: A:201 B:218 C:202 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 10 |
Face 403: A:201 B:217 C:218 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 10 |
Face 404: A:202 B:219 C:203 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 11 |
Face 405: A:202 B:218 C:219 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 11 |
Face 406: A:203 B:220 C:204 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 12 |
Face 407: A:203 B:219 C:220 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 12 |
Face 408: A:204 B:221 C:205 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 13 |
Face 409: A:204 B:220 C:221 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 13 |
Face 410: A:205 B:222 C:206 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 14 |
Face 411: A:205 B:221 C:222 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 14 |
Face 412: A:206 B:223 C:207 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 15 |
Face 413: A:206 B:222 C:223 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 15 |
Face 414: A:207 B:208 C:192 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 16 |
Face 415: A:207 B:223 C:208 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 16 |
Face 416: A:208 B:225 C:209 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 17 |
Page 29 |
Face 417: A:208 B:224 C:225 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 17 |
Face 418: A:209 B:226 C:210 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 18 |
Face 419: A:209 B:225 C:226 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 18 |
Face 420: A:210 B:227 C:211 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 19 |
Face 421: A:210 B:226 C:227 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 19 |
Face 422: A:211 B:228 C:212 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 20 |
Face 423: A:211 B:227 C:228 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 20 |
Face 424: A:212 B:229 C:213 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 21 |
Face 425: A:212 B:228 C:229 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 21 |
Face 426: A:213 B:230 C:214 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 22 |
Face 427: A:213 B:229 C:230 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 22 |
Face 428: A:214 B:231 C:215 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 23 |
Face 429: A:214 B:230 C:231 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 23 |
Face 430: A:215 B:232 C:216 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 24 |
Face 431: A:215 B:231 C:232 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 24 |
Face 432: A:216 B:233 C:217 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 25 |
Face 433: A:216 B:232 C:233 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 25 |
Face 434: A:217 B:234 C:218 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 26 |
Face 435: A:217 B:233 C:234 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 26 |
Face 436: A:218 B:235 C:219 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 27 |
Face 437: A:218 B:234 C:235 AB:1 BC:1 CA:0 |
Page 30 |
Material:"CYAN PLSTC" |
Smoothing: 27 |
Face 438: A:219 B:236 C:220 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 28 |
Face 439: A:219 B:235 C:236 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 28 |
Face 440: A:220 B:237 C:221 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 29 |
Face 441: A:220 B:236 C:237 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 29 |
Face 442: A:221 B:238 C:222 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 30 |
Face 443: A:221 B:237 C:238 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 30 |
Face 444: A:222 B:239 C:223 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 31 |
Face 445: A:222 B:238 C:239 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 31 |
Face 446: A:223 B:224 C:208 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 32 |
Face 447: A:223 B:239 C:224 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 32 |
Face 448: A:224 B:241 C:225 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 1 |
Face 449: A:224 B:240 C:241 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 1 |
Face 450: A:225 B:242 C:226 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 2 |
Face 451: A:225 B:241 C:242 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 2 |
Face 452: A:226 B:243 C:227 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 3 |
Face 453: A:226 B:242 C:243 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 3 |
Face 454: A:227 B:244 C:228 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 4 |
Face 455: A:227 B:243 C:244 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 4 |
Face 456: A:228 B:245 C:229 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 5 |
Face 457: A:228 B:244 C:245 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Page 31 |
Smoothing: 5 |
Face 458: A:229 B:246 C:230 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 6 |
Face 459: A:229 B:245 C:246 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 6 |
Face 460: A:230 B:247 C:231 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 7 |
Face 461: A:230 B:246 C:247 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 7 |
Face 462: A:231 B:248 C:232 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 8 |
Face 463: A:231 B:247 C:248 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 8 |
Face 464: A:232 B:249 C:233 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 9 |
Face 465: A:232 B:248 C:249 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 9 |
Face 466: A:233 B:250 C:234 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 10 |
Face 467: A:233 B:249 C:250 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 10 |
Face 468: A:234 B:251 C:235 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 11 |
Face 469: A:234 B:250 C:251 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 11 |
Face 470: A:235 B:252 C:236 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 12 |
Face 471: A:235 B:251 C:252 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 12 |
Face 472: A:236 B:253 C:237 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 13 |
Face 473: A:236 B:252 C:253 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 13 |
Face 474: A:237 B:254 C:238 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 14 |
Face 475: A:237 B:253 C:254 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 14 |
Face 476: A:238 B:255 C:239 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 15 |
Face 477: A:238 B:254 C:255 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 15 |
Page 32 |
Face 478: A:239 B:240 C:224 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 16 |
Face 479: A:239 B:255 C:240 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 16 |
Face 480: A:240 B:1 C:241 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 17 |
Face 481: A:240 B:0 C:1 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 17 |
Face 482: A:241 B:2 C:242 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 18 |
Face 483: A:241 B:1 C:2 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 18 |
Face 484: A:242 B:3 C:243 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 19 |
Face 485: A:242 B:2 C:3 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 19 |
Face 486: A:243 B:4 C:244 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 20 |
Face 487: A:243 B:3 C:4 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 20 |
Face 488: A:244 B:5 C:245 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 21 |
Face 489: A:244 B:4 C:5 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 21 |
Face 490: A:245 B:6 C:246 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 22 |
Face 491: A:245 B:5 C:6 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 22 |
Face 492: A:246 B:7 C:247 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 23 |
Face 493: A:246 B:6 C:7 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 23 |
Face 494: A:247 B:8 C:248 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 24 |
Face 495: A:247 B:7 C:8 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 24 |
Face 496: A:248 B:9 C:249 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 25 |
Face 497: A:248 B:8 C:9 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 25 |
Face 498: A:249 B:10 C:250 AB:0 BC:1 CA:1 |
Page 33 |
Material:"CYAN PLSTC" |
Smoothing: 26 |
Face 499: A:249 B:9 C:10 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 26 |
Face 500: A:250 B:11 C:251 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 27 |
Face 501: A:250 B:10 C:11 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 27 |
Face 502: A:251 B:12 C:252 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 28 |
Face 503: A:251 B:11 C:12 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 28 |
Face 504: A:252 B:13 C:253 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 29 |
Face 505: A:252 B:12 C:13 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 29 |
Face 506: A:253 B:14 C:254 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 30 |
Face 507: A:253 B:13 C:14 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 30 |
Face 508: A:254 B:15 C:255 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 31 |
Face 509: A:254 B:14 C:15 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 31 |
Face 510: A:255 B:0 C:240 AB:0 BC:1 CA:1 |
Material:"CYAN PLSTC" |
Smoothing: 32 |
Face 511: A:255 B:15 C:0 AB:1 BC:1 CA:0 |
Material:"CYAN PLSTC" |
Smoothing: 32 |
Face 512: A:256 B:273 C:257 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 1 |
Face 513: A:256 B:272 C:273 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 1 |
Face 514: A:257 B:274 C:258 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 2 |
Face 515: A:257 B:273 C:274 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 2 |
Face 516: A:258 B:275 C:259 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 3 |
Face 517: A:258 B:274 C:275 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 3 |
Face 518: A:259 B:276 C:260 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Page 34 |
Smoothing: 4 |
Face 519: A:259 B:275 C:276 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 4 |
Face 520: A:260 B:277 C:261 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 5 |
Face 521: A:260 B:276 C:277 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 5 |
Face 522: A:261 B:278 C:262 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 6 |
Face 523: A:261 B:277 C:278 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 6 |
Face 524: A:262 B:279 C:263 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 7 |
Face 525: A:262 B:278 C:279 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 7 |
Face 526: A:263 B:280 C:264 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 8 |
Face 527: A:263 B:279 C:280 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 8 |
Face 528: A:264 B:281 C:265 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 9 |
Face 529: A:264 B:280 C:281 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 9 |
Face 530: A:265 B:282 C:266 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 10 |
Face 531: A:265 B:281 C:282 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 10 |
Face 532: A:266 B:283 C:267 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 11 |
Face 533: A:266 B:282 C:283 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 11 |
Face 534: A:267 B:284 C:268 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 12 |
Face 535: A:267 B:283 C:284 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 12 |
Face 536: A:268 B:285 C:269 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 13 |
Face 537: A:268 B:284 C:285 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 13 |
Face 538: A:269 B:286 C:270 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 14 |
Page 35 |
Face 539: A:269 B:285 C:286 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 14 |
Face 540: A:270 B:287 C:271 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 15 |
Face 541: A:270 B:286 C:287 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 15 |
Face 542: A:271 B:272 C:256 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 16 |
Face 543: A:271 B:287 C:272 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 16 |
Face 544: A:272 B:289 C:273 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 17 |
Face 545: A:272 B:288 C:289 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 17 |
Face 546: A:273 B:290 C:274 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 18 |
Face 547: A:273 B:289 C:290 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 18 |
Face 548: A:274 B:291 C:275 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 19 |
Face 549: A:274 B:290 C:291 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 19 |
Face 550: A:275 B:292 C:276 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 20 |
Face 551: A:275 B:291 C:292 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 20 |
Face 552: A:276 B:293 C:277 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 21 |
Face 553: A:276 B:292 C:293 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 21 |
Face 554: A:277 B:294 C:278 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 22 |
Face 555: A:277 B:293 C:294 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 22 |
Face 556: A:278 B:295 C:279 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 23 |
Face 557: A:278 B:294 C:295 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 23 |
Face 558: A:279 B:296 C:280 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 24 |
Face 559: A:279 B:295 C:296 AB:1 BC:1 CA:0 |
Page 36 |
Material:"BLUE PLASTIC" |
Smoothing: 24 |
Face 560: A:280 B:297 C:281 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 25 |
Face 561: A:280 B:296 C:297 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 25 |
Face 562: A:281 B:298 C:282 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 26 |
Face 563: A:281 B:297 C:298 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 26 |
Face 564: A:282 B:299 C:283 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 27 |
Face 565: A:282 B:298 C:299 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 27 |
Face 566: A:283 B:300 C:284 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 28 |
Face 567: A:283 B:299 C:300 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 28 |
Face 568: A:284 B:301 C:285 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 29 |
Face 569: A:284 B:300 C:301 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 29 |
Face 570: A:285 B:302 C:286 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 30 |
Face 571: A:285 B:301 C:302 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 30 |
Face 572: A:286 B:303 C:287 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 31 |
Face 573: A:286 B:302 C:303 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 31 |
Face 574: A:287 B:288 C:272 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 32 |
Face 575: A:287 B:303 C:288 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 32 |
Face 576: A:288 B:305 C:289 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 1 |
Face 577: A:288 B:304 C:305 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 1 |
Face 578: A:289 B:306 C:290 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 2 |
Face 579: A:289 B:305 C:306 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Page 37 |
Smoothing: 2 |
Face 580: A:290 B:307 C:291 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 3 |
Face 581: A:290 B:306 C:307 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 3 |
Face 582: A:291 B:308 C:292 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 4 |
Face 583: A:291 B:307 C:308 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 4 |
Face 584: A:292 B:309 C:293 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 5 |
Face 585: A:292 B:308 C:309 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 5 |
Face 586: A:293 B:310 C:294 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 6 |
Face 587: A:293 B:309 C:310 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 6 |
Face 588: A:294 B:311 C:295 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 7 |
Face 589: A:294 B:310 C:311 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 7 |
Face 590: A:295 B:312 C:296 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 8 |
Face 591: A:295 B:311 C:312 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 8 |
Face 592: A:296 B:313 C:297 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 9 |
Face 593: A:296 B:312 C:313 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 9 |
Face 594: A:297 B:314 C:298 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 10 |
Face 595: A:297 B:313 C:314 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 10 |
Face 596: A:298 B:315 C:299 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 11 |
Face 597: A:298 B:314 C:315 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 11 |
Face 598: A:299 B:316 C:300 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 12 |
Face 599: A:299 B:315 C:316 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 12 |
Page 38 |
Face 600: A:300 B:317 C:301 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 13 |
Face 601: A:300 B:316 C:317 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 13 |
Face 602: A:301 B:318 C:302 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 14 |
Face 603: A:301 B:317 C:318 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 14 |
Face 604: A:302 B:319 C:303 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 15 |
Face 605: A:302 B:318 C:319 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 15 |
Face 606: A:303 B:304 C:288 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 16 |
Face 607: A:303 B:319 C:304 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 16 |
Face 608: A:304 B:321 C:305 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 17 |
Face 609: A:304 B:320 C:321 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 17 |
Face 610: A:305 B:322 C:306 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 18 |
Face 611: A:305 B:321 C:322 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 18 |
Face 612: A:306 B:323 C:307 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 19 |
Face 613: A:306 B:322 C:323 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 19 |
Face 614: A:307 B:324 C:308 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 20 |
Face 615: A:307 B:323 C:324 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 20 |
Face 616: A:308 B:325 C:309 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 21 |
Face 617: A:308 B:324 C:325 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 21 |
Face 618: A:309 B:326 C:310 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 22 |
Face 619: A:309 B:325 C:326 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 22 |
Face 620: A:310 B:327 C:311 AB:0 BC:1 CA:1 |
Page 39 |
Material:"BLUE PLASTIC" |
Smoothing: 23 |
Face 621: A:310 B:326 C:327 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 23 |
Face 622: A:311 B:328 C:312 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 24 |
Face 623: A:311 B:327 C:328 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 24 |
Face 624: A:312 B:329 C:313 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 25 |
Face 625: A:312 B:328 C:329 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 25 |
Face 626: A:313 B:330 C:314 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 26 |
Face 627: A:313 B:329 C:330 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 26 |
Face 628: A:314 B:331 C:315 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 27 |
Face 629: A:314 B:330 C:331 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 27 |
Face 630: A:315 B:332 C:316 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 28 |
Face 631: A:315 B:331 C:332 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 28 |
Face 632: A:316 B:333 C:317 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 29 |
Face 633: A:316 B:332 C:333 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 29 |
Face 634: A:317 B:334 C:318 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 30 |
Face 635: A:317 B:333 C:334 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 30 |
Face 636: A:318 B:335 C:319 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 31 |
Face 637: A:318 B:334 C:335 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 31 |
Face 638: A:319 B:320 C:304 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 32 |
Face 639: A:319 B:335 C:320 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 32 |
Face 640: A:320 B:337 C:321 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Page 40 |
Smoothing: 1 |
Face 641: A:320 B:336 C:337 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 1 |
Face 642: A:321 B:338 C:322 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 2 |
Face 643: A:321 B:337 C:338 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 2 |
Face 644: A:322 B:339 C:323 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 3 |
Face 645: A:322 B:338 C:339 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 3 |
Face 646: A:323 B:340 C:324 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 4 |
Face 647: A:323 B:339 C:340 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 4 |
Face 648: A:324 B:341 C:325 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 5 |
Face 649: A:324 B:340 C:341 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 5 |
Face 650: A:325 B:342 C:326 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 6 |
Face 651: A:325 B:341 C:342 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 6 |
Face 652: A:326 B:343 C:327 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 7 |
Face 653: A:326 B:342 C:343 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 7 |
Face 654: A:327 B:344 C:328 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 8 |
Face 655: A:327 B:343 C:344 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 8 |
Face 656: A:328 B:345 C:329 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 9 |
Face 657: A:328 B:344 C:345 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 9 |
Face 658: A:329 B:346 C:330 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 10 |
Face 659: A:329 B:345 C:346 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 10 |
Face 660: A:330 B:347 C:331 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 11 |
Page 41 |
Face 661: A:330 B:346 C:347 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 11 |
Face 662: A:331 B:348 C:332 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 12 |
Face 663: A:331 B:347 C:348 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 12 |
Face 664: A:332 B:349 C:333 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 13 |
Face 665: A:332 B:348 C:349 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 13 |
Face 666: A:333 B:350 C:334 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 14 |
Face 667: A:333 B:349 C:350 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 14 |
Face 668: A:334 B:351 C:335 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 15 |
Face 669: A:334 B:350 C:351 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 15 |
Face 670: A:335 B:336 C:320 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 16 |
Face 671: A:335 B:351 C:336 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 16 |
Face 672: A:336 B:353 C:337 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 17 |
Face 673: A:336 B:352 C:353 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 17 |
Face 674: A:337 B:354 C:338 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 18 |
Face 675: A:337 B:353 C:354 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 18 |
Face 676: A:338 B:355 C:339 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 19 |
Face 677: A:338 B:354 C:355 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 19 |
Face 678: A:339 B:356 C:340 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 20 |
Face 679: A:339 B:355 C:356 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 20 |
Face 680: A:340 B:357 C:341 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 21 |
Face 681: A:340 B:356 C:357 AB:1 BC:1 CA:0 |
Page 42 |
Material:"BLUE PLASTIC" |
Smoothing: 21 |
Face 682: A:341 B:358 C:342 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 22 |
Face 683: A:341 B:357 C:358 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 22 |
Face 684: A:342 B:359 C:343 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 23 |
Face 685: A:342 B:358 C:359 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 23 |
Face 686: A:343 B:360 C:344 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 24 |
Face 687: A:343 B:359 C:360 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 24 |
Face 688: A:344 B:361 C:345 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 25 |
Face 689: A:344 B:360 C:361 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 25 |
Face 690: A:345 B:362 C:346 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 26 |
Face 691: A:345 B:361 C:362 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 26 |
Face 692: A:346 B:363 C:347 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 27 |
Face 693: A:346 B:362 C:363 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 27 |
Face 694: A:347 B:364 C:348 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 28 |
Face 695: A:347 B:363 C:364 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 28 |
Face 696: A:348 B:365 C:349 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 29 |
Face 697: A:348 B:364 C:365 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 29 |
Face 698: A:349 B:366 C:350 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 30 |
Face 699: A:349 B:365 C:366 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 30 |
Face 700: A:350 B:367 C:351 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 31 |
Face 701: A:350 B:366 C:367 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Page 43 |
Smoothing: 31 |
Face 702: A:351 B:352 C:336 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 32 |
Face 703: A:351 B:367 C:352 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 32 |
Face 704: A:352 B:369 C:353 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 1 |
Face 705: A:352 B:368 C:369 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 1 |
Face 706: A:353 B:370 C:354 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 2 |
Face 707: A:353 B:369 C:370 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 2 |
Face 708: A:354 B:371 C:355 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 3 |
Face 709: A:354 B:370 C:371 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 3 |
Face 710: A:355 B:372 C:356 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 4 |
Face 711: A:355 B:371 C:372 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 4 |
Face 712: A:356 B:373 C:357 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 5 |
Face 713: A:356 B:372 C:373 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 5 |
Face 714: A:357 B:374 C:358 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 6 |
Face 715: A:357 B:373 C:374 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 6 |
Face 716: A:358 B:375 C:359 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 7 |
Face 717: A:358 B:374 C:375 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 7 |
Face 718: A:359 B:376 C:360 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 8 |
Face 719: A:359 B:375 C:376 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 8 |
Face 720: A:360 B:377 C:361 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 9 |
Face 721: A:360 B:376 C:377 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 9 |
Page 44 |
Face 722: A:361 B:378 C:362 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 10 |
Face 723: A:361 B:377 C:378 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 10 |
Face 724: A:362 B:379 C:363 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 11 |
Face 725: A:362 B:378 C:379 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 11 |
Face 726: A:363 B:380 C:364 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 12 |
Face 727: A:363 B:379 C:380 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 12 |
Face 728: A:364 B:381 C:365 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 13 |
Face 729: A:364 B:380 C:381 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 13 |
Face 730: A:365 B:382 C:366 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 14 |
Face 731: A:365 B:381 C:382 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 14 |
Face 732: A:366 B:383 C:367 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 15 |
Face 733: A:366 B:382 C:383 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 15 |
Face 734: A:367 B:368 C:352 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 16 |
Face 735: A:367 B:383 C:368 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 16 |
Face 736: A:368 B:385 C:369 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 17 |
Face 737: A:368 B:384 C:385 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 17 |
Face 738: A:369 B:386 C:370 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 18 |
Face 739: A:369 B:385 C:386 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 18 |
Face 740: A:370 B:387 C:371 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 19 |
Face 741: A:370 B:386 C:387 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 19 |
Face 742: A:371 B:388 C:372 AB:0 BC:1 CA:1 |
Page 45 |
Material:"BLUE PLASTIC" |
Smoothing: 20 |
Face 743: A:371 B:387 C:388 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 20 |
Face 744: A:372 B:389 C:373 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 21 |
Face 745: A:372 B:388 C:389 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 21 |
Face 746: A:373 B:390 C:374 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 22 |
Face 747: A:373 B:389 C:390 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 22 |
Face 748: A:374 B:391 C:375 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 23 |
Face 749: A:374 B:390 C:391 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 23 |
Face 750: A:375 B:392 C:376 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 24 |
Face 751: A:375 B:391 C:392 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 24 |
Face 752: A:376 B:393 C:377 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 25 |
Face 753: A:376 B:392 C:393 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 25 |
Face 754: A:377 B:394 C:378 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 26 |
Face 755: A:377 B:393 C:394 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 26 |
Face 756: A:378 B:395 C:379 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 27 |
Face 757: A:378 B:394 C:395 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 27 |
Face 758: A:379 B:396 C:380 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 28 |
Face 759: A:379 B:395 C:396 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 28 |
Face 760: A:380 B:397 C:381 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 29 |
Face 761: A:380 B:396 C:397 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 29 |
Face 762: A:381 B:398 C:382 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Page 46 |
Smoothing: 30 |
Face 763: A:381 B:397 C:398 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 30 |
Face 764: A:382 B:399 C:383 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 31 |
Face 765: A:382 B:398 C:399 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 31 |
Face 766: A:383 B:384 C:368 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 32 |
Face 767: A:383 B:399 C:384 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 32 |
Face 768: A:384 B:401 C:385 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 1 |
Face 769: A:384 B:400 C:401 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 1 |
Face 770: A:385 B:402 C:386 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 2 |
Face 771: A:385 B:401 C:402 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 2 |
Face 772: A:386 B:403 C:387 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 3 |
Face 773: A:386 B:402 C:403 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 3 |
Face 774: A:387 B:404 C:388 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 4 |
Face 775: A:387 B:403 C:404 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 4 |
Face 776: A:388 B:405 C:389 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 5 |
Face 777: A:388 B:404 C:405 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 5 |
Face 778: A:389 B:406 C:390 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 6 |
Face 779: A:389 B:405 C:406 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 6 |
Face 780: A:390 B:407 C:391 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 7 |
Face 781: A:390 B:406 C:407 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 7 |
Face 782: A:391 B:408 C:392 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 8 |
Page 47 |
Face 783: A:391 B:407 C:408 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 8 |
Face 784: A:392 B:409 C:393 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 9 |
Face 785: A:392 B:408 C:409 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 9 |
Face 786: A:393 B:410 C:394 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 10 |
Face 787: A:393 B:409 C:410 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 10 |
Face 788: A:394 B:411 C:395 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 11 |
Face 789: A:394 B:410 C:411 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 11 |
Face 790: A:395 B:412 C:396 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 12 |
Face 791: A:395 B:411 C:412 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 12 |
Face 792: A:396 B:413 C:397 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 13 |
Face 793: A:396 B:412 C:413 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 13 |
Face 794: A:397 B:414 C:398 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 14 |
Face 795: A:397 B:413 C:414 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 14 |
Face 796: A:398 B:415 C:399 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 15 |
Face 797: A:398 B:414 C:415 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 15 |
Face 798: A:399 B:400 C:384 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 16 |
Face 799: A:399 B:415 C:400 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 16 |
Face 800: A:400 B:417 C:401 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 17 |
Face 801: A:400 B:416 C:417 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 17 |
Face 802: A:401 B:418 C:402 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 18 |
Face 803: A:401 B:417 C:418 AB:1 BC:1 CA:0 |
Page 48 |
Material:"BLUE PLASTIC" |
Smoothing: 18 |
Face 804: A:402 B:419 C:403 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 19 |
Face 805: A:402 B:418 C:419 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 19 |
Face 806: A:403 B:420 C:404 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 20 |
Face 807: A:403 B:419 C:420 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 20 |
Face 808: A:404 B:421 C:405 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 21 |
Face 809: A:404 B:420 C:421 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 21 |
Face 810: A:405 B:422 C:406 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 22 |
Face 811: A:405 B:421 C:422 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 22 |
Face 812: A:406 B:423 C:407 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 23 |
Face 813: A:406 B:422 C:423 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 23 |
Face 814: A:407 B:424 C:408 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 24 |
Face 815: A:407 B:423 C:424 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 24 |
Face 816: A:408 B:425 C:409 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 25 |
Face 817: A:408 B:424 C:425 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 25 |
Face 818: A:409 B:426 C:410 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 26 |
Face 819: A:409 B:425 C:426 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 26 |
Face 820: A:410 B:427 C:411 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 27 |
Face 821: A:410 B:426 C:427 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 27 |
Face 822: A:411 B:428 C:412 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 28 |
Face 823: A:411 B:427 C:428 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Page 49 |
Smoothing: 28 |
Face 824: A:412 B:429 C:413 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 29 |
Face 825: A:412 B:428 C:429 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 29 |
Face 826: A:413 B:430 C:414 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 30 |
Face 827: A:413 B:429 C:430 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 30 |
Face 828: A:414 B:431 C:415 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 31 |
Face 829: A:414 B:430 C:431 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 31 |
Face 830: A:415 B:416 C:400 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 32 |
Face 831: A:415 B:431 C:416 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 32 |
Face 832: A:416 B:433 C:417 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 1 |
Face 833: A:416 B:432 C:433 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 1 |
Face 834: A:417 B:434 C:418 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 2 |
Face 835: A:417 B:433 C:434 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 2 |
Face 836: A:418 B:435 C:419 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 3 |
Face 837: A:418 B:434 C:435 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 3 |
Face 838: A:419 B:436 C:420 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 4 |
Face 839: A:419 B:435 C:436 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 4 |
Face 840: A:420 B:437 C:421 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 5 |
Face 841: A:420 B:436 C:437 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 5 |
Face 842: A:421 B:438 C:422 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 6 |
Face 843: A:421 B:437 C:438 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 6 |
Page 50 |
Face 844: A:422 B:439 C:423 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 7 |
Face 845: A:422 B:438 C:439 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 7 |
Face 846: A:423 B:440 C:424 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 8 |
Face 847: A:423 B:439 C:440 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 8 |
Face 848: A:424 B:441 C:425 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 9 |
Face 849: A:424 B:440 C:441 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 9 |
Face 850: A:425 B:442 C:426 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 10 |
Face 851: A:425 B:441 C:442 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 10 |
Face 852: A:426 B:443 C:427 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 11 |
Face 853: A:426 B:442 C:443 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 11 |
Face 854: A:427 B:444 C:428 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 12 |
Face 855: A:427 B:443 C:444 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 12 |
Face 856: A:428 B:445 C:429 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 13 |
Face 857: A:428 B:444 C:445 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 13 |
Face 858: A:429 B:446 C:430 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 14 |
Face 859: A:429 B:445 C:446 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 14 |
Face 860: A:430 B:447 C:431 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 15 |
Face 861: A:430 B:446 C:447 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 15 |
Face 862: A:431 B:432 C:416 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 16 |
Face 863: A:431 B:447 C:432 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 16 |
Face 864: A:432 B:449 C:433 AB:0 BC:1 CA:1 |
Page 51 |
Material:"BLUE PLASTIC" |
Smoothing: 17 |
Face 865: A:432 B:448 C:449 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 17 |
Face 866: A:433 B:450 C:434 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 18 |
Face 867: A:433 B:449 C:450 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 18 |
Face 868: A:434 B:451 C:435 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 19 |
Face 869: A:434 B:450 C:451 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 19 |
Face 870: A:435 B:452 C:436 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 20 |
Face 871: A:435 B:451 C:452 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 20 |
Face 872: A:436 B:453 C:437 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 21 |
Face 873: A:436 B:452 C:453 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 21 |
Face 874: A:437 B:454 C:438 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 22 |
Face 875: A:437 B:453 C:454 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 22 |
Face 876: A:438 B:455 C:439 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 23 |
Face 877: A:438 B:454 C:455 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 23 |
Face 878: A:439 B:456 C:440 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 24 |
Face 879: A:439 B:455 C:456 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 24 |
Face 880: A:440 B:457 C:441 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 25 |
Face 881: A:440 B:456 C:457 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 25 |
Face 882: A:441 B:458 C:442 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 26 |
Face 883: A:441 B:457 C:458 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 26 |
Face 884: A:442 B:459 C:443 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Page 52 |
Smoothing: 27 |
Face 885: A:442 B:458 C:459 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 27 |
Face 886: A:443 B:460 C:444 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 28 |
Face 887: A:443 B:459 C:460 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 28 |
Face 888: A:444 B:461 C:445 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 29 |
Face 889: A:444 B:460 C:461 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 29 |
Face 890: A:445 B:462 C:446 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 30 |
Face 891: A:445 B:461 C:462 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 30 |
Face 892: A:446 B:463 C:447 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 31 |
Face 893: A:446 B:462 C:463 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 31 |
Face 894: A:447 B:448 C:432 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 32 |
Face 895: A:447 B:463 C:448 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 32 |
Face 896: A:448 B:465 C:449 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 1 |
Face 897: A:448 B:464 C:465 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 1 |
Face 898: A:449 B:466 C:450 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 2 |
Face 899: A:449 B:465 C:466 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 2 |
Face 900: A:450 B:467 C:451 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 3 |
Face 901: A:450 B:466 C:467 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 3 |
Face 902: A:451 B:468 C:452 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 4 |
Face 903: A:451 B:467 C:468 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 4 |
Face 904: A:452 B:469 C:453 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 5 |
Page 53 |
Face 905: A:452 B:468 C:469 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 5 |
Face 906: A:453 B:470 C:454 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 6 |
Face 907: A:453 B:469 C:470 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 6 |
Face 908: A:454 B:471 C:455 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 7 |
Face 909: A:454 B:470 C:471 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 7 |
Face 910: A:455 B:472 C:456 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 8 |
Face 911: A:455 B:471 C:472 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 8 |
Face 912: A:456 B:473 C:457 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 9 |
Face 913: A:456 B:472 C:473 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 9 |
Face 914: A:457 B:474 C:458 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 10 |
Face 915: A:457 B:473 C:474 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 10 |
Face 916: A:458 B:475 C:459 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 11 |
Face 917: A:458 B:474 C:475 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 11 |
Face 918: A:459 B:476 C:460 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 12 |
Face 919: A:459 B:475 C:476 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 12 |
Face 920: A:460 B:477 C:461 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 13 |
Face 921: A:460 B:476 C:477 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 13 |
Face 922: A:461 B:478 C:462 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 14 |
Face 923: A:461 B:477 C:478 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 14 |
Face 924: A:462 B:479 C:463 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 15 |
Face 925: A:462 B:478 C:479 AB:1 BC:1 CA:0 |
Page 54 |
Material:"BLUE PLASTIC" |
Smoothing: 15 |
Face 926: A:463 B:464 C:448 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 16 |
Face 927: A:463 B:479 C:464 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 16 |
Face 928: A:464 B:481 C:465 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 17 |
Face 929: A:464 B:480 C:481 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 17 |
Face 930: A:465 B:482 C:466 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 18 |
Face 931: A:465 B:481 C:482 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 18 |
Face 932: A:466 B:483 C:467 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 19 |
Face 933: A:466 B:482 C:483 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 19 |
Face 934: A:467 B:484 C:468 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 20 |
Face 935: A:467 B:483 C:484 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 20 |
Face 936: A:468 B:485 C:469 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 21 |
Face 937: A:468 B:484 C:485 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 21 |
Face 938: A:469 B:486 C:470 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 22 |
Face 939: A:469 B:485 C:486 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 22 |
Face 940: A:470 B:487 C:471 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 23 |
Face 941: A:470 B:486 C:487 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 23 |
Face 942: A:471 B:488 C:472 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 24 |
Face 943: A:471 B:487 C:488 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 24 |
Face 944: A:472 B:489 C:473 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 25 |
Face 945: A:472 B:488 C:489 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Page 55 |
Smoothing: 25 |
Face 946: A:473 B:490 C:474 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 26 |
Face 947: A:473 B:489 C:490 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 26 |
Face 948: A:474 B:491 C:475 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 27 |
Face 949: A:474 B:490 C:491 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 27 |
Face 950: A:475 B:492 C:476 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 28 |
Face 951: A:475 B:491 C:492 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 28 |
Face 952: A:476 B:493 C:477 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 29 |
Face 953: A:476 B:492 C:493 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 29 |
Face 954: A:477 B:494 C:478 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 30 |
Face 955: A:477 B:493 C:494 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 30 |
Face 956: A:478 B:495 C:479 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 31 |
Face 957: A:478 B:494 C:495 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 31 |
Face 958: A:479 B:480 C:464 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 32 |
Face 959: A:479 B:495 C:480 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 32 |
Face 960: A:480 B:497 C:481 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 1 |
Face 961: A:480 B:496 C:497 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 1 |
Face 962: A:481 B:498 C:482 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 2 |
Face 963: A:481 B:497 C:498 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 2 |
Face 964: A:482 B:499 C:483 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 3 |
Face 965: A:482 B:498 C:499 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 3 |
Page 56 |
Face 966: A:483 B:500 C:484 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 4 |
Face 967: A:483 B:499 C:500 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 4 |
Face 968: A:484 B:501 C:485 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 5 |
Face 969: A:484 B:500 C:501 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 5 |
Face 970: A:485 B:502 C:486 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 6 |
Face 971: A:485 B:501 C:502 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 6 |
Face 972: A:486 B:503 C:487 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 7 |
Face 973: A:486 B:502 C:503 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 7 |
Face 974: A:487 B:504 C:488 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 8 |
Face 975: A:487 B:503 C:504 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 8 |
Face 976: A:488 B:505 C:489 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 9 |
Face 977: A:488 B:504 C:505 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 9 |
Face 978: A:489 B:506 C:490 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 10 |
Face 979: A:489 B:505 C:506 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 10 |
Face 980: A:490 B:507 C:491 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 11 |
Face 981: A:490 B:506 C:507 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 11 |
Face 982: A:491 B:508 C:492 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 12 |
Face 983: A:491 B:507 C:508 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 12 |
Face 984: A:492 B:509 C:493 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 13 |
Face 985: A:492 B:508 C:509 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 13 |
Face 986: A:493 B:510 C:494 AB:0 BC:1 CA:1 |
Page 57 |
Material:"BLUE PLASTIC" |
Smoothing: 14 |
Face 987: A:493 B:509 C:510 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 14 |
Face 988: A:494 B:511 C:495 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 15 |
Face 989: A:494 B:510 C:511 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 15 |
Face 990: A:495 B:496 C:480 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 16 |
Face 991: A:495 B:511 C:496 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 16 |
Face 992: A:496 B:257 C:497 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 17 |
Face 993: A:496 B:256 C:257 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 17 |
Face 994: A:497 B:258 C:498 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 18 |
Face 995: A:497 B:257 C:258 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 18 |
Face 996: A:498 B:259 C:499 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 19 |
Face 997: A:498 B:258 C:259 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 19 |
Face 998: A:499 B:260 C:500 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 20 |
Face 999: A:499 B:259 C:260 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 20 |
Face 1000: A:500 B:261 C:501 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 21 |
Face 1001: A:500 B:260 C:261 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 21 |
Face 1002: A:501 B:262 C:502 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 22 |
Face 1003: A:501 B:261 C:262 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 22 |
Face 1004: A:502 B:263 C:503 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 23 |
Face 1005: A:502 B:262 C:263 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 23 |
Face 1006: A:503 B:264 C:504 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Page 58 |
Smoothing: 24 |
Face 1007: A:503 B:263 C:264 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 24 |
Face 1008: A:504 B:265 C:505 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 25 |
Face 1009: A:504 B:264 C:265 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 25 |
Face 1010: A:505 B:266 C:506 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 26 |
Face 1011: A:505 B:265 C:266 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 26 |
Face 1012: A:506 B:267 C:507 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 27 |
Face 1013: A:506 B:266 C:267 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 27 |
Face 1014: A:507 B:268 C:508 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 28 |
Face 1015: A:507 B:267 C:268 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 28 |
Face 1016: A:508 B:269 C:509 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 29 |
Face 1017: A:508 B:268 C:269 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 29 |
Face 1018: A:509 B:270 C:510 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 30 |
Face 1019: A:509 B:269 C:270 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 30 |
Face 1020: A:510 B:271 C:511 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 31 |
Face 1021: A:510 B:270 C:271 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 31 |
Face 1022: A:511 B:256 C:496 AB:0 BC:1 CA:1 |
Material:"BLUE PLASTIC" |
Smoothing: 32 |
Face 1023: A:511 B:271 C:256 AB:1 BC:1 CA:0 |
Material:"BLUE PLASTIC" |
Smoothing: 32 |
Named object: "Light01" |
Direct light |
Position: X:-184.258514 Y:-220.365723 Z:140.796509 |
Light color: Red=0.886275 Green=0.886275 Blue=0.886275 |
Page 59 |
/programs/demos/view3ds/asc_objects/3TORUS.ASC |
---|
0,0 → 1,2112 |
Ambient light color: Red=0.039216 Green=0.039216 Blue=0.039216 |
Named object: "Object02" |
Tri-mesh, Vertices: 384 Faces: 768 |
Vertex list: |
Vertex 0: X: 209.644867 Y: -0.000012 Z: -140.53125 |
Vertex 1: X: 204.976227 Y: -13.569129 Z: -137.401718 |
Vertex 2: X: 193.705139 Y: -19.18964 Z: -129.846359 |
Vertex 3: X: 182.434036 Y: -13.569127 Z: -122.291016 |
Vertex 4: X: 177.765396 Y: -0.000009 Z: -119.161491 |
Vertex 5: X: 182.434052 Y: 13.569108 Z: -122.291023 |
Vertex 6: X: 193.705139 Y: 19.189617 Z: -129.846375 |
Vertex 7: X: 204.976227 Y: 13.569106 Z: -137.401733 |
Vertex 8: X: 247.465591 Y: -0.000004 Z: -49.606297 |
Vertex 9: X: 241.954712 Y: -13.56912 Z: -48.501598 |
Vertex 10: X: 228.650269 Y: -19.189632 Z: -45.834625 |
Vertex 11: X: 215.345825 Y: -13.56912 Z: -43.167652 |
Vertex 12: X: 209.834946 Y: -0.000002 Z: -42.062958 |
Vertex 13: X: 215.345825 Y: 13.569115 Z: -43.167652 |
Vertex 14: X: 228.650269 Y: 19.189625 Z: -45.834625 |
Vertex 15: X: 241.954712 Y: 13.569115 Z: -48.501598 |
Vertex 16: X: 247.611908 Y: 0.000004 Z: 48.870781 |
Vertex 17: X: 242.097763 Y: -13.569113 Z: 47.782467 |
Vertex 18: X: 228.785461 Y: -19.189625 Z: 45.155037 |
Vertex 19: X: 215.473145 Y: -13.569113 Z: 42.527607 |
Vertex 20: X: 209.959015 Y: 0.000005 Z: 41.439289 |
Vertex 21: X: 215.47316 Y: 13.569122 Z: 42.527607 |
Vertex 22: X: 228.785461 Y: 19.189632 Z: 45.155037 |
Vertex 23: X: 242.097763 Y: 13.569122 Z: 47.782467 |
Vertex 24: X: 210.061508 Y: 0.000012 Z: 139.907715 |
Vertex 25: X: 205.383591 Y: -13.569104 Z: 136.792068 |
Vertex 26: X: 194.090088 Y: -19.189617 Z: 129.270248 |
Vertex 27: X: 182.7966 Y: -13.569106 Z: 121.748413 |
Vertex 28: X: 178.118683 Y: 0.000012 Z: 118.632767 |
Vertex 29: X: 182.7966 Y: 13.569129 Z: 121.748413 |
Vertex 30: X: 194.090088 Y: 19.18964 Z: 129.270233 |
Vertex 31: X: 205.383575 Y: 13.569131 Z: 136.792053 |
Vertex 32: X: 140.531113 Y: 0.000018 Z: 209.644958 |
Vertex 33: X: 137.401596 Y: -13.569098 Z: 204.976334 |
Vertex 34: X: 129.846252 Y: -19.189611 Z: 193.705215 |
Vertex 35: X: 122.290901 Y: -13.5691 Z: 182.434128 |
Vertex 36: X: 119.161377 Y: 0.000017 Z: 177.765472 |
Vertex 37: X: 122.290901 Y: 13.569135 Z: 182.434113 |
Vertex 38: X: 129.846252 Y: 19.189646 Z: 193.7052 |
Vertex 39: X: 137.401596 Y: 13.569137 Z: 204.976318 |
Vertex 40: X: 49.606136 Y: 0.000022 Z: 247.465637 |
Vertex 41: X: 48.501442 Y: -13.569096 Z: 241.954758 |
Vertex 42: X: 45.83448 Y: -19.18961 Z: 228.650314 |
Vertex 43: X: 43.167515 Y: -13.569098 Z: 215.345871 |
Vertex 44: X: 42.06282 Y: 0.00002 Z: 209.834991 |
Vertex 45: X: 43.167515 Y: 13.569138 Z: 215.345856 |
Vertex 46: X: 45.83448 Y: 19.189648 Z: 228.650299 |
Vertex 47: X: 48.501442 Y: 13.569139 Z: 241.954742 |
Vertex 48: X: -48.870941 Y: 0.000022 Z: 247.611877 |
Vertex 49: X: -47.782619 Y: -13.569096 Z: 242.097733 |
Vertex 50: X: -45.155182 Y: -19.18961 Z: 228.785446 |
Vertex 51: X: -42.527744 Y: -13.569098 Z: 215.473129 |
Vertex 52: X: -41.439423 Y: 0.00002 Z: 209.958984 |
Vertex 53: X: -42.527744 Y: 13.569138 Z: 215.473114 |
Vertex 54: X: -45.155182 Y: 19.189648 Z: 228.785431 |
Vertex 55: X: -47.782619 Y: 13.569139 Z: 242.097717 |
Page 1 |
Vertex 56: X: -139.907852 Y: 0.000018 Z: 210.061401 |
Vertex 57: X: -136.792206 Y: -13.569098 Z: 205.383499 |
Vertex 58: X: -129.27037 Y: -19.189611 Z: 194.090012 |
Vertex 59: X: -121.748528 Y: -13.5691 Z: 182.796524 |
Vertex 60: X: -118.632881 Y: 0.000017 Z: 178.118591 |
Vertex 61: X: -121.748528 Y: 13.569135 Z: 182.796509 |
Vertex 62: X: -129.27037 Y: 19.189646 Z: 194.089996 |
Vertex 63: X: -136.792206 Y: 13.569137 Z: 205.383484 |
Vertex 64: X: -209.64505 Y: 0.000012 Z: 140.530975 |
Vertex 65: X: -204.97641 Y: -13.569104 Z: 137.401474 |
Vertex 66: X: -193.705307 Y: -19.189617 Z: 129.846115 |
Vertex 67: X: -182.434204 Y: -13.569106 Z: 122.290787 |
Vertex 68: X: -177.765549 Y: 0.000012 Z: 119.161263 |
Vertex 69: X: -182.434204 Y: 13.569129 Z: 122.290787 |
Vertex 70: X: -193.705307 Y: 19.18964 Z: 129.8461 |
Vertex 71: X: -204.97641 Y: 13.569131 Z: 137.401459 |
Vertex 72: X: -247.465668 Y: 0.000004 Z: 49.60598 |
Vertex 73: X: -241.954788 Y: -13.569113 Z: 48.501289 |
Vertex 74: X: -228.650345 Y: -19.189625 Z: 45.834332 |
Vertex 75: X: -215.345886 Y: -13.569113 Z: 43.167377 |
Vertex 76: X: -209.835007 Y: 0.000005 Z: 42.062687 |
Vertex 77: X: -215.345901 Y: 13.569122 Z: 43.167377 |
Vertex 78: X: -228.650345 Y: 19.189632 Z: 45.834332 |
Vertex 79: X: -241.954788 Y: 13.569122 Z: 48.501289 |
Vertex 80: X: -247.611847 Y: -0.000004 Z: -48.871098 |
Vertex 81: X: -242.097702 Y: -13.56912 Z: -47.782776 |
Vertex 82: X: -228.7854 Y: -19.189632 Z: -45.155327 |
Vertex 83: X: -215.473099 Y: -13.56912 Z: -42.527882 |
Vertex 84: X: -209.958969 Y: -0.000002 Z: -41.439556 |
Vertex 85: X: -215.473099 Y: 13.569115 Z: -42.527882 |
Vertex 86: X: -228.7854 Y: 19.189625 Z: -45.155327 |
Vertex 87: X: -242.097702 Y: 13.569115 Z: -47.782772 |
Vertex 88: X: -210.061325 Y: -0.000012 Z: -139.90799 |
Vertex 89: X: -205.383408 Y: -13.569129 Z: -136.792343 |
Vertex 90: X: -194.08992 Y: -19.18964 Z: -129.270493 |
Vertex 91: X: -182.796432 Y: -13.569127 Z: -121.74865 |
Vertex 92: X: -178.11853 Y: -0.000009 Z: -118.632996 |
Vertex 93: X: -182.796448 Y: 13.569108 Z: -121.74865 |
Vertex 94: X: -194.08992 Y: 19.189617 Z: -129.270508 |
Vertex 95: X: -205.383408 Y: 13.569106 Z: -136.792328 |
Vertex 96: X: -140.530869 Y: -0.000018 Z: -209.645142 |
Vertex 97: X: -137.401337 Y: -13.569135 Z: -204.976486 |
Vertex 98: X: -129.846008 Y: -19.189646 Z: -193.705368 |
Vertex 99: X: -122.29068 Y: -13.569133 Z: -182.43428 |
Vertex 100: X: -119.161156 Y: -0.000014 Z: -177.765656 |
Vertex 101: X: -122.29068 Y: 13.569102 Z: -182.434296 |
Vertex 102: X: -129.846008 Y: 19.189611 Z: -193.705383 |
Vertex 103: X: -137.401337 Y: 13.5691 Z: -204.976501 |
Vertex 104: X: -49.60582 Y: -0.000022 Z: -247.465698 |
Vertex 105: X: -48.501137 Y: -13.569138 Z: -241.954819 |
Vertex 106: X: -45.834187 Y: -19.189648 Z: -228.650345 |
Vertex 107: X: -43.16724 Y: -13.569136 Z: -215.345901 |
Vertex 108: X: -42.062553 Y: -0.000017 Z: -209.835052 |
Vertex 109: X: -43.16724 Y: 13.569099 Z: -215.345917 |
Vertex 110: X: -45.834187 Y: 19.18961 Z: -228.65036 |
Vertex 111: X: -48.501133 Y: 13.569098 Z: -241.954834 |
Vertex 112: X: 48.871262 Y: -0.000022 Z: -247.611816 |
Vertex 113: X: 47.782932 Y: -13.569138 Z: -242.097641 |
Vertex 114: X: 45.155476 Y: -19.189648 Z: -228.785355 |
Vertex 115: X: 42.528023 Y: -13.569136 Z: -215.473038 |
Vertex 116: X: 41.439693 Y: -0.000017 Z: -209.958923 |
Page 2 |
Vertex 117: X: 42.528023 Y: 13.569099 Z: -215.473083 |
Vertex 118: X: 45.155476 Y: 19.18961 Z: -228.78537 |
Vertex 119: X: 47.782932 Y: 13.569098 Z: -242.097656 |
Vertex 120: X: 139.908127 Y: -0.000018 Z: -210.061249 |
Vertex 121: X: 136.792465 Y: -13.569135 Z: -205.383316 |
Vertex 122: X: 129.270615 Y: -19.189646 Z: -194.089828 |
Vertex 123: X: 121.748764 Y: -13.569133 Z: -182.796341 |
Vertex 124: X: 118.63311 Y: -0.000014 Z: -178.118469 |
Vertex 125: X: 121.748764 Y: 13.569102 Z: -182.796356 |
Vertex 126: X: 129.270615 Y: 19.189611 Z: -194.089844 |
Vertex 127: X: 136.792465 Y: 13.5691 Z: -205.383331 |
Vertex 128: X: 249.932419 Y: -20.827681 Z: 0.000002 |
Vertex 129: X: 244.116898 Y: -20.343052 Z: 14.088573 |
Vertex 130: X: 230.076996 Y: -19.173061 Z: 19.92425 |
Vertex 131: X: 216.037094 Y: -18.003071 Z: 14.088573 |
Vertex 132: X: 210.221573 Y: -17.518446 Z: -0 |
Vertex 133: X: 216.037094 Y: -18.003075 Z: -14.088572 |
Vertex 134: X: 230.076996 Y: -19.173065 Z: -19.924246 |
Vertex 135: X: 244.116898 Y: -20.343056 Z: -14.088571 |
Vertex 136: X: 238.877838 Y: 76.402763 Z: -0.000007 |
Vertex 137: X: 233.319534 Y: 74.624992 Z: 14.088564 |
Vertex 138: X: 219.90062 Y: 70.333084 Z: 19.924242 |
Vertex 139: X: 206.481705 Y: 66.041176 Z: 14.088565 |
Vertex 140: X: 200.923401 Y: 64.263405 Z: -0.000007 |
Vertex 141: X: 206.481705 Y: 66.041176 Z: -14.088579 |
Vertex 142: X: 219.90062 Y: 70.333084 Z: -19.924253 |
Vertex 143: X: 233.319534 Y: 74.624992 Z: -14.088579 |
Vertex 144: X: 191.456238 Y: 162.001572 Z: -0.000014 |
Vertex 145: X: 187.001373 Y: 158.232056 Z: 14.088556 |
Vertex 146: X: 176.246353 Y: 149.131653 Z: 19.924234 |
Vertex 147: X: 165.491333 Y: 140.03125 Z: 14.088558 |
Vertex 148: X: 161.036453 Y: 136.261734 Z: -0.000014 |
Vertex 149: X: 165.491333 Y: 140.03125 Z: -14.088586 |
Vertex 150: X: 176.246353 Y: 149.131653 Z: -19.924261 |
Vertex 151: X: 187.001358 Y: 158.232056 Z: -14.088587 |
Vertex 152: X: 114.887154 Y: 222.937073 Z: -0.000019 |
Vertex 153: X: 112.213913 Y: 217.749695 Z: 14.088552 |
Vertex 154: X: 105.760147 Y: 205.226242 Z: 19.924231 |
Vertex 155: X: 99.306389 Y: 192.702805 Z: 14.088553 |
Vertex 156: X: 96.633148 Y: 187.515427 Z: -0.000018 |
Vertex 157: X: 99.306389 Y: 192.702805 Z: -14.088591 |
Vertex 158: X: 105.760147 Y: 205.226242 Z: -19.924265 |
Vertex 159: X: 112.213913 Y: 217.749695 Z: -14.088592 |
Vertex 160: X: 20.82752 Y: 249.932419 Z: -0.000022 |
Vertex 161: X: 20.342897 Y: 244.116898 Z: 14.08855 |
Vertex 162: X: 19.172916 Y: 230.076996 Z: 19.924227 |
Vertex 163: X: 18.002934 Y: 216.037094 Z: 14.088552 |
Vertex 164: X: 17.518311 Y: 210.221573 Z: -0.00002 |
Vertex 165: X: 18.002934 Y: 216.037094 Z: -14.088593 |
Vertex 166: X: 19.172916 Y: 230.076996 Z: -19.924269 |
Vertex 167: X: 20.342897 Y: 244.116898 Z: -14.088593 |
Vertex 168: X: -76.402802 Y: 238.877823 Z: -0.000021 |
Vertex 169: X: -74.625031 Y: 233.319519 Z: 14.088551 |
Vertex 170: X: -70.333122 Y: 219.900604 Z: 19.924229 |
Vertex 171: X: -66.041206 Y: 206.481689 Z: 14.088552 |
Vertex 172: X: -64.263435 Y: 200.923386 Z: -0.000019 |
Vertex 173: X: -66.041206 Y: 206.481689 Z: -14.088592 |
Vertex 174: X: -70.333122 Y: 219.900604 Z: -19.924267 |
Vertex 175: X: -74.625031 Y: 233.319519 Z: -14.088593 |
Vertex 176: X: -162.001602 Y: 191.456223 Z: -0.000017 |
Vertex 177: X: -158.232086 Y: 187.001358 Z: 14.088554 |
Page 3 |
Vertex 178: X: -149.131683 Y: 176.246338 Z: 19.924232 |
Vertex 179: X: -140.031281 Y: 165.491318 Z: 14.088556 |
Vertex 180: X: -136.261765 Y: 161.036438 Z: -0.000016 |
Vertex 181: X: -140.031281 Y: 165.491318 Z: -14.088588 |
Vertex 182: X: -149.131683 Y: 176.246338 Z: -19.924263 |
Vertex 183: X: -158.232086 Y: 187.001358 Z: -14.088589 |
Vertex 184: X: -222.937103 Y: 114.887123 Z: -0.00001 |
Vertex 185: X: -217.749725 Y: 112.213882 Z: 14.088561 |
Vertex 186: X: -205.226273 Y: 105.760124 Z: 19.924238 |
Vertex 187: X: -192.70282 Y: 99.306358 Z: 14.088562 |
Vertex 188: X: -187.515442 Y: 96.633125 Z: -0.00001 |
Vertex 189: X: -192.702835 Y: 99.306358 Z: -14.088582 |
Vertex 190: X: -205.226273 Y: 105.760124 Z: -19.924257 |
Vertex 191: X: -217.749725 Y: 112.213882 Z: -14.088582 |
Vertex 192: X: -249.932434 Y: 20.82748 Z: -0.000002 |
Vertex 193: X: -244.116913 Y: 20.342861 Z: 14.088569 |
Vertex 194: X: -230.077011 Y: 19.172882 Z: 19.924246 |
Vertex 195: X: -216.037094 Y: 18.002901 Z: 14.088569 |
Vertex 196: X: -210.221573 Y: 17.518278 Z: -0.000003 |
Vertex 197: X: -216.037109 Y: 18.002899 Z: -14.088575 |
Vertex 198: X: -230.077011 Y: 19.172878 Z: -19.92425 |
Vertex 199: X: -244.116913 Y: 20.342857 Z: -14.088574 |
Vertex 200: X: -238.877777 Y: -76.402954 Z: 0.000007 |
Vertex 201: X: -233.319473 Y: -74.625183 Z: 14.088577 |
Vertex 202: X: -219.900558 Y: -70.333267 Z: 19.924253 |
Vertex 203: X: -206.481644 Y: -66.041344 Z: 14.088576 |
Vertex 204: X: -200.923355 Y: -64.263573 Z: 0.000004 |
Vertex 205: X: -206.481659 Y: -66.041344 Z: -14.088568 |
Vertex 206: X: -219.900558 Y: -70.333267 Z: -19.924242 |
Vertex 207: X: -233.319473 Y: -74.625183 Z: -14.088566 |
Vertex 208: X: -191.456116 Y: -162.001724 Z: 0.000014 |
Vertex 209: X: -187.001251 Y: -158.232208 Z: 14.088585 |
Vertex 210: X: -176.246231 Y: -149.13179 Z: 19.924261 |
Vertex 211: X: -165.491226 Y: -140.031372 Z: 14.088583 |
Vertex 212: X: -161.036362 Y: -136.261856 Z: 0.00001 |
Vertex 213: X: -165.491226 Y: -140.031372 Z: -14.088561 |
Vertex 214: X: -176.246246 Y: -149.13179 Z: -19.924234 |
Vertex 215: X: -187.001251 Y: -158.232208 Z: -14.088558 |
Vertex 216: X: -114.886971 Y: -222.93718 Z: 0.000019 |
Vertex 217: X: -112.213737 Y: -217.749802 Z: 14.08859 |
Vertex 218: X: -105.759987 Y: -205.226349 Z: 19.924265 |
Vertex 219: X: -99.306229 Y: -192.702896 Z: 14.088588 |
Vertex 220: X: -96.633003 Y: -187.515503 Z: 0.000015 |
Vertex 221: X: -99.306236 Y: -192.702896 Z: -14.088556 |
Vertex 222: X: -105.759987 Y: -205.226349 Z: -19.924231 |
Vertex 223: X: -112.213737 Y: -217.749802 Z: -14.088553 |
Vertex 224: X: -20.82732 Y: -249.932449 Z: 0.000022 |
Vertex 225: X: -20.342703 Y: -244.116928 Z: 14.088592 |
Vertex 226: X: -19.172731 Y: -230.077026 Z: 19.924269 |
Vertex 227: X: -18.002762 Y: -216.037109 Z: 14.08859 |
Vertex 228: X: -17.518143 Y: -210.221588 Z: 0.000017 |
Vertex 229: X: -18.002762 Y: -216.037109 Z: -14.088554 |
Vertex 230: X: -19.172731 Y: -230.077026 Z: -19.924227 |
Vertex 231: X: -20.342703 Y: -244.116928 Z: -14.088552 |
Vertex 232: X: 76.403107 Y: -238.877731 Z: 0.000021 |
Vertex 233: X: 74.625328 Y: -233.319427 Z: 14.088591 |
Vertex 234: X: 70.333405 Y: -219.900528 Z: 19.924267 |
Vertex 235: X: 66.041473 Y: -206.481613 Z: 14.088589 |
Vertex 236: X: 64.263695 Y: -200.923325 Z: 0.000016 |
Vertex 237: X: 66.041473 Y: -206.481613 Z: -14.088555 |
Vertex 238: X: 70.333405 Y: -219.900528 Z: -19.924229 |
Page 4 |
Vertex 239: X: 74.625328 Y: -233.319427 Z: -14.088552 |
Vertex 240: X: 162.001846 Y: -191.456024 Z: 0.000017 |
Vertex 241: X: 158.23233 Y: -187.001144 Z: 14.088587 |
Vertex 242: X: 149.131897 Y: -176.24614 Z: 19.924263 |
Vertex 243: X: 140.031479 Y: -165.491135 Z: 14.088585 |
Vertex 244: X: 136.261963 Y: -161.03627 Z: 0.000012 |
Vertex 245: X: 140.031479 Y: -165.491135 Z: -14.088559 |
Vertex 246: X: 149.131897 Y: -176.24614 Z: -19.924232 |
Vertex 247: X: 158.23233 Y: -187.001144 Z: -14.088556 |
Vertex 248: X: 222.937256 Y: -114.886833 Z: 0.00001 |
Vertex 249: X: 217.749878 Y: -112.2136 Z: 14.08858 |
Vertex 250: X: 205.22641 Y: -105.759857 Z: 19.924257 |
Vertex 251: X: 192.702957 Y: -99.306107 Z: 14.088579 |
Vertex 252: X: 187.515564 Y: -96.632881 Z: 0.000007 |
Vertex 253: X: 192.702957 Y: -99.306107 Z: -14.088565 |
Vertex 254: X: 205.22641 Y: -105.759857 Z: -19.924238 |
Vertex 255: X: 217.749863 Y: -112.2136 Z: -14.088563 |
Vertex 256: X: 0 Y: -209.644852 Z: -140.53125 |
Vertex 257: X: -15.663151 Y: -204.255737 Z: -136.918762 |
Vertex 258: X: -22.151039 Y: -191.245255 Z: -128.197449 |
Vertex 259: X: -15.66315 Y: -178.234756 Z: -119.476128 |
Vertex 260: X: 0.000002 Y: -172.845642 Z: -115.863632 |
Vertex 261: X: 15.663153 Y: -178.234772 Z: -119.476128 |
Vertex 262: X: 22.151039 Y: -191.245255 Z: -128.197449 |
Vertex 263: X: 15.663153 Y: -204.255737 Z: -136.918762 |
Vertex 264: X: 0 Y: -139.907639 Z: -210.061569 |
Vertex 265: X: -15.663151 Y: -136.311172 Z: -204.661728 |
Vertex 266: X: -22.151039 Y: -127.628555 Z: -191.625381 |
Vertex 267: X: -15.66315 Y: -118.945938 Z: -178.589035 |
Vertex 268: X: 0.000002 Y: -115.34948 Z: -173.189194 |
Vertex 269: X: 15.663153 Y: -118.945938 Z: -178.589035 |
Vertex 270: X: 22.151039 Y: -127.628555 Z: -191.625381 |
Vertex 271: X: 15.663153 Y: -136.311172 Z: -204.661728 |
Vertex 272: X: 0 Y: -48.870712 Z: -247.611893 |
Vertex 273: X: -15.663151 Y: -47.614445 Z: -241.246811 |
Vertex 274: X: -22.151039 Y: -44.581543 Z: -225.880081 |
Vertex 275: X: -15.66315 Y: -41.548645 Z: -210.513382 |
Vertex 276: X: 0.000002 Y: -40.292377 Z: -204.14827 |
Vertex 277: X: 15.663153 Y: -41.548645 Z: -210.513382 |
Vertex 278: X: 22.151039 Y: -44.581543 Z: -225.880081 |
Vertex 279: X: 15.663153 Y: -47.614445 Z: -241.24678 |
Vertex 280: X: 0 Y: 49.606331 Z: -247.465576 |
Vertex 281: X: -15.663151 Y: 48.331154 Z: -241.104248 |
Vertex 282: X: -22.151039 Y: 45.252605 Z: -225.746613 |
Vertex 283: X: -15.66315 Y: 42.174049 Z: -210.388977 |
Vertex 284: X: 0.000002 Y: 40.898872 Z: -204.027649 |
Vertex 285: X: 15.663153 Y: 42.174049 Z: -210.388977 |
Vertex 286: X: 22.151039 Y: 45.252605 Z: -225.746613 |
Vertex 287: X: 15.663153 Y: 48.331154 Z: -241.104248 |
Vertex 288: X: 0 Y: 140.531265 Z: -209.644836 |
Vertex 289: X: -15.663151 Y: 136.918777 Z: -204.255737 |
Vertex 290: X: -22.151039 Y: 128.197449 Z: -191.245239 |
Vertex 291: X: -15.66315 Y: 119.476128 Z: -178.234741 |
Vertex 292: X: 0.000002 Y: 115.863632 Z: -172.845642 |
Vertex 293: X: 15.663153 Y: 119.476128 Z: -178.234772 |
Vertex 294: X: 22.151039 Y: 128.197449 Z: -191.245239 |
Vertex 295: X: 15.663153 Y: 136.918762 Z: -204.255737 |
Vertex 296: X: 0 Y: 210.061569 Z: -139.907608 |
Vertex 297: X: -15.663151 Y: 204.661728 Z: -136.311142 |
Vertex 298: X: -22.151039 Y: 191.625381 Z: -127.62851 |
Vertex 299: X: -15.66315 Y: 178.589035 Z: -118.9459 |
Page 5 |
Vertex 300: X: 0.000002 Y: 173.189194 Z: -115.349442 |
Vertex 301: X: 15.663153 Y: 178.589035 Z: -118.9459 |
Vertex 302: X: 22.151039 Y: 191.625381 Z: -127.62851 |
Vertex 303: X: 15.663153 Y: 204.661728 Z: -136.311142 |
Vertex 304: X: 0 Y: 247.611908 Z: -48.870678 |
Vertex 305: X: -15.663151 Y: 241.246811 Z: -47.61441 |
Vertex 306: X: -22.151039 Y: 225.880096 Z: -44.581512 |
Vertex 307: X: -15.66315 Y: 210.513382 Z: -41.548615 |
Vertex 308: X: 0.000002 Y: 204.148285 Z: -40.292347 |
Vertex 309: X: 15.663153 Y: 210.513382 Z: -41.548615 |
Vertex 310: X: 22.151039 Y: 225.880096 Z: -44.581512 |
Vertex 311: X: 15.663153 Y: 241.246796 Z: -47.61441 |
Vertex 312: X: 0 Y: 247.465561 Z: 49.606354 |
Vertex 313: X: -15.663151 Y: 241.104218 Z: 48.331177 |
Vertex 314: X: -22.151039 Y: 225.746597 Z: 45.252625 |
Vertex 315: X: -15.66315 Y: 210.388962 Z: 42.174068 |
Vertex 316: X: 0.000002 Y: 204.027634 Z: 40.898891 |
Vertex 317: X: 15.663153 Y: 210.388962 Z: 42.174072 |
Vertex 318: X: 22.151039 Y: 225.746597 Z: 45.252625 |
Vertex 319: X: 15.663153 Y: 241.104218 Z: 48.331177 |
Vertex 320: X: 0 Y: 209.644836 Z: 140.531265 |
Vertex 321: X: -15.663151 Y: 204.255722 Z: 136.918777 |
Vertex 322: X: -22.151039 Y: 191.245239 Z: 128.197464 |
Vertex 323: X: -15.66315 Y: 178.234756 Z: 119.476135 |
Vertex 324: X: 0.000002 Y: 172.845627 Z: 115.863647 |
Vertex 325: X: 15.663153 Y: 178.234756 Z: 119.476135 |
Vertex 326: X: 22.151039 Y: 191.245239 Z: 128.197464 |
Vertex 327: X: 15.663153 Y: 204.255722 Z: 136.918777 |
Vertex 328: X: 0 Y: 139.907593 Z: 210.061584 |
Vertex 329: X: -15.663151 Y: 136.311127 Z: 204.661743 |
Vertex 330: X: -22.151039 Y: 127.62851 Z: 191.625397 |
Vertex 331: X: -15.66315 Y: 118.9459 Z: 178.58905 |
Vertex 332: X: 0.000002 Y: 115.349442 Z: 173.189209 |
Vertex 333: X: 15.663153 Y: 118.9459 Z: 178.58905 |
Vertex 334: X: 22.151039 Y: 127.62851 Z: 191.625397 |
Vertex 335: X: 15.663153 Y: 136.311127 Z: 204.661743 |
Vertex 336: X: 0 Y: 48.870659 Z: 247.611908 |
Vertex 337: X: -15.663151 Y: 47.614391 Z: 241.246826 |
Vertex 338: X: -22.151039 Y: 44.581493 Z: 225.880096 |
Vertex 339: X: -15.66315 Y: 41.548599 Z: 210.513397 |
Vertex 340: X: 0.000002 Y: 40.292332 Z: 204.148285 |
Vertex 341: X: 15.663153 Y: 41.548599 Z: 210.513397 |
Vertex 342: X: 22.151039 Y: 44.581493 Z: 225.880096 |
Vertex 343: X: 15.663153 Y: 47.614391 Z: 241.246796 |
Vertex 344: X: 0 Y: -49.60638 Z: 247.465561 |
Vertex 345: X: -15.663151 Y: -48.331203 Z: 241.104233 |
Vertex 346: X: -22.151039 Y: -45.252647 Z: 225.746597 |
Vertex 347: X: -15.66315 Y: -42.174091 Z: 210.388962 |
Vertex 348: X: 0.000002 Y: -40.898911 Z: 204.027634 |
Vertex 349: X: 15.663153 Y: -42.174091 Z: 210.388962 |
Vertex 350: X: 22.151039 Y: -45.252647 Z: 225.746597 |
Vertex 351: X: 15.663153 Y: -48.3312 Z: 241.104233 |
Vertex 352: X: 0 Y: -140.531311 Z: 209.644821 |
Vertex 353: X: -15.663151 Y: -136.918808 Z: 204.255692 |
Vertex 354: X: -22.151039 Y: -128.197495 Z: 191.245224 |
Vertex 355: X: -15.66315 Y: -119.476166 Z: 178.234726 |
Vertex 356: X: 0.000002 Y: -115.86367 Z: 172.845596 |
Vertex 357: X: 15.663153 Y: -119.476166 Z: 178.234726 |
Vertex 358: X: 22.151039 Y: -128.197495 Z: 191.245224 |
Vertex 359: X: 15.663153 Y: -136.918808 Z: 204.255692 |
Vertex 360: X: 0 Y: -210.061584 Z: 139.907593 |
Page 6 |
Vertex 361: X: -15.663151 Y: -204.661743 Z: 136.311127 |
Vertex 362: X: -22.151039 Y: -191.625397 Z: 127.628502 |
Vertex 363: X: -15.66315 Y: -178.58905 Z: 118.945885 |
Vertex 364: X: 0.000002 Y: -173.189209 Z: 115.349426 |
Vertex 365: X: 15.663153 Y: -178.58905 Z: 118.945885 |
Vertex 366: X: 22.151039 Y: -191.625397 Z: 127.628502 |
Vertex 367: X: 15.663153 Y: -204.661743 Z: 136.311127 |
Vertex 368: X: 0 Y: -247.611908 Z: 48.870678 |
Vertex 369: X: -15.663151 Y: -241.246811 Z: 47.61441 |
Vertex 370: X: -22.151039 Y: -225.880096 Z: 44.581512 |
Vertex 371: X: -15.66315 Y: -210.513382 Z: 41.548615 |
Vertex 372: X: 0.000002 Y: -204.148285 Z: 40.292347 |
Vertex 373: X: 15.663153 Y: -210.513382 Z: 41.548615 |
Vertex 374: X: 22.151039 Y: -225.880096 Z: 44.581512 |
Vertex 375: X: 15.663153 Y: -241.246796 Z: 47.61441 |
Vertex 376: X: 0 Y: -247.465576 Z: -49.606331 |
Vertex 377: X: -15.663151 Y: -241.104233 Z: -48.331154 |
Vertex 378: X: -22.151039 Y: -225.746613 Z: -45.252605 |
Vertex 379: X: -15.66315 Y: -210.388977 Z: -42.174049 |
Vertex 380: X: 0.000002 Y: -204.027634 Z: -40.898872 |
Vertex 381: X: 15.663153 Y: -210.388977 Z: -42.174049 |
Vertex 382: X: 22.151039 Y: -225.746613 Z: -45.252605 |
Vertex 383: X: 15.663153 Y: -241.104233 Z: -48.331154 |
Face list: |
Face 0: A:0 B:9 C:1 AB:0 BC:1 CA:1 |
Smoothing: 1 |
Face 1: A:0 B:8 C:9 AB:1 BC:1 CA:0 |
Smoothing: 1 |
Face 2: A:1 B:10 C:2 AB:0 BC:1 CA:1 |
Smoothing: 2 |
Face 3: A:1 B:9 C:10 AB:1 BC:1 CA:0 |
Smoothing: 2 |
Face 4: A:2 B:11 C:3 AB:0 BC:1 CA:1 |
Smoothing: 3 |
Face 5: A:2 B:10 C:11 AB:1 BC:1 CA:0 |
Smoothing: 3 |
Face 6: A:3 B:12 C:4 AB:0 BC:1 CA:1 |
Smoothing: 4 |
Face 7: A:3 B:11 C:12 AB:1 BC:1 CA:0 |
Smoothing: 4 |
Face 8: A:4 B:13 C:5 AB:0 BC:1 CA:1 |
Smoothing: 5 |
Face 9: A:4 B:12 C:13 AB:1 BC:1 CA:0 |
Smoothing: 5 |
Face 10: A:5 B:14 C:6 AB:0 BC:1 CA:1 |
Smoothing: 6 |
Face 11: A:5 B:13 C:14 AB:1 BC:1 CA:0 |
Smoothing: 6 |
Face 12: A:6 B:15 C:7 AB:0 BC:1 CA:1 |
Smoothing: 7 |
Face 13: A:6 B:14 C:15 AB:1 BC:1 CA:0 |
Smoothing: 7 |
Face 14: A:7 B:8 C:0 AB:0 BC:1 CA:1 |
Smoothing: 8 |
Face 15: A:7 B:15 C:8 AB:1 BC:1 CA:0 |
Smoothing: 8 |
Face 16: A:8 B:17 C:9 AB:0 BC:1 CA:1 |
Smoothing: 9 |
Face 17: A:8 B:16 C:17 AB:1 BC:1 CA:0 |
Smoothing: 9 |
Face 18: A:9 B:18 C:10 AB:0 BC:1 CA:1 |
Page 7 |
Smoothing: 10 |
Face 19: A:9 B:17 C:18 AB:1 BC:1 CA:0 |
Smoothing: 10 |
Face 20: A:10 B:19 C:11 AB:0 BC:1 CA:1 |
Smoothing: 11 |
Face 21: A:10 B:18 C:19 AB:1 BC:1 CA:0 |
Smoothing: 11 |
Face 22: A:11 B:20 C:12 AB:0 BC:1 CA:1 |
Smoothing: 12 |
Face 23: A:11 B:19 C:20 AB:1 BC:1 CA:0 |
Smoothing: 12 |
Face 24: A:12 B:21 C:13 AB:0 BC:1 CA:1 |
Smoothing: 13 |
Face 25: A:12 B:20 C:21 AB:1 BC:1 CA:0 |
Smoothing: 13 |
Face 26: A:13 B:22 C:14 AB:0 BC:1 CA:1 |
Smoothing: 14 |
Face 27: A:13 B:21 C:22 AB:1 BC:1 CA:0 |
Smoothing: 14 |
Face 28: A:14 B:23 C:15 AB:0 BC:1 CA:1 |
Smoothing: 15 |
Face 29: A:14 B:22 C:23 AB:1 BC:1 CA:0 |
Smoothing: 15 |
Face 30: A:15 B:16 C:8 AB:0 BC:1 CA:1 |
Smoothing: 16 |
Face 31: A:15 B:23 C:16 AB:1 BC:1 CA:0 |
Smoothing: 16 |
Face 32: A:16 B:25 C:17 AB:0 BC:1 CA:1 |
Smoothing: 17 |
Face 33: A:16 B:24 C:25 AB:1 BC:1 CA:0 |
Smoothing: 17 |
Face 34: A:17 B:26 C:18 AB:0 BC:1 CA:1 |
Smoothing: 18 |
Face 35: A:17 B:25 C:26 AB:1 BC:1 CA:0 |
Smoothing: 18 |
Face 36: A:18 B:27 C:19 AB:0 BC:1 CA:1 |
Smoothing: 19 |
Face 37: A:18 B:26 C:27 AB:1 BC:1 CA:0 |
Smoothing: 19 |
Face 38: A:19 B:28 C:20 AB:0 BC:1 CA:1 |
Smoothing: 20 |
Face 39: A:19 B:27 C:28 AB:1 BC:1 CA:0 |
Smoothing: 20 |
Face 40: A:20 B:29 C:21 AB:0 BC:1 CA:1 |
Smoothing: 21 |
Face 41: A:20 B:28 C:29 AB:1 BC:1 CA:0 |
Smoothing: 21 |
Face 42: A:21 B:30 C:22 AB:0 BC:1 CA:1 |
Smoothing: 22 |
Face 43: A:21 B:29 C:30 AB:1 BC:1 CA:0 |
Smoothing: 22 |
Face 44: A:22 B:31 C:23 AB:0 BC:1 CA:1 |
Smoothing: 23 |
Face 45: A:22 B:30 C:31 AB:1 BC:1 CA:0 |
Smoothing: 23 |
Face 46: A:23 B:24 C:16 AB:0 BC:1 CA:1 |
Smoothing: 24 |
Face 47: A:23 B:31 C:24 AB:1 BC:1 CA:0 |
Smoothing: 24 |
Face 48: A:24 B:33 C:25 AB:0 BC:1 CA:1 |
Smoothing: 25 |
Page 8 |
Face 49: A:24 B:32 C:33 AB:1 BC:1 CA:0 |
Smoothing: 25 |
Face 50: A:25 B:34 C:26 AB:0 BC:1 CA:1 |
Smoothing: 26 |
Face 51: A:25 B:33 C:34 AB:1 BC:1 CA:0 |
Smoothing: 26 |
Face 52: A:26 B:35 C:27 AB:0 BC:1 CA:1 |
Smoothing: 27 |
Face 53: A:26 B:34 C:35 AB:1 BC:1 CA:0 |
Smoothing: 27 |
Face 54: A:27 B:36 C:28 AB:0 BC:1 CA:1 |
Smoothing: 28 |
Face 55: A:27 B:35 C:36 AB:1 BC:1 CA:0 |
Smoothing: 28 |
Face 56: A:28 B:37 C:29 AB:0 BC:1 CA:1 |
Smoothing: 29 |
Face 57: A:28 B:36 C:37 AB:1 BC:1 CA:0 |
Smoothing: 29 |
Face 58: A:29 B:38 C:30 AB:0 BC:1 CA:1 |
Smoothing: 30 |
Face 59: A:29 B:37 C:38 AB:1 BC:1 CA:0 |
Smoothing: 30 |
Face 60: A:30 B:39 C:31 AB:0 BC:1 CA:1 |
Smoothing: 31 |
Face 61: A:30 B:38 C:39 AB:1 BC:1 CA:0 |
Smoothing: 31 |
Face 62: A:31 B:32 C:24 AB:0 BC:1 CA:1 |
Smoothing: 32 |
Face 63: A:31 B:39 C:32 AB:1 BC:1 CA:0 |
Smoothing: 32 |
Face 64: A:32 B:41 C:33 AB:0 BC:1 CA:1 |
Smoothing: 1 |
Face 65: A:32 B:40 C:41 AB:1 BC:1 CA:0 |
Smoothing: 1 |
Face 66: A:33 B:42 C:34 AB:0 BC:1 CA:1 |
Smoothing: 2 |
Face 67: A:33 B:41 C:42 AB:1 BC:1 CA:0 |
Smoothing: 2 |
Face 68: A:34 B:43 C:35 AB:0 BC:1 CA:1 |
Smoothing: 3 |
Face 69: A:34 B:42 C:43 AB:1 BC:1 CA:0 |
Smoothing: 3 |
Face 70: A:35 B:44 C:36 AB:0 BC:1 CA:1 |
Smoothing: 4 |
Face 71: A:35 B:43 C:44 AB:1 BC:1 CA:0 |
Smoothing: 4 |
Face 72: A:36 B:45 C:37 AB:0 BC:1 CA:1 |
Smoothing: 5 |
Face 73: A:36 B:44 C:45 AB:1 BC:1 CA:0 |
Smoothing: 5 |
Face 74: A:37 B:46 C:38 AB:0 BC:1 CA:1 |
Smoothing: 6 |
Face 75: A:37 B:45 C:46 AB:1 BC:1 CA:0 |
Smoothing: 6 |
Face 76: A:38 B:47 C:39 AB:0 BC:1 CA:1 |
Smoothing: 7 |
Face 77: A:38 B:46 C:47 AB:1 BC:1 CA:0 |
Smoothing: 7 |
Face 78: A:39 B:40 C:32 AB:0 BC:1 CA:1 |
Smoothing: 8 |
Face 79: A:39 B:47 C:40 AB:1 BC:1 CA:0 |
Page 9 |
Smoothing: 8 |
Face 80: A:40 B:49 C:41 AB:0 BC:1 CA:1 |
Smoothing: 9 |
Face 81: A:40 B:48 C:49 AB:1 BC:1 CA:0 |
Smoothing: 9 |
Face 82: A:41 B:50 C:42 AB:0 BC:1 CA:1 |
Smoothing: 10 |
Face 83: A:41 B:49 C:50 AB:1 BC:1 CA:0 |
Smoothing: 10 |
Face 84: A:42 B:51 C:43 AB:0 BC:1 CA:1 |
Smoothing: 11 |
Face 85: A:42 B:50 C:51 AB:1 BC:1 CA:0 |
Smoothing: 11 |
Face 86: A:43 B:52 C:44 AB:0 BC:1 CA:1 |
Smoothing: 12 |
Face 87: A:43 B:51 C:52 AB:1 BC:1 CA:0 |
Smoothing: 12 |
Face 88: A:44 B:53 C:45 AB:0 BC:1 CA:1 |
Smoothing: 13 |
Face 89: A:44 B:52 C:53 AB:1 BC:1 CA:0 |
Smoothing: 13 |
Face 90: A:45 B:54 C:46 AB:0 BC:1 CA:1 |
Smoothing: 14 |
Face 91: A:45 B:53 C:54 AB:1 BC:1 CA:0 |
Smoothing: 14 |
Face 92: A:46 B:55 C:47 AB:0 BC:1 CA:1 |
Smoothing: 15 |
Face 93: A:46 B:54 C:55 AB:1 BC:1 CA:0 |
Smoothing: 15 |
Face 94: A:47 B:48 C:40 AB:0 BC:1 CA:1 |
Smoothing: 16 |
Face 95: A:47 B:55 C:48 AB:1 BC:1 CA:0 |
Smoothing: 16 |
Face 96: A:48 B:57 C:49 AB:0 BC:1 CA:1 |
Smoothing: 17 |
Face 97: A:48 B:56 C:57 AB:1 BC:1 CA:0 |
Smoothing: 17 |
Face 98: A:49 B:58 C:50 AB:0 BC:1 CA:1 |
Smoothing: 18 |
Face 99: A:49 B:57 C:58 AB:1 BC:1 CA:0 |
Smoothing: 18 |
Face 100: A:50 B:59 C:51 AB:0 BC:1 CA:1 |
Smoothing: 19 |
Face 101: A:50 B:58 C:59 AB:1 BC:1 CA:0 |
Smoothing: 19 |
Face 102: A:51 B:60 C:52 AB:0 BC:1 CA:1 |
Smoothing: 20 |
Face 103: A:51 B:59 C:60 AB:1 BC:1 CA:0 |
Smoothing: 20 |
Face 104: A:52 B:61 C:53 AB:0 BC:1 CA:1 |
Smoothing: 21 |
Face 105: A:52 B:60 C:61 AB:1 BC:1 CA:0 |
Smoothing: 21 |
Face 106: A:53 B:62 C:54 AB:0 BC:1 CA:1 |
Smoothing: 22 |
Face 107: A:53 B:61 C:62 AB:1 BC:1 CA:0 |
Smoothing: 22 |
Face 108: A:54 B:63 C:55 AB:0 BC:1 CA:1 |
Smoothing: 23 |
Face 109: A:54 B:62 C:63 AB:1 BC:1 CA:0 |
Smoothing: 23 |
Page 10 |
Face 110: A:55 B:56 C:48 AB:0 BC:1 CA:1 |
Smoothing: 24 |
Face 111: A:55 B:63 C:56 AB:1 BC:1 CA:0 |
Smoothing: 24 |
Face 112: A:56 B:65 C:57 AB:0 BC:1 CA:1 |
Smoothing: 25 |
Face 113: A:56 B:64 C:65 AB:1 BC:1 CA:0 |
Smoothing: 25 |
Face 114: A:57 B:66 C:58 AB:0 BC:1 CA:1 |
Smoothing: 26 |
Face 115: A:57 B:65 C:66 AB:1 BC:1 CA:0 |
Smoothing: 26 |
Face 116: A:58 B:67 C:59 AB:0 BC:1 CA:1 |
Smoothing: 27 |
Face 117: A:58 B:66 C:67 AB:1 BC:1 CA:0 |
Smoothing: 27 |
Face 118: A:59 B:68 C:60 AB:0 BC:1 CA:1 |
Smoothing: 28 |
Face 119: A:59 B:67 C:68 AB:1 BC:1 CA:0 |
Smoothing: 28 |
Face 120: A:60 B:69 C:61 AB:0 BC:1 CA:1 |
Smoothing: 29 |
Face 121: A:60 B:68 C:69 AB:1 BC:1 CA:0 |
Smoothing: 29 |
Face 122: A:61 B:70 C:62 AB:0 BC:1 CA:1 |
Smoothing: 30 |
Face 123: A:61 B:69 C:70 AB:1 BC:1 CA:0 |
Smoothing: 30 |
Face 124: A:62 B:71 C:63 AB:0 BC:1 CA:1 |
Smoothing: 31 |
Face 125: A:62 B:70 C:71 AB:1 BC:1 CA:0 |
Smoothing: 31 |
Face 126: A:63 B:64 C:56 AB:0 BC:1 CA:1 |
Smoothing: 32 |
Face 127: A:63 B:71 C:64 AB:1 BC:1 CA:0 |
Smoothing: 32 |
Face 128: A:64 B:73 C:65 AB:0 BC:1 CA:1 |
Smoothing: 1 |
Face 129: A:64 B:72 C:73 AB:1 BC:1 CA:0 |
Smoothing: 1 |
Face 130: A:65 B:74 C:66 AB:0 BC:1 CA:1 |
Smoothing: 2 |
Face 131: A:65 B:73 C:74 AB:1 BC:1 CA:0 |
Smoothing: 2 |
Face 132: A:66 B:75 C:67 AB:0 BC:1 CA:1 |
Smoothing: 3 |
Face 133: A:66 B:74 C:75 AB:1 BC:1 CA:0 |
Smoothing: 3 |
Face 134: A:67 B:76 C:68 AB:0 BC:1 CA:1 |
Smoothing: 4 |
Face 135: A:67 B:75 C:76 AB:1 BC:1 CA:0 |
Smoothing: 4 |
Face 136: A:68 B:77 C:69 AB:0 BC:1 CA:1 |
Smoothing: 5 |
Face 137: A:68 B:76 C:77 AB:1 BC:1 CA:0 |
Smoothing: 5 |
Face 138: A:69 B:78 C:70 AB:0 BC:1 CA:1 |
Smoothing: 6 |
Face 139: A:69 B:77 C:78 AB:1 BC:1 CA:0 |
Smoothing: 6 |
Face 140: A:70 B:79 C:71 AB:0 BC:1 CA:1 |
Page 11 |
Smoothing: 7 |
Face 141: A:70 B:78 C:79 AB:1 BC:1 CA:0 |
Smoothing: 7 |
Face 142: A:71 B:72 C:64 AB:0 BC:1 CA:1 |
Smoothing: 8 |
Face 143: A:71 B:79 C:72 AB:1 BC:1 CA:0 |
Smoothing: 8 |
Face 144: A:72 B:81 C:73 AB:0 BC:1 CA:1 |
Smoothing: 9 |
Face 145: A:72 B:80 C:81 AB:1 BC:1 CA:0 |
Smoothing: 9 |
Face 146: A:73 B:82 C:74 AB:0 BC:1 CA:1 |
Smoothing: 10 |
Face 147: A:73 B:81 C:82 AB:1 BC:1 CA:0 |
Smoothing: 10 |
Face 148: A:74 B:83 C:75 AB:0 BC:1 CA:1 |
Smoothing: 11 |
Face 149: A:74 B:82 C:83 AB:1 BC:1 CA:0 |
Smoothing: 11 |
Face 150: A:75 B:84 C:76 AB:0 BC:1 CA:1 |
Smoothing: 12 |
Face 151: A:75 B:83 C:84 AB:1 BC:1 CA:0 |
Smoothing: 12 |
Face 152: A:76 B:85 C:77 AB:0 BC:1 CA:1 |
Smoothing: 13 |
Face 153: A:76 B:84 C:85 AB:1 BC:1 CA:0 |
Smoothing: 13 |
Face 154: A:77 B:86 C:78 AB:0 BC:1 CA:1 |
Smoothing: 14 |
Face 155: A:77 B:85 C:86 AB:1 BC:1 CA:0 |
Smoothing: 14 |
Face 156: A:78 B:87 C:79 AB:0 BC:1 CA:1 |
Smoothing: 15 |
Face 157: A:78 B:86 C:87 AB:1 BC:1 CA:0 |
Smoothing: 15 |
Face 158: A:79 B:80 C:72 AB:0 BC:1 CA:1 |
Smoothing: 16 |
Face 159: A:79 B:87 C:80 AB:1 BC:1 CA:0 |
Smoothing: 16 |
Face 160: A:80 B:89 C:81 AB:0 BC:1 CA:1 |
Smoothing: 17 |
Face 161: A:80 B:88 C:89 AB:1 BC:1 CA:0 |
Smoothing: 17 |
Face 162: A:81 B:90 C:82 AB:0 BC:1 CA:1 |
Smoothing: 18 |
Face 163: A:81 B:89 C:90 AB:1 BC:1 CA:0 |
Smoothing: 18 |
Face 164: A:82 B:91 C:83 AB:0 BC:1 CA:1 |
Smoothing: 19 |
Face 165: A:82 B:90 C:91 AB:1 BC:1 CA:0 |
Smoothing: 19 |
Face 166: A:83 B:92 C:84 AB:0 BC:1 CA:1 |
Smoothing: 20 |
Face 167: A:83 B:91 C:92 AB:1 BC:1 CA:0 |
Smoothing: 20 |
Face 168: A:84 B:93 C:85 AB:0 BC:1 CA:1 |
Smoothing: 21 |
Face 169: A:84 B:92 C:93 AB:1 BC:1 CA:0 |
Smoothing: 21 |
Face 170: A:85 B:94 C:86 AB:0 BC:1 CA:1 |
Smoothing: 22 |
Page 12 |
Face 171: A:85 B:93 C:94 AB:1 BC:1 CA:0 |
Smoothing: 22 |
Face 172: A:86 B:95 C:87 AB:0 BC:1 CA:1 |
Smoothing: 23 |
Face 173: A:86 B:94 C:95 AB:1 BC:1 CA:0 |
Smoothing: 23 |
Face 174: A:87 B:88 C:80 AB:0 BC:1 CA:1 |
Smoothing: 24 |
Face 175: A:87 B:95 C:88 AB:1 BC:1 CA:0 |
Smoothing: 24 |
Face 176: A:88 B:97 C:89 AB:0 BC:1 CA:1 |
Smoothing: 25 |
Face 177: A:88 B:96 C:97 AB:1 BC:1 CA:0 |
Smoothing: 25 |
Face 178: A:89 B:98 C:90 AB:0 BC:1 CA:1 |
Smoothing: 26 |
Face 179: A:89 B:97 C:98 AB:1 BC:1 CA:0 |
Smoothing: 26 |
Face 180: A:90 B:99 C:91 AB:0 BC:1 CA:1 |
Smoothing: 27 |
Face 181: A:90 B:98 C:99 AB:1 BC:1 CA:0 |
Smoothing: 27 |
Face 182: A:91 B:100 C:92 AB:0 BC:1 CA:1 |
Smoothing: 28 |
Face 183: A:91 B:99 C:100 AB:1 BC:1 CA:0 |
Smoothing: 28 |
Face 184: A:92 B:101 C:93 AB:0 BC:1 CA:1 |
Smoothing: 29 |
Face 185: A:92 B:100 C:101 AB:1 BC:1 CA:0 |
Smoothing: 29 |
Face 186: A:93 B:102 C:94 AB:0 BC:1 CA:1 |
Smoothing: 30 |
Face 187: A:93 B:101 C:102 AB:1 BC:1 CA:0 |
Smoothing: 30 |
Face 188: A:94 B:103 C:95 AB:0 BC:1 CA:1 |
Smoothing: 31 |
Face 189: A:94 B:102 C:103 AB:1 BC:1 CA:0 |
Smoothing: 31 |
Face 190: A:95 B:96 C:88 AB:0 BC:1 CA:1 |
Smoothing: 32 |
Face 191: A:95 B:103 C:96 AB:1 BC:1 CA:0 |
Smoothing: 32 |
Face 192: A:96 B:105 C:97 AB:0 BC:1 CA:1 |
Smoothing: 1 |
Face 193: A:96 B:104 C:105 AB:1 BC:1 CA:0 |
Smoothing: 1 |
Face 194: A:97 B:106 C:98 AB:0 BC:1 CA:1 |
Smoothing: 2 |
Face 195: A:97 B:105 C:106 AB:1 BC:1 CA:0 |
Smoothing: 2 |
Face 196: A:98 B:107 C:99 AB:0 BC:1 CA:1 |
Smoothing: 3 |
Face 197: A:98 B:106 C:107 AB:1 BC:1 CA:0 |
Smoothing: 3 |
Face 198: A:99 B:108 C:100 AB:0 BC:1 CA:1 |
Smoothing: 4 |
Face 199: A:99 B:107 C:108 AB:1 BC:1 CA:0 |
Smoothing: 4 |
Face 200: A:100 B:109 C:101 AB:0 BC:1 CA:1 |
Smoothing: 5 |
Face 201: A:100 B:108 C:109 AB:1 BC:1 CA:0 |
Page 13 |
Smoothing: 5 |
Face 202: A:101 B:110 C:102 AB:0 BC:1 CA:1 |
Smoothing: 6 |
Face 203: A:101 B:109 C:110 AB:1 BC:1 CA:0 |
Smoothing: 6 |
Face 204: A:102 B:111 C:103 AB:0 BC:1 CA:1 |
Smoothing: 7 |
Face 205: A:102 B:110 C:111 AB:1 BC:1 CA:0 |
Smoothing: 7 |
Face 206: A:103 B:104 C:96 AB:0 BC:1 CA:1 |
Smoothing: 8 |
Face 207: A:103 B:111 C:104 AB:1 BC:1 CA:0 |
Smoothing: 8 |
Face 208: A:104 B:113 C:105 AB:0 BC:1 CA:1 |
Smoothing: 9 |
Face 209: A:104 B:112 C:113 AB:1 BC:1 CA:0 |
Smoothing: 9 |
Face 210: A:105 B:114 C:106 AB:0 BC:1 CA:1 |
Smoothing: 10 |
Face 211: A:105 B:113 C:114 AB:1 BC:1 CA:0 |
Smoothing: 10 |
Face 212: A:106 B:115 C:107 AB:0 BC:1 CA:1 |
Smoothing: 11 |
Face 213: A:106 B:114 C:115 AB:1 BC:1 CA:0 |
Smoothing: 11 |
Face 214: A:107 B:116 C:108 AB:0 BC:1 CA:1 |
Smoothing: 12 |
Face 215: A:107 B:115 C:116 AB:1 BC:1 CA:0 |
Smoothing: 12 |
Face 216: A:108 B:117 C:109 AB:0 BC:1 CA:1 |
Smoothing: 13 |
Face 217: A:108 B:116 C:117 AB:1 BC:1 CA:0 |
Smoothing: 13 |
Face 218: A:109 B:118 C:110 AB:0 BC:1 CA:1 |
Smoothing: 14 |
Face 219: A:109 B:117 C:118 AB:1 BC:1 CA:0 |
Smoothing: 14 |
Face 220: A:110 B:119 C:111 AB:0 BC:1 CA:1 |
Smoothing: 15 |
Face 221: A:110 B:118 C:119 AB:1 BC:1 CA:0 |
Smoothing: 15 |
Face 222: A:111 B:112 C:104 AB:0 BC:1 CA:1 |
Smoothing: 16 |
Face 223: A:111 B:119 C:112 AB:1 BC:1 CA:0 |
Smoothing: 16 |
Face 224: A:112 B:121 C:113 AB:0 BC:1 CA:1 |
Smoothing: 17 |
Face 225: A:112 B:120 C:121 AB:1 BC:1 CA:0 |
Smoothing: 17 |
Face 226: A:113 B:122 C:114 AB:0 BC:1 CA:1 |
Smoothing: 18 |
Face 227: A:113 B:121 C:122 AB:1 BC:1 CA:0 |
Smoothing: 18 |
Face 228: A:114 B:123 C:115 AB:0 BC:1 CA:1 |
Smoothing: 19 |
Face 229: A:114 B:122 C:123 AB:1 BC:1 CA:0 |
Smoothing: 19 |
Face 230: A:115 B:124 C:116 AB:0 BC:1 CA:1 |
Smoothing: 20 |
Face 231: A:115 B:123 C:124 AB:1 BC:1 CA:0 |
Smoothing: 20 |
Page 14 |
Face 232: A:116 B:125 C:117 AB:0 BC:1 CA:1 |
Smoothing: 21 |
Face 233: A:116 B:124 C:125 AB:1 BC:1 CA:0 |
Smoothing: 21 |
Face 234: A:117 B:126 C:118 AB:0 BC:1 CA:1 |
Smoothing: 22 |
Face 235: A:117 B:125 C:126 AB:1 BC:1 CA:0 |
Smoothing: 22 |
Face 236: A:118 B:127 C:119 AB:0 BC:1 CA:1 |
Smoothing: 23 |
Face 237: A:118 B:126 C:127 AB:1 BC:1 CA:0 |
Smoothing: 23 |
Face 238: A:119 B:120 C:112 AB:0 BC:1 CA:1 |
Smoothing: 24 |
Face 239: A:119 B:127 C:120 AB:1 BC:1 CA:0 |
Smoothing: 24 |
Face 240: A:120 B:1 C:121 AB:0 BC:1 CA:1 |
Smoothing: 25 |
Face 241: A:120 B:0 C:1 AB:1 BC:1 CA:0 |
Smoothing: 25 |
Face 242: A:121 B:2 C:122 AB:0 BC:1 CA:1 |
Smoothing: 26 |
Face 243: A:121 B:1 C:2 AB:1 BC:1 CA:0 |
Smoothing: 26 |
Face 244: A:122 B:3 C:123 AB:0 BC:1 CA:1 |
Smoothing: 27 |
Face 245: A:122 B:2 C:3 AB:1 BC:1 CA:0 |
Smoothing: 27 |
Face 246: A:123 B:4 C:124 AB:0 BC:1 CA:1 |
Smoothing: 28 |
Face 247: A:123 B:3 C:4 AB:1 BC:1 CA:0 |
Smoothing: 28 |
Face 248: A:124 B:5 C:125 AB:0 BC:1 CA:1 |
Smoothing: 29 |
Face 249: A:124 B:4 C:5 AB:1 BC:1 CA:0 |
Smoothing: 29 |
Face 250: A:125 B:6 C:126 AB:0 BC:1 CA:1 |
Smoothing: 30 |
Face 251: A:125 B:5 C:6 AB:1 BC:1 CA:0 |
Smoothing: 30 |
Face 252: A:126 B:7 C:127 AB:0 BC:1 CA:1 |
Smoothing: 31 |
Face 253: A:126 B:6 C:7 AB:1 BC:1 CA:0 |
Smoothing: 31 |
Face 254: A:127 B:0 C:120 AB:0 BC:1 CA:1 |
Smoothing: 32 |
Face 255: A:127 B:7 C:0 AB:1 BC:1 CA:0 |
Smoothing: 32 |
Face 256: A:128 B:137 C:129 AB:0 BC:1 CA:1 |
Smoothing: 1 |
Face 257: A:128 B:136 C:137 AB:1 BC:1 CA:0 |
Smoothing: 1 |
Face 258: A:129 B:138 C:130 AB:0 BC:1 CA:1 |
Smoothing: 2 |
Face 259: A:129 B:137 C:138 AB:1 BC:1 CA:0 |
Smoothing: 2 |
Face 260: A:130 B:139 C:131 AB:0 BC:1 CA:1 |
Smoothing: 3 |
Face 261: A:130 B:138 C:139 AB:1 BC:1 CA:0 |
Smoothing: 3 |
Face 262: A:131 B:140 C:132 AB:0 BC:1 CA:1 |
Page 15 |
Smoothing: 4 |
Face 263: A:131 B:139 C:140 AB:1 BC:1 CA:0 |
Smoothing: 4 |
Face 264: A:132 B:141 C:133 AB:0 BC:1 CA:1 |
Smoothing: 5 |
Face 265: A:132 B:140 C:141 AB:1 BC:1 CA:0 |
Smoothing: 5 |
Face 266: A:133 B:142 C:134 AB:0 BC:1 CA:1 |
Smoothing: 6 |
Face 267: A:133 B:141 C:142 AB:1 BC:1 CA:0 |
Smoothing: 6 |
Face 268: A:134 B:143 C:135 AB:0 BC:1 CA:1 |
Smoothing: 7 |
Face 269: A:134 B:142 C:143 AB:1 BC:1 CA:0 |
Smoothing: 7 |
Face 270: A:135 B:136 C:128 AB:0 BC:1 CA:1 |
Smoothing: 8 |
Face 271: A:135 B:143 C:136 AB:1 BC:1 CA:0 |
Smoothing: 8 |
Face 272: A:136 B:145 C:137 AB:0 BC:1 CA:1 |
Smoothing: 9 |
Face 273: A:136 B:144 C:145 AB:1 BC:1 CA:0 |
Smoothing: 9 |
Face 274: A:137 B:146 C:138 AB:0 BC:1 CA:1 |
Smoothing: 10 |
Face 275: A:137 B:145 C:146 AB:1 BC:1 CA:0 |
Smoothing: 10 |
Face 276: A:138 B:147 C:139 AB:0 BC:1 CA:1 |
Smoothing: 11 |
Face 277: A:138 B:146 C:147 AB:1 BC:1 CA:0 |
Smoothing: 11 |
Face 278: A:139 B:148 C:140 AB:0 BC:1 CA:1 |
Smoothing: 12 |
Face 279: A:139 B:147 C:148 AB:1 BC:1 CA:0 |
Smoothing: 12 |
Face 280: A:140 B:149 C:141 AB:0 BC:1 CA:1 |
Smoothing: 13 |
Face 281: A:140 B:148 C:149 AB:1 BC:1 CA:0 |
Smoothing: 13 |
Face 282: A:141 B:150 C:142 AB:0 BC:1 CA:1 |
Smoothing: 14 |
Face 283: A:141 B:149 C:150 AB:1 BC:1 CA:0 |
Smoothing: 14 |
Face 284: A:142 B:151 C:143 AB:0 BC:1 CA:1 |
Smoothing: 15 |
Face 285: A:142 B:150 C:151 AB:1 BC:1 CA:0 |
Smoothing: 15 |
Face 286: A:143 B:144 C:136 AB:0 BC:1 CA:1 |
Smoothing: 16 |
Face 287: A:143 B:151 C:144 AB:1 BC:1 CA:0 |
Smoothing: 16 |
Face 288: A:144 B:153 C:145 AB:0 BC:1 CA:1 |
Smoothing: 17 |
Face 289: A:144 B:152 C:153 AB:1 BC:1 CA:0 |
Smoothing: 17 |
Face 290: A:145 B:154 C:146 AB:0 BC:1 CA:1 |
Smoothing: 18 |
Face 291: A:145 B:153 C:154 AB:1 BC:1 CA:0 |
Smoothing: 18 |
Face 292: A:146 B:155 C:147 AB:0 BC:1 CA:1 |
Smoothing: 19 |
Page 16 |
Face 293: A:146 B:154 C:155 AB:1 BC:1 CA:0 |
Smoothing: 19 |
Face 294: A:147 B:156 C:148 AB:0 BC:1 CA:1 |
Smoothing: 20 |
Face 295: A:147 B:155 C:156 AB:1 BC:1 CA:0 |
Smoothing: 20 |
Face 296: A:148 B:157 C:149 AB:0 BC:1 CA:1 |
Smoothing: 21 |
Face 297: A:148 B:156 C:157 AB:1 BC:1 CA:0 |
Smoothing: 21 |
Face 298: A:149 B:158 C:150 AB:0 BC:1 CA:1 |
Smoothing: 22 |
Face 299: A:149 B:157 C:158 AB:1 BC:1 CA:0 |
Smoothing: 22 |
Face 300: A:150 B:159 C:151 AB:0 BC:1 CA:1 |
Smoothing: 23 |
Face 301: A:150 B:158 C:159 AB:1 BC:1 CA:0 |
Smoothing: 23 |
Face 302: A:151 B:152 C:144 AB:0 BC:1 CA:1 |
Smoothing: 24 |
Face 303: A:151 B:159 C:152 AB:1 BC:1 CA:0 |
Smoothing: 24 |
Face 304: A:152 B:161 C:153 AB:0 BC:1 CA:1 |
Smoothing: 25 |
Face 305: A:152 B:160 C:161 AB:1 BC:1 CA:0 |
Smoothing: 25 |
Face 306: A:153 B:162 C:154 AB:0 BC:1 CA:1 |
Smoothing: 26 |
Face 307: A:153 B:161 C:162 AB:1 BC:1 CA:0 |
Smoothing: 26 |
Face 308: A:154 B:163 C:155 AB:0 BC:1 CA:1 |
Smoothing: 27 |
Face 309: A:154 B:162 C:163 AB:1 BC:1 CA:0 |
Smoothing: 27 |
Face 310: A:155 B:164 C:156 AB:0 BC:1 CA:1 |
Smoothing: 28 |
Face 311: A:155 B:163 C:164 AB:1 BC:1 CA:0 |
Smoothing: 28 |
Face 312: A:156 B:165 C:157 AB:0 BC:1 CA:1 |
Smoothing: 29 |
Face 313: A:156 B:164 C:165 AB:1 BC:1 CA:0 |
Smoothing: 29 |
Face 314: A:157 B:166 C:158 AB:0 BC:1 CA:1 |
Smoothing: 30 |
Face 315: A:157 B:165 C:166 AB:1 BC:1 CA:0 |
Smoothing: 30 |
Face 316: A:158 B:167 C:159 AB:0 BC:1 CA:1 |
Smoothing: 31 |
Face 317: A:158 B:166 C:167 AB:1 BC:1 CA:0 |
Smoothing: 31 |
Face 318: A:159 B:160 C:152 AB:0 BC:1 CA:1 |
Smoothing: 32 |
Face 319: A:159 B:167 C:160 AB:1 BC:1 CA:0 |
Smoothing: 32 |
Face 320: A:160 B:169 C:161 AB:0 BC:1 CA:1 |
Smoothing: 1 |
Face 321: A:160 B:168 C:169 AB:1 BC:1 CA:0 |
Smoothing: 1 |
Face 322: A:161 B:170 C:162 AB:0 BC:1 CA:1 |
Smoothing: 2 |
Face 323: A:161 B:169 C:170 AB:1 BC:1 CA:0 |
Page 17 |
Smoothing: 2 |
Face 324: A:162 B:171 C:163 AB:0 BC:1 CA:1 |
Smoothing: 3 |
Face 325: A:162 B:170 C:171 AB:1 BC:1 CA:0 |
Smoothing: 3 |
Face 326: A:163 B:172 C:164 AB:0 BC:1 CA:1 |
Smoothing: 4 |
Face 327: A:163 B:171 C:172 AB:1 BC:1 CA:0 |
Smoothing: 4 |
Face 328: A:164 B:173 C:165 AB:0 BC:1 CA:1 |
Smoothing: 5 |
Face 329: A:164 B:172 C:173 AB:1 BC:1 CA:0 |
Smoothing: 5 |
Face 330: A:165 B:174 C:166 AB:0 BC:1 CA:1 |
Smoothing: 6 |
Face 331: A:165 B:173 C:174 AB:1 BC:1 CA:0 |
Smoothing: 6 |
Face 332: A:166 B:175 C:167 AB:0 BC:1 CA:1 |
Smoothing: 7 |
Face 333: A:166 B:174 C:175 AB:1 BC:1 CA:0 |
Smoothing: 7 |
Face 334: A:167 B:168 C:160 AB:0 BC:1 CA:1 |
Smoothing: 8 |
Face 335: A:167 B:175 C:168 AB:1 BC:1 CA:0 |
Smoothing: 8 |
Face 336: A:168 B:177 C:169 AB:0 BC:1 CA:1 |
Smoothing: 9 |
Face 337: A:168 B:176 C:177 AB:1 BC:1 CA:0 |
Smoothing: 9 |
Face 338: A:169 B:178 C:170 AB:0 BC:1 CA:1 |
Smoothing: 10 |
Face 339: A:169 B:177 C:178 AB:1 BC:1 CA:0 |
Smoothing: 10 |
Face 340: A:170 B:179 C:171 AB:0 BC:1 CA:1 |
Smoothing: 11 |
Face 341: A:170 B:178 C:179 AB:1 BC:1 CA:0 |
Smoothing: 11 |
Face 342: A:171 B:180 C:172 AB:0 BC:1 CA:1 |
Smoothing: 12 |
Face 343: A:171 B:179 C:180 AB:1 BC:1 CA:0 |
Smoothing: 12 |
Face 344: A:172 B:181 C:173 AB:0 BC:1 CA:1 |
Smoothing: 13 |
Face 345: A:172 B:180 C:181 AB:1 BC:1 CA:0 |
Smoothing: 13 |
Face 346: A:173 B:182 C:174 AB:0 BC:1 CA:1 |
Smoothing: 14 |
Face 347: A:173 B:181 C:182 AB:1 BC:1 CA:0 |
Smoothing: 14 |
Face 348: A:174 B:183 C:175 AB:0 BC:1 CA:1 |
Smoothing: 15 |
Face 349: A:174 B:182 C:183 AB:1 BC:1 CA:0 |
Smoothing: 15 |
Face 350: A:175 B:176 C:168 AB:0 BC:1 CA:1 |
Smoothing: 16 |
Face 351: A:175 B:183 C:176 AB:1 BC:1 CA:0 |
Smoothing: 16 |
Face 352: A:176 B:185 C:177 AB:0 BC:1 CA:1 |
Smoothing: 17 |
Face 353: A:176 B:184 C:185 AB:1 BC:1 CA:0 |
Smoothing: 17 |
Page 18 |
Face 354: A:177 B:186 C:178 AB:0 BC:1 CA:1 |
Smoothing: 18 |
Face 355: A:177 B:185 C:186 AB:1 BC:1 CA:0 |
Smoothing: 18 |
Face 356: A:178 B:187 C:179 AB:0 BC:1 CA:1 |
Smoothing: 19 |
Face 357: A:178 B:186 C:187 AB:1 BC:1 CA:0 |
Smoothing: 19 |
Face 358: A:179 B:188 C:180 AB:0 BC:1 CA:1 |
Smoothing: 20 |
Face 359: A:179 B:187 C:188 AB:1 BC:1 CA:0 |
Smoothing: 20 |
Face 360: A:180 B:189 C:181 AB:0 BC:1 CA:1 |
Smoothing: 21 |
Face 361: A:180 B:188 C:189 AB:1 BC:1 CA:0 |
Smoothing: 21 |
Face 362: A:181 B:190 C:182 AB:0 BC:1 CA:1 |
Smoothing: 22 |
Face 363: A:181 B:189 C:190 AB:1 BC:1 CA:0 |
Smoothing: 22 |
Face 364: A:182 B:191 C:183 AB:0 BC:1 CA:1 |
Smoothing: 23 |
Face 365: A:182 B:190 C:191 AB:1 BC:1 CA:0 |
Smoothing: 23 |
Face 366: A:183 B:184 C:176 AB:0 BC:1 CA:1 |
Smoothing: 24 |
Face 367: A:183 B:191 C:184 AB:1 BC:1 CA:0 |
Smoothing: 24 |
Face 368: A:184 B:193 C:185 AB:0 BC:1 CA:1 |
Smoothing: 25 |
Face 369: A:184 B:192 C:193 AB:1 BC:1 CA:0 |
Smoothing: 25 |
Face 370: A:185 B:194 C:186 AB:0 BC:1 CA:1 |
Smoothing: 26 |
Face 371: A:185 B:193 C:194 AB:1 BC:1 CA:0 |
Smoothing: 26 |
Face 372: A:186 B:195 C:187 AB:0 BC:1 CA:1 |
Smoothing: 27 |
Face 373: A:186 B:194 C:195 AB:1 BC:1 CA:0 |
Smoothing: 27 |
Face 374: A:187 B:196 C:188 AB:0 BC:1 CA:1 |
Smoothing: 28 |
Face 375: A:187 B:195 C:196 AB:1 BC:1 CA:0 |
Smoothing: 28 |
Face 376: A:188 B:197 C:189 AB:0 BC:1 CA:1 |
Smoothing: 29 |
Face 377: A:188 B:196 C:197 AB:1 BC:1 CA:0 |
Smoothing: 29 |
Face 378: A:189 B:198 C:190 AB:0 BC:1 CA:1 |
Smoothing: 30 |
Face 379: A:189 B:197 C:198 AB:1 BC:1 CA:0 |
Smoothing: 30 |
Face 380: A:190 B:199 C:191 AB:0 BC:1 CA:1 |
Smoothing: 31 |
Face 381: A:190 B:198 C:199 AB:1 BC:1 CA:0 |
Smoothing: 31 |
Face 382: A:191 B:192 C:184 AB:0 BC:1 CA:1 |
Smoothing: 32 |
Face 383: A:191 B:199 C:192 AB:1 BC:1 CA:0 |
Smoothing: 32 |
Face 384: A:192 B:201 C:193 AB:0 BC:1 CA:1 |
Page 19 |
Smoothing: 1 |
Face 385: A:192 B:200 C:201 AB:1 BC:1 CA:0 |
Smoothing: 1 |
Face 386: A:193 B:202 C:194 AB:0 BC:1 CA:1 |
Smoothing: 2 |
Face 387: A:193 B:201 C:202 AB:1 BC:1 CA:0 |
Smoothing: 2 |
Face 388: A:194 B:203 C:195 AB:0 BC:1 CA:1 |
Smoothing: 3 |
Face 389: A:194 B:202 C:203 AB:1 BC:1 CA:0 |
Smoothing: 3 |
Face 390: A:195 B:204 C:196 AB:0 BC:1 CA:1 |
Smoothing: 4 |
Face 391: A:195 B:203 C:204 AB:1 BC:1 CA:0 |
Smoothing: 4 |
Face 392: A:196 B:205 C:197 AB:0 BC:1 CA:1 |
Smoothing: 5 |
Face 393: A:196 B:204 C:205 AB:1 BC:1 CA:0 |
Smoothing: 5 |
Face 394: A:197 B:206 C:198 AB:0 BC:1 CA:1 |
Smoothing: 6 |
Face 395: A:197 B:205 C:206 AB:1 BC:1 CA:0 |
Smoothing: 6 |
Face 396: A:198 B:207 C:199 AB:0 BC:1 CA:1 |
Smoothing: 7 |
Face 397: A:198 B:206 C:207 AB:1 BC:1 CA:0 |
Smoothing: 7 |
Face 398: A:199 B:200 C:192 AB:0 BC:1 CA:1 |
Smoothing: 8 |
Face 399: A:199 B:207 C:200 AB:1 BC:1 CA:0 |
Smoothing: 8 |
Face 400: A:200 B:209 C:201 AB:0 BC:1 CA:1 |
Smoothing: 9 |
Face 401: A:200 B:208 C:209 AB:1 BC:1 CA:0 |
Smoothing: 9 |
Face 402: A:201 B:210 C:202 AB:0 BC:1 CA:1 |
Smoothing: 10 |
Face 403: A:201 B:209 C:210 AB:1 BC:1 CA:0 |
Smoothing: 10 |
Face 404: A:202 B:211 C:203 AB:0 BC:1 CA:1 |
Smoothing: 11 |
Face 405: A:202 B:210 C:211 AB:1 BC:1 CA:0 |
Smoothing: 11 |
Face 406: A:203 B:212 C:204 AB:0 BC:1 CA:1 |
Smoothing: 12 |
Face 407: A:203 B:211 C:212 AB:1 BC:1 CA:0 |
Smoothing: 12 |
Face 408: A:204 B:213 C:205 AB:0 BC:1 CA:1 |
Smoothing: 13 |
Face 409: A:204 B:212 C:213 AB:1 BC:1 CA:0 |
Smoothing: 13 |
Face 410: A:205 B:214 C:206 AB:0 BC:1 CA:1 |
Smoothing: 14 |
Face 411: A:205 B:213 C:214 AB:1 BC:1 CA:0 |
Smoothing: 14 |
Face 412: A:206 B:215 C:207 AB:0 BC:1 CA:1 |
Smoothing: 15 |
Face 413: A:206 B:214 C:215 AB:1 BC:1 CA:0 |
Smoothing: 15 |
Face 414: A:207 B:208 C:200 AB:0 BC:1 CA:1 |
Smoothing: 16 |
Page 20 |
Face 415: A:207 B:215 C:208 AB:1 BC:1 CA:0 |
Smoothing: 16 |
Face 416: A:208 B:217 C:209 AB:0 BC:1 CA:1 |
Smoothing: 17 |
Face 417: A:208 B:216 C:217 AB:1 BC:1 CA:0 |
Smoothing: 17 |
Face 418: A:209 B:218 C:210 AB:0 BC:1 CA:1 |
Smoothing: 18 |
Face 419: A:209 B:217 C:218 AB:1 BC:1 CA:0 |
Smoothing: 18 |
Face 420: A:210 B:219 C:211 AB:0 BC:1 CA:1 |
Smoothing: 19 |
Face 421: A:210 B:218 C:219 AB:1 BC:1 CA:0 |
Smoothing: 19 |
Face 422: A:211 B:220 C:212 AB:0 BC:1 CA:1 |
Smoothing: 20 |
Face 423: A:211 B:219 C:220 AB:1 BC:1 CA:0 |
Smoothing: 20 |
Face 424: A:212 B:221 C:213 AB:0 BC:1 CA:1 |
Smoothing: 21 |
Face 425: A:212 B:220 C:221 AB:1 BC:1 CA:0 |
Smoothing: 21 |
Face 426: A:213 B:222 C:214 AB:0 BC:1 CA:1 |
Smoothing: 22 |
Face 427: A:213 B:221 C:222 AB:1 BC:1 CA:0 |
Smoothing: 22 |
Face 428: A:214 B:223 C:215 AB:0 BC:1 CA:1 |
Smoothing: 23 |
Face 429: A:214 B:222 C:223 AB:1 BC:1 CA:0 |
Smoothing: 23 |
Face 430: A:215 B:216 C:208 AB:0 BC:1 CA:1 |
Smoothing: 24 |
Face 431: A:215 B:223 C:216 AB:1 BC:1 CA:0 |
Smoothing: 24 |
Face 432: A:216 B:225 C:217 AB:0 BC:1 CA:1 |
Smoothing: 25 |
Face 433: A:216 B:224 C:225 AB:1 BC:1 CA:0 |
Smoothing: 25 |
Face 434: A:217 B:226 C:218 AB:0 BC:1 CA:1 |
Smoothing: 26 |
Face 435: A:217 B:225 C:226 AB:1 BC:1 CA:0 |
Smoothing: 26 |
Face 436: A:218 B:227 C:219 AB:0 BC:1 CA:1 |
Smoothing: 27 |
Face 437: A:218 B:226 C:227 AB:1 BC:1 CA:0 |
Smoothing: 27 |
Face 438: A:219 B:228 C:220 AB:0 BC:1 CA:1 |
Smoothing: 28 |
Face 439: A:219 B:227 C:228 AB:1 BC:1 CA:0 |
Smoothing: 28 |
Face 440: A:220 B:229 C:221 AB:0 BC:1 CA:1 |
Smoothing: 29 |
Face 441: A:220 B:228 C:229 AB:1 BC:1 CA:0 |
Smoothing: 29 |
Face 442: A:221 B:230 C:222 AB:0 BC:1 CA:1 |
Smoothing: 30 |
Face 443: A:221 B:229 C:230 AB:1 BC:1 CA:0 |
Smoothing: 30 |
Face 444: A:222 B:231 C:223 AB:0 BC:1 CA:1 |
Smoothing: 31 |
Face 445: A:222 B:230 C:231 AB:1 BC:1 CA:0 |
Page 21 |
Smoothing: 31 |
Face 446: A:223 B:224 C:216 AB:0 BC:1 CA:1 |
Smoothing: 32 |
Face 447: A:223 B:231 C:224 AB:1 BC:1 CA:0 |
Smoothing: 32 |
Face 448: A:224 B:233 C:225 AB:0 BC:1 CA:1 |
Smoothing: 1 |
Face 449: A:224 B:232 C:233 AB:1 BC:1 CA:0 |
Smoothing: 1 |
Face 450: A:225 B:234 C:226 AB:0 BC:1 CA:1 |
Smoothing: 2 |
Face 451: A:225 B:233 C:234 AB:1 BC:1 CA:0 |
Smoothing: 2 |
Face 452: A:226 B:235 C:227 AB:0 BC:1 CA:1 |
Smoothing: 3 |
Face 453: A:226 B:234 C:235 AB:1 BC:1 CA:0 |
Smoothing: 3 |
Face 454: A:227 B:236 C:228 AB:0 BC:1 CA:1 |
Smoothing: 4 |
Face 455: A:227 B:235 C:236 AB:1 BC:1 CA:0 |
Smoothing: 4 |
Face 456: A:228 B:237 C:229 AB:0 BC:1 CA:1 |
Smoothing: 5 |
Face 457: A:228 B:236 C:237 AB:1 BC:1 CA:0 |
Smoothing: 5 |
Face 458: A:229 B:238 C:230 AB:0 BC:1 CA:1 |
Smoothing: 6 |
Face 459: A:229 B:237 C:238 AB:1 BC:1 CA:0 |
Smoothing: 6 |
Face 460: A:230 B:239 C:231 AB:0 BC:1 CA:1 |
Smoothing: 7 |
Face 461: A:230 B:238 C:239 AB:1 BC:1 CA:0 |
Smoothing: 7 |
Face 462: A:231 B:232 C:224 AB:0 BC:1 CA:1 |
Smoothing: 8 |
Face 463: A:231 B:239 C:232 AB:1 BC:1 CA:0 |
Smoothing: 8 |
Face 464: A:232 B:241 C:233 AB:0 BC:1 CA:1 |
Smoothing: 9 |
Face 465: A:232 B:240 C:241 AB:1 BC:1 CA:0 |
Smoothing: 9 |
Face 466: A:233 B:242 C:234 AB:0 BC:1 CA:1 |
Smoothing: 10 |
Face 467: A:233 B:241 C:242 AB:1 BC:1 CA:0 |
Smoothing: 10 |
Face 468: A:234 B:243 C:235 AB:0 BC:1 CA:1 |
Smoothing: 11 |
Face 469: A:234 B:242 C:243 AB:1 BC:1 CA:0 |
Smoothing: 11 |
Face 470: A:235 B:244 C:236 AB:0 BC:1 CA:1 |
Smoothing: 12 |
Face 471: A:235 B:243 C:244 AB:1 BC:1 CA:0 |
Smoothing: 12 |
Face 472: A:236 B:245 C:237 AB:0 BC:1 CA:1 |
Smoothing: 13 |
Face 473: A:236 B:244 C:245 AB:1 BC:1 CA:0 |
Smoothing: 13 |
Face 474: A:237 B:246 C:238 AB:0 BC:1 CA:1 |
Smoothing: 14 |
Face 475: A:237 B:245 C:246 AB:1 BC:1 CA:0 |
Smoothing: 14 |
Page 22 |
Face 476: A:238 B:247 C:239 AB:0 BC:1 CA:1 |
Smoothing: 15 |
Face 477: A:238 B:246 C:247 AB:1 BC:1 CA:0 |
Smoothing: 15 |
Face 478: A:239 B:240 C:232 AB:0 BC:1 CA:1 |
Smoothing: 16 |
Face 479: A:239 B:247 C:240 AB:1 BC:1 CA:0 |
Smoothing: 16 |
Face 480: A:240 B:249 C:241 AB:0 BC:1 CA:1 |
Smoothing: 17 |
Face 481: A:240 B:248 C:249 AB:1 BC:1 CA:0 |
Smoothing: 17 |
Face 482: A:241 B:250 C:242 AB:0 BC:1 CA:1 |
Smoothing: 18 |
Face 483: A:241 B:249 C:250 AB:1 BC:1 CA:0 |
Smoothing: 18 |
Face 484: A:242 B:251 C:243 AB:0 BC:1 CA:1 |
Smoothing: 19 |
Face 485: A:242 B:250 C:251 AB:1 BC:1 CA:0 |
Smoothing: 19 |
Face 486: A:243 B:252 C:244 AB:0 BC:1 CA:1 |
Smoothing: 20 |
Face 487: A:243 B:251 C:252 AB:1 BC:1 CA:0 |
Smoothing: 20 |
Face 488: A:244 B:253 C:245 AB:0 BC:1 CA:1 |
Smoothing: 21 |
Face 489: A:244 B:252 C:253 AB:1 BC:1 CA:0 |
Smoothing: 21 |
Face 490: A:245 B:254 C:246 AB:0 BC:1 CA:1 |
Smoothing: 22 |
Face 491: A:245 B:253 C:254 AB:1 BC:1 CA:0 |
Smoothing: 22 |
Face 492: A:246 B:255 C:247 AB:0 BC:1 CA:1 |
Smoothing: 23 |
Face 493: A:246 B:254 C:255 AB:1 BC:1 CA:0 |
Smoothing: 23 |
Face 494: A:247 B:248 C:240 AB:0 BC:1 CA:1 |
Smoothing: 24 |
Face 495: A:247 B:255 C:248 AB:1 BC:1 CA:0 |
Smoothing: 24 |
Face 496: A:248 B:129 C:249 AB:0 BC:1 CA:1 |
Smoothing: 25 |
Face 497: A:248 B:128 C:129 AB:1 BC:1 CA:0 |
Smoothing: 25 |
Face 498: A:249 B:130 C:250 AB:0 BC:1 CA:1 |
Smoothing: 26 |
Face 499: A:249 B:129 C:130 AB:1 BC:1 CA:0 |
Smoothing: 26 |
Face 500: A:250 B:131 C:251 AB:0 BC:1 CA:1 |
Smoothing: 27 |
Face 501: A:250 B:130 C:131 AB:1 BC:1 CA:0 |
Smoothing: 27 |
Face 502: A:251 B:132 C:252 AB:0 BC:1 CA:1 |
Smoothing: 28 |
Face 503: A:251 B:131 C:132 AB:1 BC:1 CA:0 |
Smoothing: 28 |
Face 504: A:252 B:133 C:253 AB:0 BC:1 CA:1 |
Smoothing: 29 |
Face 505: A:252 B:132 C:133 AB:1 BC:1 CA:0 |
Smoothing: 29 |
Face 506: A:253 B:134 C:254 AB:0 BC:1 CA:1 |
Page 23 |
Smoothing: 30 |
Face 507: A:253 B:133 C:134 AB:1 BC:1 CA:0 |
Smoothing: 30 |
Face 508: A:254 B:135 C:255 AB:0 BC:1 CA:1 |
Smoothing: 31 |
Face 509: A:254 B:134 C:135 AB:1 BC:1 CA:0 |
Smoothing: 31 |
Face 510: A:255 B:128 C:248 AB:0 BC:1 CA:1 |
Smoothing: 32 |
Face 511: A:255 B:135 C:128 AB:1 BC:1 CA:0 |
Smoothing: 32 |
Face 512: A:256 B:257 C:265 AB:1 BC:1 CA:0 |
Smoothing: 1 |
Face 513: A:256 B:265 C:264 AB:0 BC:1 CA:1 |
Smoothing: 1 |
Face 514: A:257 B:258 C:266 AB:1 BC:1 CA:0 |
Smoothing: 2 |
Face 515: A:257 B:266 C:265 AB:0 BC:1 CA:1 |
Smoothing: 2 |
Face 516: A:258 B:259 C:267 AB:1 BC:1 CA:0 |
Smoothing: 3 |
Face 517: A:258 B:267 C:266 AB:0 BC:1 CA:1 |
Smoothing: 3 |
Face 518: A:259 B:260 C:268 AB:1 BC:1 CA:0 |
Smoothing: 4 |
Face 519: A:259 B:268 C:267 AB:0 BC:1 CA:1 |
Smoothing: 4 |
Face 520: A:260 B:261 C:269 AB:1 BC:1 CA:0 |
Smoothing: 5 |
Face 521: A:260 B:269 C:268 AB:0 BC:1 CA:1 |
Smoothing: 5 |
Face 522: A:261 B:262 C:270 AB:1 BC:1 CA:0 |
Smoothing: 6 |
Face 523: A:261 B:270 C:269 AB:0 BC:1 CA:1 |
Smoothing: 6 |
Face 524: A:262 B:263 C:271 AB:1 BC:1 CA:0 |
Smoothing: 7 |
Face 525: A:262 B:271 C:270 AB:0 BC:1 CA:1 |
Smoothing: 7 |
Face 526: A:263 B:256 C:264 AB:1 BC:1 CA:0 |
Smoothing: 8 |
Face 527: A:263 B:264 C:271 AB:0 BC:1 CA:1 |
Smoothing: 8 |
Face 528: A:264 B:265 C:273 AB:1 BC:1 CA:0 |
Smoothing: 9 |
Face 529: A:264 B:273 C:272 AB:0 BC:1 CA:1 |
Smoothing: 9 |
Face 530: A:265 B:266 C:274 AB:1 BC:1 CA:0 |
Smoothing: 10 |
Face 531: A:265 B:274 C:273 AB:0 BC:1 CA:1 |
Smoothing: 10 |
Face 532: A:266 B:267 C:275 AB:1 BC:1 CA:0 |
Smoothing: 11 |
Face 533: A:266 B:275 C:274 AB:0 BC:1 CA:1 |
Smoothing: 11 |
Face 534: A:267 B:268 C:276 AB:1 BC:1 CA:0 |
Smoothing: 12 |
Face 535: A:267 B:276 C:275 AB:0 BC:1 CA:1 |
Smoothing: 12 |
Face 536: A:268 B:269 C:277 AB:1 BC:1 CA:0 |
Smoothing: 13 |
Page 24 |
Face 537: A:268 B:277 C:276 AB:0 BC:1 CA:1 |
Smoothing: 13 |
Face 538: A:269 B:270 C:278 AB:1 BC:1 CA:0 |
Smoothing: 14 |
Face 539: A:269 B:278 C:277 AB:0 BC:1 CA:1 |
Smoothing: 14 |
Face 540: A:270 B:271 C:279 AB:1 BC:1 CA:0 |
Smoothing: 15 |
Face 541: A:270 B:279 C:278 AB:0 BC:1 CA:1 |
Smoothing: 15 |
Face 542: A:271 B:264 C:272 AB:1 BC:1 CA:0 |
Smoothing: 16 |
Face 543: A:271 B:272 C:279 AB:0 BC:1 CA:1 |
Smoothing: 16 |
Face 544: A:272 B:273 C:281 AB:1 BC:1 CA:0 |
Smoothing: 17 |
Face 545: A:272 B:281 C:280 AB:0 BC:1 CA:1 |
Smoothing: 17 |
Face 546: A:273 B:274 C:282 AB:1 BC:1 CA:0 |
Smoothing: 18 |
Face 547: A:273 B:282 C:281 AB:0 BC:1 CA:1 |
Smoothing: 18 |
Face 548: A:274 B:275 C:283 AB:1 BC:1 CA:0 |
Smoothing: 19 |
Face 549: A:274 B:283 C:282 AB:0 BC:1 CA:1 |
Smoothing: 19 |
Face 550: A:275 B:276 C:284 AB:1 BC:1 CA:0 |
Smoothing: 20 |
Face 551: A:275 B:284 C:283 AB:0 BC:1 CA:1 |
Smoothing: 20 |
Face 552: A:276 B:277 C:285 AB:1 BC:1 CA:0 |
Smoothing: 21 |
Face 553: A:276 B:285 C:284 AB:0 BC:1 CA:1 |
Smoothing: 21 |
Face 554: A:277 B:278 C:286 AB:1 BC:1 CA:0 |
Smoothing: 22 |
Face 555: A:277 B:286 C:285 AB:0 BC:1 CA:1 |
Smoothing: 22 |
Face 556: A:278 B:279 C:287 AB:1 BC:1 CA:0 |
Smoothing: 23 |
Face 557: A:278 B:287 C:286 AB:0 BC:1 CA:1 |
Smoothing: 23 |
Face 558: A:279 B:272 C:280 AB:1 BC:1 CA:0 |
Smoothing: 24 |
Face 559: A:279 B:280 C:287 AB:0 BC:1 CA:1 |
Smoothing: 24 |
Face 560: A:280 B:281 C:289 AB:1 BC:1 CA:0 |
Smoothing: 25 |
Face 561: A:280 B:289 C:288 AB:0 BC:1 CA:1 |
Smoothing: 25 |
Face 562: A:281 B:282 C:290 AB:1 BC:1 CA:0 |
Smoothing: 26 |
Face 563: A:281 B:290 C:289 AB:0 BC:1 CA:1 |
Smoothing: 26 |
Face 564: A:282 B:283 C:291 AB:1 BC:1 CA:0 |
Smoothing: 27 |
Face 565: A:282 B:291 C:290 AB:0 BC:1 CA:1 |
Smoothing: 27 |
Face 566: A:283 B:284 C:292 AB:1 BC:1 CA:0 |
Smoothing: 28 |
Face 567: A:283 B:292 C:291 AB:0 BC:1 CA:1 |
Page 25 |
Smoothing: 28 |
Face 568: A:284 B:285 C:293 AB:1 BC:1 CA:0 |
Smoothing: 29 |
Face 569: A:284 B:293 C:292 AB:0 BC:1 CA:1 |
Smoothing: 29 |
Face 570: A:285 B:286 C:294 AB:1 BC:1 CA:0 |
Smoothing: 30 |
Face 571: A:285 B:294 C:293 AB:0 BC:1 CA:1 |
Smoothing: 30 |
Face 572: A:286 B:287 C:295 AB:1 BC:1 CA:0 |
Smoothing: 31 |
Face 573: A:286 B:295 C:294 AB:0 BC:1 CA:1 |
Smoothing: 31 |
Face 574: A:287 B:280 C:288 AB:1 BC:1 CA:0 |
Smoothing: 32 |
Face 575: A:287 B:288 C:295 AB:0 BC:1 CA:1 |
Smoothing: 32 |
Face 576: A:288 B:289 C:297 AB:1 BC:1 CA:0 |
Smoothing: 1 |
Face 577: A:288 B:297 C:296 AB:0 BC:1 CA:1 |
Smoothing: 1 |
Face 578: A:289 B:290 C:298 AB:1 BC:1 CA:0 |
Smoothing: 2 |
Face 579: A:289 B:298 C:297 AB:0 BC:1 CA:1 |
Smoothing: 2 |
Face 580: A:290 B:291 C:299 AB:1 BC:1 CA:0 |
Smoothing: 3 |
Face 581: A:290 B:299 C:298 AB:0 BC:1 CA:1 |
Smoothing: 3 |
Face 582: A:291 B:292 C:300 AB:1 BC:1 CA:0 |
Smoothing: 4 |
Face 583: A:291 B:300 C:299 AB:0 BC:1 CA:1 |
Smoothing: 4 |
Face 584: A:292 B:293 C:301 AB:1 BC:1 CA:0 |
Smoothing: 5 |
Face 585: A:292 B:301 C:300 AB:0 BC:1 CA:1 |
Smoothing: 5 |
Face 586: A:293 B:294 C:302 AB:1 BC:1 CA:0 |
Smoothing: 6 |
Face 587: A:293 B:302 C:301 AB:0 BC:1 CA:1 |
Smoothing: 6 |
Face 588: A:294 B:295 C:303 AB:1 BC:1 CA:0 |
Smoothing: 7 |
Face 589: A:294 B:303 C:302 AB:0 BC:1 CA:1 |
Smoothing: 7 |
Face 590: A:295 B:288 C:296 AB:1 BC:1 CA:0 |
Smoothing: 8 |
Face 591: A:295 B:296 C:303 AB:0 BC:1 CA:1 |
Smoothing: 8 |
Face 592: A:296 B:297 C:305 AB:1 BC:1 CA:0 |
Smoothing: 9 |
Face 593: A:296 B:305 C:304 AB:0 BC:1 CA:1 |
Smoothing: 9 |
Face 594: A:297 B:298 C:306 AB:1 BC:1 CA:0 |
Smoothing: 10 |
Face 595: A:297 B:306 C:305 AB:0 BC:1 CA:1 |
Smoothing: 10 |
Face 596: A:298 B:299 C:307 AB:1 BC:1 CA:0 |
Smoothing: 11 |
Face 597: A:298 B:307 C:306 AB:0 BC:1 CA:1 |
Smoothing: 11 |
Page 26 |
Face 598: A:299 B:300 C:308 AB:1 BC:1 CA:0 |
Smoothing: 12 |
Face 599: A:299 B:308 C:307 AB:0 BC:1 CA:1 |
Smoothing: 12 |
Face 600: A:300 B:301 C:309 AB:1 BC:1 CA:0 |
Smoothing: 13 |
Face 601: A:300 B:309 C:308 AB:0 BC:1 CA:1 |
Smoothing: 13 |
Face 602: A:301 B:302 C:310 AB:1 BC:1 CA:0 |
Smoothing: 14 |
Face 603: A:301 B:310 C:309 AB:0 BC:1 CA:1 |
Smoothing: 14 |
Face 604: A:302 B:303 C:311 AB:1 BC:1 CA:0 |
Smoothing: 15 |
Face 605: A:302 B:311 C:310 AB:0 BC:1 CA:1 |
Smoothing: 15 |
Face 606: A:303 B:296 C:304 AB:1 BC:1 CA:0 |
Smoothing: 16 |
Face 607: A:303 B:304 C:311 AB:0 BC:1 CA:1 |
Smoothing: 16 |
Face 608: A:304 B:305 C:313 AB:1 BC:1 CA:0 |
Smoothing: 17 |
Face 609: A:304 B:313 C:312 AB:0 BC:1 CA:1 |
Smoothing: 17 |
Face 610: A:305 B:306 C:314 AB:1 BC:1 CA:0 |
Smoothing: 18 |
Face 611: A:305 B:314 C:313 AB:0 BC:1 CA:1 |
Smoothing: 18 |
Face 612: A:306 B:307 C:315 AB:1 BC:1 CA:0 |
Smoothing: 19 |
Face 613: A:306 B:315 C:314 AB:0 BC:1 CA:1 |
Smoothing: 19 |
Face 614: A:307 B:308 C:316 AB:1 BC:1 CA:0 |
Smoothing: 20 |
Face 615: A:307 B:316 C:315 AB:0 BC:1 CA:1 |
Smoothing: 20 |
Face 616: A:308 B:309 C:317 AB:1 BC:1 CA:0 |
Smoothing: 21 |
Face 617: A:308 B:317 C:316 AB:0 BC:1 CA:1 |
Smoothing: 21 |
Face 618: A:309 B:310 C:318 AB:1 BC:1 CA:0 |
Smoothing: 22 |
Face 619: A:309 B:318 C:317 AB:0 BC:1 CA:1 |
Smoothing: 22 |
Face 620: A:310 B:311 C:319 AB:1 BC:1 CA:0 |
Smoothing: 23 |
Face 621: A:310 B:319 C:318 AB:0 BC:1 CA:1 |
Smoothing: 23 |
Face 622: A:311 B:304 C:312 AB:1 BC:1 CA:0 |
Smoothing: 24 |
Face 623: A:311 B:312 C:319 AB:0 BC:1 CA:1 |
Smoothing: 24 |
Face 624: A:312 B:313 C:321 AB:1 BC:1 CA:0 |
Smoothing: 25 |
Face 625: A:312 B:321 C:320 AB:0 BC:1 CA:1 |
Smoothing: 25 |
Face 626: A:313 B:314 C:322 AB:1 BC:1 CA:0 |
Smoothing: 26 |
Face 627: A:313 B:322 C:321 AB:0 BC:1 CA:1 |
Smoothing: 26 |
Face 628: A:314 B:315 C:323 AB:1 BC:1 CA:0 |
Page 27 |
Smoothing: 27 |
Face 629: A:314 B:323 C:322 AB:0 BC:1 CA:1 |
Smoothing: 27 |
Face 630: A:315 B:316 C:324 AB:1 BC:1 CA:0 |
Smoothing: 28 |
Face 631: A:315 B:324 C:323 AB:0 BC:1 CA:1 |
Smoothing: 28 |
Face 632: A:316 B:317 C:325 AB:1 BC:1 CA:0 |
Smoothing: 29 |
Face 633: A:316 B:325 C:324 AB:0 BC:1 CA:1 |
Smoothing: 29 |
Face 634: A:317 B:318 C:326 AB:1 BC:1 CA:0 |
Smoothing: 30 |
Face 635: A:317 B:326 C:325 AB:0 BC:1 CA:1 |
Smoothing: 30 |
Face 636: A:318 B:319 C:327 AB:1 BC:1 CA:0 |
Smoothing: 31 |
Face 637: A:318 B:327 C:326 AB:0 BC:1 CA:1 |
Smoothing: 31 |
Face 638: A:319 B:312 C:320 AB:1 BC:1 CA:0 |
Smoothing: 32 |
Face 639: A:319 B:320 C:327 AB:0 BC:1 CA:1 |
Smoothing: 32 |
Face 640: A:320 B:321 C:329 AB:1 BC:1 CA:0 |
Smoothing: 1 |
Face 641: A:320 B:329 C:328 AB:0 BC:1 CA:1 |
Smoothing: 1 |
Face 642: A:321 B:322 C:330 AB:1 BC:1 CA:0 |
Smoothing: 2 |
Face 643: A:321 B:330 C:329 AB:0 BC:1 CA:1 |
Smoothing: 2 |
Face 644: A:322 B:323 C:331 AB:1 BC:1 CA:0 |
Smoothing: 3 |
Face 645: A:322 B:331 C:330 AB:0 BC:1 CA:1 |
Smoothing: 3 |
Face 646: A:323 B:324 C:332 AB:1 BC:1 CA:0 |
Smoothing: 4 |
Face 647: A:323 B:332 C:331 AB:0 BC:1 CA:1 |
Smoothing: 4 |
Face 648: A:324 B:325 C:333 AB:1 BC:1 CA:0 |
Smoothing: 5 |
Face 649: A:324 B:333 C:332 AB:0 BC:1 CA:1 |
Smoothing: 5 |
Face 650: A:325 B:326 C:334 AB:1 BC:1 CA:0 |
Smoothing: 6 |
Face 651: A:325 B:334 C:333 AB:0 BC:1 CA:1 |
Smoothing: 6 |
Face 652: A:326 B:327 C:335 AB:1 BC:1 CA:0 |
Smoothing: 7 |
Face 653: A:326 B:335 C:334 AB:0 BC:1 CA:1 |
Smoothing: 7 |
Face 654: A:327 B:320 C:328 AB:1 BC:1 CA:0 |
Smoothing: 8 |
Face 655: A:327 B:328 C:335 AB:0 BC:1 CA:1 |
Smoothing: 8 |
Face 656: A:328 B:329 C:337 AB:1 BC:1 CA:0 |
Smoothing: 9 |
Face 657: A:328 B:337 C:336 AB:0 BC:1 CA:1 |
Smoothing: 9 |
Face 658: A:329 B:330 C:338 AB:1 BC:1 CA:0 |
Smoothing: 10 |
Page 28 |
Face 659: A:329 B:338 C:337 AB:0 BC:1 CA:1 |
Smoothing: 10 |
Face 660: A:330 B:331 C:339 AB:1 BC:1 CA:0 |
Smoothing: 11 |
Face 661: A:330 B:339 C:338 AB:0 BC:1 CA:1 |
Smoothing: 11 |
Face 662: A:331 B:332 C:340 AB:1 BC:1 CA:0 |
Smoothing: 12 |
Face 663: A:331 B:340 C:339 AB:0 BC:1 CA:1 |
Smoothing: 12 |
Face 664: A:332 B:333 C:341 AB:1 BC:1 CA:0 |
Smoothing: 13 |
Face 665: A:332 B:341 C:340 AB:0 BC:1 CA:1 |
Smoothing: 13 |
Face 666: A:333 B:334 C:342 AB:1 BC:1 CA:0 |
Smoothing: 14 |
Face 667: A:333 B:342 C:341 AB:0 BC:1 CA:1 |
Smoothing: 14 |
Face 668: A:334 B:335 C:343 AB:1 BC:1 CA:0 |
Smoothing: 15 |
Face 669: A:334 B:343 C:342 AB:0 BC:1 CA:1 |
Smoothing: 15 |
Face 670: A:335 B:328 C:336 AB:1 BC:1 CA:0 |
Smoothing: 16 |
Face 671: A:335 B:336 C:343 AB:0 BC:1 CA:1 |
Smoothing: 16 |
Face 672: A:336 B:337 C:345 AB:1 BC:1 CA:0 |
Smoothing: 17 |
Face 673: A:336 B:345 C:344 AB:0 BC:1 CA:1 |
Smoothing: 17 |
Face 674: A:337 B:338 C:346 AB:1 BC:1 CA:0 |
Smoothing: 18 |
Face 675: A:337 B:346 C:345 AB:0 BC:1 CA:1 |
Smoothing: 18 |
Face 676: A:338 B:339 C:347 AB:1 BC:1 CA:0 |
Smoothing: 19 |
Face 677: A:338 B:347 C:346 AB:0 BC:1 CA:1 |
Smoothing: 19 |
Face 678: A:339 B:340 C:348 AB:1 BC:1 CA:0 |
Smoothing: 20 |
Face 679: A:339 B:348 C:347 AB:0 BC:1 CA:1 |
Smoothing: 20 |
Face 680: A:340 B:341 C:349 AB:1 BC:1 CA:0 |
Smoothing: 21 |
Face 681: A:340 B:349 C:348 AB:0 BC:1 CA:1 |
Smoothing: 21 |
Face 682: A:341 B:342 C:350 AB:1 BC:1 CA:0 |
Smoothing: 22 |
Face 683: A:341 B:350 C:349 AB:0 BC:1 CA:1 |
Smoothing: 22 |
Face 684: A:342 B:343 C:351 AB:1 BC:1 CA:0 |
Smoothing: 23 |
Face 685: A:342 B:351 C:350 AB:0 BC:1 CA:1 |
Smoothing: 23 |
Face 686: A:343 B:336 C:344 AB:1 BC:1 CA:0 |
Smoothing: 24 |
Face 687: A:343 B:344 C:351 AB:0 BC:1 CA:1 |
Smoothing: 24 |
Face 688: A:344 B:345 C:353 AB:1 BC:1 CA:0 |
Smoothing: 25 |
Face 689: A:344 B:353 C:352 AB:0 BC:1 CA:1 |
Page 29 |
Smoothing: 25 |
Face 690: A:345 B:346 C:354 AB:1 BC:1 CA:0 |
Smoothing: 26 |
Face 691: A:345 B:354 C:353 AB:0 BC:1 CA:1 |
Smoothing: 26 |
Face 692: A:346 B:347 C:355 AB:1 BC:1 CA:0 |
Smoothing: 27 |
Face 693: A:346 B:355 C:354 AB:0 BC:1 CA:1 |
Smoothing: 27 |
Face 694: A:347 B:348 C:356 AB:1 BC:1 CA:0 |
Smoothing: 28 |
Face 695: A:347 B:356 C:355 AB:0 BC:1 CA:1 |
Smoothing: 28 |
Face 696: A:348 B:349 C:357 AB:1 BC:1 CA:0 |
Smoothing: 29 |
Face 697: A:348 B:357 C:356 AB:0 BC:1 CA:1 |
Smoothing: 29 |
Face 698: A:349 B:350 C:358 AB:1 BC:1 CA:0 |
Smoothing: 30 |
Face 699: A:349 B:358 C:357 AB:0 BC:1 CA:1 |
Smoothing: 30 |
Face 700: A:350 B:351 C:359 AB:1 BC:1 CA:0 |
Smoothing: 31 |
Face 701: A:350 B:359 C:358 AB:0 BC:1 CA:1 |
Smoothing: 31 |
Face 702: A:351 B:344 C:352 AB:1 BC:1 CA:0 |
Smoothing: 32 |
Face 703: A:351 B:352 C:359 AB:0 BC:1 CA:1 |
Smoothing: 32 |
Face 704: A:352 B:353 C:361 AB:1 BC:1 CA:0 |
Smoothing: 1 |
Face 705: A:352 B:361 C:360 AB:0 BC:1 CA:1 |
Smoothing: 1 |
Face 706: A:353 B:354 C:362 AB:1 BC:1 CA:0 |
Smoothing: 2 |
Face 707: A:353 B:362 C:361 AB:0 BC:1 CA:1 |
Smoothing: 2 |
Face 708: A:354 B:355 C:363 AB:1 BC:1 CA:0 |
Smoothing: 3 |
Face 709: A:354 B:363 C:362 AB:0 BC:1 CA:1 |
Smoothing: 3 |
Face 710: A:355 B:356 C:364 AB:1 BC:1 CA:0 |
Smoothing: 4 |
Face 711: A:355 B:364 C:363 AB:0 BC:1 CA:1 |
Smoothing: 4 |
Face 712: A:356 B:357 C:365 AB:1 BC:1 CA:0 |
Smoothing: 5 |
Face 713: A:356 B:365 C:364 AB:0 BC:1 CA:1 |
Smoothing: 5 |
Face 714: A:357 B:358 C:366 AB:1 BC:1 CA:0 |
Smoothing: 6 |
Face 715: A:357 B:366 C:365 AB:0 BC:1 CA:1 |
Smoothing: 6 |
Face 716: A:358 B:359 C:367 AB:1 BC:1 CA:0 |
Smoothing: 7 |
Face 717: A:358 B:367 C:366 AB:0 BC:1 CA:1 |
Smoothing: 7 |
Face 718: A:359 B:352 C:360 AB:1 BC:1 CA:0 |
Smoothing: 8 |
Face 719: A:359 B:360 C:367 AB:0 BC:1 CA:1 |
Smoothing: 8 |
Page 30 |
Face 720: A:360 B:361 C:369 AB:1 BC:1 CA:0 |
Smoothing: 9 |
Face 721: A:360 B:369 C:368 AB:0 BC:1 CA:1 |
Smoothing: 9 |
Face 722: A:361 B:362 C:370 AB:1 BC:1 CA:0 |
Smoothing: 10 |
Face 723: A:361 B:370 C:369 AB:0 BC:1 CA:1 |
Smoothing: 10 |
Face 724: A:362 B:363 C:371 AB:1 BC:1 CA:0 |
Smoothing: 11 |
Face 725: A:362 B:371 C:370 AB:0 BC:1 CA:1 |
Smoothing: 11 |
Face 726: A:363 B:364 C:372 AB:1 BC:1 CA:0 |
Smoothing: 12 |
Face 727: A:363 B:372 C:371 AB:0 BC:1 CA:1 |
Smoothing: 12 |
Face 728: A:364 B:365 C:373 AB:1 BC:1 CA:0 |
Smoothing: 13 |
Face 729: A:364 B:373 C:372 AB:0 BC:1 CA:1 |
Smoothing: 13 |
Face 730: A:365 B:366 C:374 AB:1 BC:1 CA:0 |
Smoothing: 14 |
Face 731: A:365 B:374 C:373 AB:0 BC:1 CA:1 |
Smoothing: 14 |
Face 732: A:366 B:367 C:375 AB:1 BC:1 CA:0 |
Smoothing: 15 |
Face 733: A:366 B:375 C:374 AB:0 BC:1 CA:1 |
Smoothing: 15 |
Face 734: A:367 B:360 C:368 AB:1 BC:1 CA:0 |
Smoothing: 16 |
Face 735: A:367 B:368 C:375 AB:0 BC:1 CA:1 |
Smoothing: 16 |
Face 736: A:368 B:369 C:377 AB:1 BC:1 CA:0 |
Smoothing: 17 |
Face 737: A:368 B:377 C:376 AB:0 BC:1 CA:1 |
Smoothing: 17 |
Face 738: A:369 B:370 C:378 AB:1 BC:1 CA:0 |
Smoothing: 18 |
Face 739: A:369 B:378 C:377 AB:0 BC:1 CA:1 |
Smoothing: 18 |
Face 740: A:370 B:371 C:379 AB:1 BC:1 CA:0 |
Smoothing: 19 |
Face 741: A:370 B:379 C:378 AB:0 BC:1 CA:1 |
Smoothing: 19 |
Face 742: A:371 B:372 C:380 AB:1 BC:1 CA:0 |
Smoothing: 20 |
Face 743: A:371 B:380 C:379 AB:0 BC:1 CA:1 |
Smoothing: 20 |
Face 744: A:372 B:373 C:381 AB:1 BC:1 CA:0 |
Smoothing: 21 |
Face 745: A:372 B:381 C:380 AB:0 BC:1 CA:1 |
Smoothing: 21 |
Face 746: A:373 B:374 C:382 AB:1 BC:1 CA:0 |
Smoothing: 22 |
Face 747: A:373 B:382 C:381 AB:0 BC:1 CA:1 |
Smoothing: 22 |
Face 748: A:374 B:375 C:383 AB:1 BC:1 CA:0 |
Smoothing: 23 |
Face 749: A:374 B:383 C:382 AB:0 BC:1 CA:1 |
Smoothing: 23 |
Face 750: A:375 B:368 C:376 AB:1 BC:1 CA:0 |
Page 31 |
Smoothing: 24 |
Face 751: A:375 B:376 C:383 AB:0 BC:1 CA:1 |
Smoothing: 24 |
Face 752: A:376 B:377 C:257 AB:1 BC:1 CA:0 |
Smoothing: 25 |
Face 753: A:376 B:257 C:256 AB:0 BC:1 CA:1 |
Smoothing: 25 |
Face 754: A:377 B:378 C:258 AB:1 BC:1 CA:0 |
Smoothing: 26 |
Face 755: A:377 B:258 C:257 AB:0 BC:1 CA:1 |
Smoothing: 26 |
Face 756: A:378 B:379 C:259 AB:1 BC:1 CA:0 |
Smoothing: 27 |
Face 757: A:378 B:259 C:258 AB:0 BC:1 CA:1 |
Smoothing: 27 |
Face 758: A:379 B:380 C:260 AB:1 BC:1 CA:0 |
Smoothing: 28 |
Face 759: A:379 B:260 C:259 AB:0 BC:1 CA:1 |
Smoothing: 28 |
Face 760: A:380 B:381 C:261 AB:1 BC:1 CA:0 |
Smoothing: 29 |
Face 761: A:380 B:261 C:260 AB:0 BC:1 CA:1 |
Smoothing: 29 |
Face 762: A:381 B:382 C:262 AB:1 BC:1 CA:0 |
Smoothing: 30 |
Face 763: A:381 B:262 C:261 AB:0 BC:1 CA:1 |
Smoothing: 30 |
Face 764: A:382 B:383 C:263 AB:1 BC:1 CA:0 |
Smoothing: 31 |
Face 765: A:382 B:263 C:262 AB:0 BC:1 CA:1 |
Smoothing: 31 |
Face 766: A:383 B:376 C:256 AB:1 BC:1 CA:0 |
Smoothing: 32 |
Face 767: A:383 B:256 C:263 AB:0 BC:1 CA:1 |
Smoothing: 32 |
Page 32 |
/programs/demos/view3ds/asc_objects/AR2.ASC |
---|
0,0 → 1,594 |
Ambient light color: Red=0.039216 Green=0.039216 Blue=0.039216 |
Named object: "Object" |
Tri-mesh, Vertices: 72 Faces: 140 |
Vertex list: |
Vertex 0: X: 20.130791 Y: -174.628616 Z: -26.846941 |
Vertex 1: X: -17.812012 Y: -194.765305 Z: -26.846941 |
Vertex 2: X: -22.554863 Y: -197.282394 Z: -21.477539 |
Vertex 3: X: -22.554855 Y: -197.282379 Z: 21.47757 |
Vertex 4: X: -17.812008 Y: -194.765289 Z: 26.846968 |
Vertex 5: X: 20.130791 Y: -174.628601 Z: 26.846968 |
Vertex 6: X: 24.873642 Y: -172.111542 Z: 21.477566 |
Vertex 7: X: 24.873634 Y: -172.111526 Z: -21.477543 |
Vertex 8: X: -47.800331 Y: -58.31171 Z: -26.846952 |
Vertex 9: X: -89.500107 Y: -48.002941 Z: -26.846952 |
Vertex 10: X: -94.712585 Y: -46.71434 Z: -21.477552 |
Vertex 11: X: -94.712585 Y: -46.714348 Z: 21.477556 |
Vertex 12: X: -89.500114 Y: -48.002941 Z: 26.846956 |
Vertex 13: X: -47.800335 Y: -58.31171 Z: 26.846956 |
Vertex 14: X: -42.587864 Y: -59.600311 Z: 21.477556 |
Vertex 15: X: -42.58786 Y: -59.600304 Z: -21.477552 |
Vertex 16: X: -11.645042 Y: -39.661633 Z: -26.846954 |
Vertex 17: X: -43.064949 Y: -10.371157 Z: -26.846956 |
Vertex 18: X: -46.992439 Y: -6.70985 Z: -21.477556 |
Vertex 19: X: -46.992439 Y: -6.709852 Z: 21.477552 |
Vertex 20: X: -43.064957 Y: -10.371161 Z: 26.846952 |
Vertex 21: X: -11.64505 Y: -39.661633 Z: 26.846954 |
Vertex 22: X: -7.71756 Y: -43.322945 Z: 21.477556 |
Vertex 23: X: -7.71756 Y: -43.322937 Z: -21.477552 |
Vertex 24: X: 18.267815 Y: 13.389006 Z: -26.846958 |
Vertex 25: X: -24.121857 Y: 20.335791 Z: -26.846958 |
Vertex 26: X: -29.420563 Y: 21.204142 Z: -21.477558 |
Vertex 27: X: -29.420563 Y: 21.204138 Z: 21.477551 |
Vertex 28: X: -24.121857 Y: 20.335787 Z: 26.846951 |
Vertex 29: X: 18.267815 Y: 13.389002 Z: 26.846951 |
Vertex 30: X: 23.566521 Y: 12.520655 Z: 21.477551 |
Vertex 31: X: 23.566521 Y: 12.520658 Z: -21.477558 |
Vertex 32: X: 5.648056 Y: 76.711929 Z: -26.846964 |
Vertex 33: X: -31.843674 Y: 55.747364 Z: -26.846962 |
Vertex 34: X: -36.530136 Y: 53.126801 Z: -21.477562 |
Vertex 35: X: -36.530132 Y: 53.126793 Z: 21.477547 |
Vertex 36: X: -31.843666 Y: 55.747364 Z: 26.846947 |
Vertex 37: X: 5.648064 Y: 76.711922 Z: 26.846945 |
Vertex 38: X: 10.334526 Y: 79.332489 Z: 21.477545 |
Vertex 39: X: 10.334526 Y: 79.332497 Z: -21.477564 |
Vertex 40: X: -40.5429 Y: 120.083321 Z: -26.846968 |
Vertex 41: X: -59.010536 Y: 81.300743 Z: -26.846964 |
Vertex 42: X: -61.318993 Y: 76.452927 Z: -21.477564 |
Vertex 43: X: -61.318985 Y: 76.452919 Z: 21.477545 |
Vertex 44: X: -59.010529 Y: 81.300743 Z: 26.846945 |
Vertex 45: X: -40.542892 Y: 120.083321 Z: 26.846941 |
Vertex 46: X: -38.234436 Y: 124.931145 Z: 21.477541 |
Vertex 47: X: -38.234444 Y: 124.931145 Z: -21.477568 |
Vertex 48: X: -93.261726 Y: 127.39135 Z: -26.846968 |
Vertex 49: X: -86.911591 Y: 84.908218 Z: -26.846964 |
Vertex 50: X: -86.117828 Y: 79.597824 Z: -21.477564 |
Vertex 51: X: -86.117821 Y: 79.597824 Z: 21.477545 |
Vertex 52: X: -86.911583 Y: 84.908218 Z: 26.846945 |
Vertex 53: X: -93.261719 Y: 127.39135 Z: 26.846941 |
Vertex 54: X: -94.055481 Y: 132.701752 Z: 21.477539 |
Vertex 55: X: -94.055489 Y: 132.701736 Z: -21.47757 |
Page 1 |
Vertex 56: X: -161.929184 Y: 93.003784 Z: -26.846966 |
Vertex 57: X: -125.776421 Y: 69.806366 Z: -26.846964 |
Vertex 58: X: -121.257324 Y: 66.906685 Z: -21.477564 |
Vertex 59: X: -121.257324 Y: 66.906693 Z: 21.477545 |
Vertex 60: X: -125.776413 Y: 69.806366 Z: 26.846945 |
Vertex 61: X: -161.929184 Y: 93.003784 Z: 26.846943 |
Vertex 62: X: -166.448273 Y: 95.903465 Z: 21.477543 |
Vertex 63: X: -166.448273 Y: 95.903465 Z: -21.477566 |
Vertex 64: X: -165.741531 Y: -193.219131 Z: -26.846941 |
Vertex 65: X: -122.786453 Y: -193.283432 Z: -26.846941 |
Vertex 66: X: -117.417076 Y: -193.291489 Z: -21.477541 |
Vertex 67: X: -117.417076 Y: -193.291443 Z: 21.477568 |
Vertex 68: X: -122.786453 Y: -193.283417 Z: 26.846968 |
Vertex 69: X: -165.741531 Y: -193.219116 Z: 26.846968 |
Vertex 70: X: -171.110901 Y: -193.21109 Z: 21.477568 |
Vertex 71: X: -171.110901 Y: -193.211105 Z: -21.477541 |
Face list: |
Face 0: A:6 B:5 C:4 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 17 |
Face 1: A:7 B:6 C:4 AB:1 BC:0 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 17 |
Face 2: A:7 B:4 C:3 AB:0 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 17 |
Face 3: A:7 B:3 C:2 AB:0 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 17 |
Face 4: A:7 B:2 C:1 AB:0 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 17 |
Face 5: A:7 B:1 C:0 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 17 |
Face 6: A:0 B:1 C:9 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 7: A:0 B:9 C:8 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 8: A:1 B:2 C:10 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 2, 11 |
Face 9: A:1 B:10 C:9 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 2, 11 |
Face 10: A:2 B:3 C:11 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 11: A:2 B:11 C:10 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 12: A:3 B:4 C:12 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 2, 11 |
Face 13: A:3 B:12 C:11 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 2, 11 |
Face 14: A:4 B:5 C:13 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Page 2 |
Smoothing: 1, 10 |
Face 15: A:4 B:13 C:12 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 16: A:5 B:6 C:14 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 2, 11 |
Face 17: A:5 B:14 C:13 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 2, 11 |
Face 18: A:6 B:7 C:15 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 19: A:6 B:15 C:14 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 20: A:7 B:0 C:8 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 3, 12 |
Face 21: A:7 B:8 C:15 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 3, 12 |
Face 22: A:8 B:9 C:17 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 23: A:8 B:17 C:16 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 24: A:9 B:10 C:18 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 5, 11 |
Face 25: A:9 B:18 C:17 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 5, 11 |
Face 26: A:10 B:11 C:19 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 27: A:10 B:19 C:18 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 28: A:11 B:12 C:20 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 5, 11 |
Face 29: A:11 B:20 C:19 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 5, 11 |
Face 30: A:12 B:13 C:21 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 31: A:12 B:21 C:20 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 32: A:13 B:14 C:22 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 5, 11 |
Face 33: A:13 B:22 C:21 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 5, 11 |
Face 34: A:14 B:15 C:23 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Page 3 |
Face 35: A:14 B:23 C:22 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 36: A:15 B:8 C:16 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 6, 12 |
Face 37: A:15 B:16 C:23 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 6, 12 |
Face 38: A:16 B:17 C:25 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 39: A:16 B:25 C:24 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 40: A:17 B:18 C:26 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 2, 11 |
Face 41: A:17 B:26 C:25 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 2, 11 |
Face 42: A:18 B:19 C:27 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 43: A:18 B:27 C:26 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 44: A:19 B:20 C:28 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 2, 11 |
Face 45: A:19 B:28 C:27 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 2, 11 |
Face 46: A:20 B:21 C:29 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 47: A:20 B:29 C:28 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 48: A:21 B:22 C:30 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 2, 11 |
Face 49: A:21 B:30 C:29 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 2, 11 |
Face 50: A:22 B:23 C:31 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 51: A:22 B:31 C:30 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 52: A:23 B:16 C:24 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 3, 12 |
Face 53: A:23 B:24 C:31 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 3, 12 |
Face 54: A:24 B:25 C:33 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 55: A:24 B:33 C:32 AB:0 BC:1 CA:1 |
Page 4 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 56: A:25 B:26 C:34 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 5, 11 |
Face 57: A:25 B:34 C:33 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 5, 11 |
Face 58: A:26 B:27 C:35 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 59: A:26 B:35 C:34 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 60: A:27 B:28 C:36 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 5, 11 |
Face 61: A:27 B:36 C:35 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 5, 11 |
Face 62: A:28 B:29 C:37 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 63: A:28 B:37 C:36 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 64: A:29 B:30 C:38 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 5, 11 |
Face 65: A:29 B:38 C:37 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 5, 11 |
Face 66: A:30 B:31 C:39 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 67: A:30 B:39 C:38 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 68: A:31 B:24 C:32 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 6, 12 |
Face 69: A:31 B:32 C:39 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 6, 12 |
Face 70: A:32 B:33 C:41 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 71: A:32 B:41 C:40 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 72: A:33 B:34 C:42 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 2, 11 |
Face 73: A:33 B:42 C:41 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 2, 11 |
Face 74: A:34 B:35 C:43 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 75: A:34 B:43 C:42 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Page 5 |
Smoothing: 1, 10 |
Face 76: A:35 B:36 C:44 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 2, 11 |
Face 77: A:35 B:44 C:43 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 2, 11 |
Face 78: A:36 B:37 C:45 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 79: A:36 B:45 C:44 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 80: A:37 B:38 C:46 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 2, 11 |
Face 81: A:37 B:46 C:45 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 2, 11 |
Face 82: A:38 B:39 C:47 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 83: A:38 B:47 C:46 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 84: A:39 B:32 C:40 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 3, 12 |
Face 85: A:39 B:40 C:47 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 3, 12 |
Face 86: A:40 B:41 C:49 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 87: A:40 B:49 C:48 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 88: A:41 B:42 C:50 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 5, 11 |
Face 89: A:41 B:50 C:49 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 5, 11 |
Face 90: A:42 B:43 C:51 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 91: A:42 B:51 C:50 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 92: A:43 B:44 C:52 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 5, 11 |
Face 93: A:43 B:52 C:51 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 5, 11 |
Face 94: A:44 B:45 C:53 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 95: A:44 B:53 C:52 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Page 6 |
Face 96: A:45 B:46 C:54 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 5, 11 |
Face 97: A:45 B:54 C:53 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 5, 11 |
Face 98: A:46 B:47 C:55 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 99: A:46 B:55 C:54 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 100: A:47 B:40 C:48 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 6, 12 |
Face 101: A:47 B:48 C:55 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 6, 12 |
Face 102: A:48 B:49 C:57 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 103: A:48 B:57 C:56 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 104: A:49 B:50 C:58 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 2, 11 |
Face 105: A:49 B:58 C:57 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 2, 11 |
Face 106: A:50 B:51 C:59 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 107: A:50 B:59 C:58 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 108: A:51 B:52 C:60 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 2, 11 |
Face 109: A:51 B:60 C:59 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 2, 11 |
Face 110: A:52 B:53 C:61 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 111: A:52 B:61 C:60 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 112: A:53 B:54 C:62 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 2, 11 |
Face 113: A:53 B:62 C:61 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 2, 11 |
Face 114: A:54 B:55 C:63 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 115: A:54 B:63 C:62 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 1, 10 |
Face 116: A:55 B:48 C:56 AB:1 BC:1 CA:0 |
Page 7 |
Material:"YELLOW PLASTIC" |
Smoothing: 3, 12 |
Face 117: A:55 B:56 C:63 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 3, 12 |
Face 118: A:56 B:57 C:65 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 119: A:56 B:65 C:64 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 120: A:57 B:58 C:66 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 5, 11 |
Face 121: A:57 B:66 C:65 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 5, 11 |
Face 122: A:58 B:59 C:67 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 123: A:58 B:67 C:66 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 124: A:59 B:60 C:68 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 5, 11 |
Face 125: A:59 B:68 C:67 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 5, 11 |
Face 126: A:60 B:61 C:69 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 127: A:60 B:69 C:68 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 128: A:61 B:62 C:70 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 5, 11 |
Face 129: A:61 B:70 C:69 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 5, 11 |
Face 130: A:62 B:63 C:71 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 131: A:62 B:71 C:70 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 4, 10 |
Face 132: A:63 B:56 C:64 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 6, 12 |
Face 133: A:63 B:64 C:71 AB:0 BC:1 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 6, 12 |
Face 134: A:68 B:69 C:70 AB:1 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 17 |
Face 135: A:68 B:70 C:71 AB:0 BC:1 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 17 |
Face 136: A:67 B:68 C:71 AB:1 BC:0 CA:0 |
Material:"YELLOW PLASTIC" |
Page 8 |
Smoothing: 17 |
Face 137: A:66 B:67 C:71 AB:1 BC:0 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 17 |
Face 138: A:65 B:66 C:71 AB:1 BC:0 CA:0 |
Material:"YELLOW PLASTIC" |
Smoothing: 17 |
Face 139: A:64 B:65 C:71 AB:1 BC:0 CA:1 |
Material:"YELLOW PLASTIC" |
Smoothing: 17 |
Named object: "Light01" |
Direct light |
Position: X:-85.351791 Y:9.227221 Z:73.817757 |
Light color: Red=0.705882 Green=0.705882 Blue=0.705882 |
Page 9 |
/programs/demos/view3ds/asc_objects/ARCEE.ASC |
---|
0,0 → 1,660 |
Ambient light color: Red=0.686275 Green=0.686275 Blue=0.686275 |
Named object: "Object" |
Tri-mesh, Vertices: 86 Faces: 168 |
Mapped |
Vertex list: |
Vertex 0: X:-50.249485 Y:0.000003 Z:-14.896361 U:0.257762 V:0.426883 |
Vertex 1: X:-61.036736 Y:0.000003 Z:-14.896361 U:0.202294 V:0.426883 |
Vertex 2: X:-61.036736 Y:0.000001 Z:-70.569664 U:0.202294 V:0.15362 |
Vertex 3: X:-57.213406 Y:0.000003 Z:-100.362404 U:0.221953 V:0.007387 |
Vertex 4: X:-99.406586 Y:0.000006 Z:-100.362404 U:0.004993 V:0.007387 |
Vertex 5: X:-95.58326 Y:0.000001 Z:-70.569664 U:0.024653 V:0.15362 |
Vertex 6: X:-95.58326 Y:0.000006 Z:70.569695 U:0.024653 V:0.846381 |
Vertex 7: X:-99.406586 Y:0.000005 Z:100.362434 U:0.004993 V:0.992614 |
Vertex 8: X:-24.442005 Y:0.000001 Z:100.362434 U:0.390466 V:0.992614 |
Vertex 9: X:-6.008092 Y:0 Z:90.431519 U:0.485255 V:0.943869 |
Vertex 10: X:-0.273097 Y:0.000001 Z:58.532211 U:0.514745 V:0.787296 |
Vertex 11: X:-0.273097 Y:-0.000002 Z:15.498254 U:0.514745 V:0.576071 |
Vertex 12: X:-1.911667 Y:-0 Z:-4.363575 U:0.506319 V:0.478582 |
Vertex 13: X:-13.654753 Y:0.000002 Z:-15.197298 U:0.445935 V:0.425406 |
Vertex 14: X:0.819283 Y:0 Z:-82.607132 U:0.520362 V:0.094536 |
Vertex 15: X:5.734993 Y:-0.000001 Z:-100.362404 U:0.545639 V:0.007387 |
Vertex 16: X:-34.273426 Y:0.000003 Z:-100.362404 U:0.339913 V:0.007387 |
Vertex 17: X:-61.036736 Y:0.000005 Z:18.206682 U:0.202294 V:0.589365 |
Vertex 18: X:-41.646992 Y:0.000005 Z:18.206682 U:0.301997 V:0.589365 |
Vertex 19: X:-36.32164 Y:0.000006 Z:20.614178 U:0.32938 V:0.601182 |
Vertex 20: X:-34.54652 Y:0.000003 Z:35.661018 U:0.338508 V:0.675037 |
Vertex 21: X:-34.54652 Y:0 Z:45.59193 U:0.338508 V:0.723781 |
Vertex 22: X:-36.048542 Y:0.000002 Z:63.949074 U:0.330785 V:0.813884 |
Vertex 23: X:-42.602825 Y:0.000002 Z:67.259384 U:0.297082 V:0.830132 |
Vertex 24: X:-61.036736 Y:0.000002 Z:67.259384 U:0.202294 V:0.830132 |
Vertex 25: X:88.755875 Y:-0.000003 Z:100.362434 U:0.972539 V:0.992614 |
Vertex 26: X:92.03302 Y:-0.000006 Z:58.833149 U:0.98939 V:0.788773 |
Vertex 27: X:74.964577 Y:-0.000002 Z:67.259384 U:0.901623 V:0.830132 |
Vertex 28: X:55.984474 Y:-0.000002 Z:67.259384 U:0.804026 V:0.830132 |
Vertex 29: X:47.518528 Y:-0.000002 Z:63.046265 U:0.760493 V:0.809453 |
Vertex 30: X:45.743412 Y:-0 Z:41.679752 U:0.751365 V:0.704579 |
Vertex 31: X:45.743412 Y:-0.000004 Z:-43.184422 U:0.751365 V:0.288036 |
Vertex 32: X:48.747456 Y:-0.000002 Z:-63.046249 U:0.766812 V:0.190547 |
Vertex 33: X:57.759594 Y:-0.000002 Z:-67.259354 U:0.813154 V:0.169868 |
Vertex 34: X:75.783867 Y:-0.000002 Z:-67.259354 U:0.905836 V:0.169868 |
Vertex 35: X:93.125397 Y:-0.000009 Z:-60.939693 U:0.995007 V:0.200887 |
Vertex 36: X:90.394447 Y:-0.000005 Z:-100.362404 U:0.980964 V:0.007387 |
Vertex 37: X:34.546516 Y:-0.000001 Z:-100.362404 U:0.69379 V:0.007387 |
Vertex 38: X:16.795341 Y:-0.000004 Z:-84.111816 U:0.602512 V:0.08715 |
Vertex 39: X:11.196893 Y:0 Z:-42.883484 U:0.573724 V:0.289513 |
Vertex 40: X:11.196893 Y:-0 Z:42.883499 U:0.573724 V:0.710487 |
Vertex 41: X:16.795341 Y:-0 Z:84.111847 U:0.602512 V:0.91285 |
Vertex 42: X:34.546516 Y:-0.000003 Z:100.362434 U:0.69379 V:0.992614 |
Vertex 43: X:-50.249485 Y:100.000008 Z:-14.89638 U:0.257762 V:0.426883 |
Vertex 44: X:-61.036736 Y:100.000008 Z:-14.89638 U:0.202294 V:0.426883 |
Vertex 45: X:-61.036736 Y:100 Z:-70.569695 U:0.202294 V:0.153619 |
Vertex 46: X:-57.213406 Y:100.000008 Z:-100.362434 U:0.221953 V:0.007386 |
Vertex 47: X:-99.406586 Y:100.000008 Z:-100.362434 U:0.004993 V:0.007386 |
Vertex 48: X:-95.58326 Y:100 Z:-70.569695 U:0.024653 V:0.153619 |
Vertex 49: X:-95.58326 Y:100.000008 Z:70.569664 U:0.024653 V:0.84638 |
Vertex 50: X:-99.406586 Y:100 Z:100.362404 U:0.004993 V:0.992613 |
Vertex 51: X:-24.442005 Y:100 Z:100.362404 U:0.390466 V:0.992613 |
Vertex 52: X:-6.008092 Y:100 Z:90.431488 U:0.485255 V:0.943869 |
Vertex 53: X:-0.273097 Y:100.000008 Z:58.532196 U:0.514745 V:0.787296 |
Vertex 54: X:-0.273097 Y:100 Z:15.498236 U:0.514745 V:0.576071 |
Page 1 |
Vertex 55: X:-1.911667 Y:100 Z:-4.363592 U:0.506319 V:0.478582 |
Vertex 56: X:-13.654753 Y:100 Z:-15.197317 U:0.445935 V:0.425406 |
Vertex 57: X:0.819283 Y:100 Z:-82.607162 U:0.520362 V:0.094535 |
Vertex 58: X:5.734993 Y:100 Z:-100.362434 U:0.545639 V:0.007386 |
Vertex 59: X:-34.273426 Y:100 Z:-100.362434 U:0.339913 V:0.007386 |
Vertex 60: X:-61.036736 Y:100 Z:18.206667 U:0.202294 V:0.589365 |
Vertex 61: X:-41.646992 Y:100 Z:18.206667 U:0.301997 V:0.589365 |
Vertex 62: X:-36.32164 Y:100 Z:20.614162 U:0.32938 V:0.601181 |
Vertex 63: X:-34.54652 Y:99.999992 Z:35.661003 U:0.338508 V:0.675037 |
Vertex 64: X:-34.54652 Y:100.000008 Z:45.591915 U:0.338508 V:0.723781 |
Vertex 65: X:-36.048542 Y:100.000008 Z:63.949059 U:0.330785 V:0.813884 |
Vertex 66: X:-42.602825 Y:100.000008 Z:67.259354 U:0.297082 V:0.830132 |
Vertex 67: X:-61.036736 Y:100.000008 Z:67.259354 U:0.202294 V:0.830132 |
Vertex 68: X:88.755875 Y:99.999992 Z:100.362404 U:0.972539 V:0.992613 |
Vertex 69: X:92.03302 Y:100 Z:58.833134 U:0.98939 V:0.788773 |
Vertex 70: X:74.964577 Y:100 Z:67.259354 U:0.901623 V:0.830132 |
Vertex 71: X:55.984474 Y:100 Z:67.259354 U:0.804026 V:0.830132 |
Vertex 72: X:47.518528 Y:100 Z:63.046249 U:0.760493 V:0.809453 |
Vertex 73: X:45.743412 Y:99.999992 Z:41.679737 U:0.751365 V:0.704579 |
Vertex 74: X:45.743412 Y:100.000008 Z:-43.184437 U:0.751365 V:0.288036 |
Vertex 75: X:48.747456 Y:99.999992 Z:-63.046265 U:0.766812 V:0.190547 |
Vertex 76: X:57.759594 Y:99.999992 Z:-67.259384 U:0.813154 V:0.169868 |
Vertex 77: X:75.783867 Y:99.999992 Z:-67.259384 U:0.905836 V:0.169868 |
Vertex 78: X:93.125397 Y:99.999992 Z:-60.939709 U:0.995007 V:0.200887 |
Vertex 79: X:90.394447 Y:100 Z:-100.362434 U:0.980964 V:0.007386 |
Vertex 80: X:34.546516 Y:100 Z:-100.362434 U:0.69379 V:0.007386 |
Vertex 81: X:16.795341 Y:100 Z:-84.111847 U:0.602512 V:0.08715 |
Vertex 82: X:11.196893 Y:100.000008 Z:-42.883499 U:0.573724 V:0.289513 |
Vertex 83: X:11.196893 Y:99.999992 Z:42.883484 U:0.573724 V:0.710487 |
Vertex 84: X:16.795341 Y:100 Z:84.111816 U:0.602512 V:0.91285 |
Vertex 85: X:34.546516 Y:100 Z:100.362404 U:0.69379 V:0.992613 |
Face list: |
Face 0: A:1 B:0 C:17 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 1: A:18 B:17 C:0 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 2: A:16 B:15 C:14 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 3: A:0 B:16 C:14 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 4: A:0 B:14 C:13 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 5: A:18 B:0 C:13 AB:0 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 6: A:19 B:18 C:13 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 7: A:19 B:13 C:12 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 8: A:19 B:12 C:11 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 9: A:19 B:11 C:10 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Page 2 |
Smoothing: 17 |
Face 10: A:20 B:19 C:10 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 11: A:21 B:20 C:10 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 12: A:22 B:21 C:10 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 13: A:22 B:10 C:9 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 14: A:22 B:9 C:8 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 15: A:22 B:8 C:7 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 16: A:23 B:22 C:7 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 17: A:24 B:23 C:7 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 18: A:24 B:7 C:6 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 19: A:4 B:3 C:2 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 20: A:5 B:4 C:2 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 21: A:24 B:6 C:5 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 22: A:17 B:24 C:5 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 23: A:1 B:17 C:5 AB:0 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 24: A:2 B:1 C:5 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 25: A:27 B:26 C:25 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 26: A:36 B:35 C:34 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 27: A:37 B:36 C:34 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 28: A:37 B:34 C:33 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 29: A:27 B:25 C:42 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Page 3 |
Face 30: A:28 B:27 C:42 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 31: A:37 B:33 C:32 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 32: A:38 B:37 C:32 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 33: A:39 B:38 C:32 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 34: A:39 B:32 C:31 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 35: A:28 B:42 C:41 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 36: A:29 B:28 C:41 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 37: A:29 B:41 C:40 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 38: A:30 B:29 C:40 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 39: A:30 B:40 C:39 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 40: A:31 B:30 C:39 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 41: A:0 B:1 C:44 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 42: A:0 B:44 C:43 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 43: A:1 B:2 C:45 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 44: A:1 B:45 C:44 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 45: A:2 B:3 C:46 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 46: A:2 B:46 C:45 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 47: A:3 B:4 C:47 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 48: A:3 B:47 C:46 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 49: A:4 B:5 C:48 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 50: A:4 B:48 C:47 AB:0 BC:1 CA:1 |
Page 4 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 51: A:5 B:6 C:49 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 52: A:5 B:49 C:48 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 53: A:6 B:7 C:50 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 54: A:6 B:50 C:49 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 55: A:7 B:8 C:51 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 56: A:7 B:51 C:50 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 57: A:8 B:9 C:52 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 58: A:8 B:52 C:51 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 59: A:9 B:10 C:53 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 60: A:9 B:53 C:52 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 61: A:10 B:11 C:54 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 62: A:10 B:54 C:53 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 63: A:11 B:12 C:55 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 64: A:11 B:55 C:54 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 65: A:12 B:13 C:56 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 66: A:12 B:56 C:55 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 67: A:13 B:14 C:57 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 68: A:13 B:57 C:56 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 69: A:14 B:15 C:58 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 70: A:14 B:58 C:57 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Page 5 |
Smoothing: 1, 10 |
Face 71: A:15 B:16 C:59 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 72: A:15 B:59 C:58 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 73: A:16 B:0 C:43 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 3, 12 |
Face 74: A:16 B:43 C:59 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 3, 12 |
Face 75: A:17 B:18 C:61 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 76: A:17 B:61 C:60 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 77: A:18 B:19 C:62 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 78: A:18 B:62 C:61 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 79: A:19 B:20 C:63 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 80: A:19 B:63 C:62 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 81: A:20 B:21 C:64 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 82: A:20 B:64 C:63 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 83: A:21 B:22 C:65 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 84: A:21 B:65 C:64 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 85: A:22 B:23 C:66 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 86: A:22 B:66 C:65 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 87: A:23 B:24 C:67 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 88: A:23 B:67 C:66 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 89: A:24 B:17 C:60 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 3, 12 |
Face 90: A:24 B:60 C:67 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 3, 12 |
Page 6 |
Face 91: A:25 B:26 C:69 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 92: A:25 B:69 C:68 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 93: A:26 B:27 C:70 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 94: A:26 B:70 C:69 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 95: A:27 B:28 C:71 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 96: A:27 B:71 C:70 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 97: A:28 B:29 C:72 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 98: A:28 B:72 C:71 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 99: A:29 B:30 C:73 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 100: A:29 B:73 C:72 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 101: A:30 B:31 C:74 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 102: A:30 B:74 C:73 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 103: A:31 B:32 C:75 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 104: A:31 B:75 C:74 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 105: A:32 B:33 C:76 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 106: A:32 B:76 C:75 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 107: A:33 B:34 C:77 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 108: A:33 B:77 C:76 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 109: A:34 B:35 C:78 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 110: A:34 B:78 C:77 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 111: A:35 B:36 C:79 AB:1 BC:1 CA:0 |
Page 7 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 112: A:35 B:79 C:78 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 113: A:36 B:37 C:80 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 114: A:36 B:80 C:79 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 115: A:37 B:38 C:81 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 116: A:37 B:81 C:80 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 117: A:38 B:39 C:82 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 118: A:38 B:82 C:81 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 119: A:39 B:40 C:83 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 120: A:39 B:83 C:82 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 121: A:40 B:41 C:84 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 122: A:40 B:84 C:83 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 2, 11 |
Face 123: A:41 B:42 C:85 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 124: A:41 B:85 C:84 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 1, 10 |
Face 125: A:42 B:25 C:68 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 3, 12 |
Face 126: A:42 B:68 C:85 AB:0 BC:1 CA:1 |
Material:"AMOEBA PATTERN" |
Smoothing: 3, 12 |
Face 127: A:60 B:43 C:44 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 128: A:43 B:60 C:61 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 129: A:57 B:58 C:59 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 130: A:57 B:59 C:43 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 131: A:56 B:57 C:43 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Page 8 |
Smoothing: 17 |
Face 132: A:56 B:43 C:61 AB:0 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 133: A:56 B:61 C:62 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 134: A:55 B:56 C:62 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 135: A:54 B:55 C:62 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 136: A:53 B:54 C:62 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 137: A:53 B:62 C:63 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 138: A:53 B:63 C:64 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 139: A:53 B:64 C:65 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 140: A:52 B:53 C:65 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 141: A:51 B:52 C:65 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 142: A:50 B:51 C:65 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 143: A:50 B:65 C:66 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 144: A:50 B:66 C:67 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 145: A:49 B:50 C:67 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 146: A:45 B:46 C:47 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 147: A:45 B:47 C:48 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 148: A:48 B:49 C:67 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 149: A:48 B:67 C:60 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 150: A:48 B:60 C:44 AB:0 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 151: A:48 B:44 C:45 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Page 9 |
Face 152: A:68 B:69 C:70 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 153: A:77 B:78 C:79 AB:1 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 154: A:77 B:79 C:80 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 155: A:76 B:77 C:80 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 156: A:85 B:68 C:70 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 157: A:85 B:70 C:71 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 158: A:75 B:76 C:80 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 159: A:75 B:80 C:81 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 160: A:75 B:81 C:82 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 161: A:74 B:75 C:82 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 162: A:84 B:85 C:71 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 163: A:84 B:71 C:72 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 164: A:83 B:84 C:72 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 165: A:83 B:72 C:73 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 166: A:82 B:83 C:73 AB:1 BC:0 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Face 167: A:82 B:73 C:74 AB:0 BC:1 CA:0 |
Material:"AMOEBA PATTERN" |
Smoothing: 17 |
Page 10 |
/programs/demos/view3ds/asc_objects/PALLERO.ASC |
---|
0,0 → 1,462 |
Ambient light color: Red=0.039216 Green=0.039216 Blue=0.039216 |
Named object: "Object01" |
Tri-mesh, Vertices: 130 Faces: 256 |
Vertex list: |
Vertex 0: X: 0 Y: 0.00003 Z: 200.692032 |
Vertex 1: X: -94.60714 Y: -163.86438 Z: -66.897331 |
Vertex 2: X: 189.214264 Y: -0.00001 Z: -66.897346 |
Vertex 3: X: -94.60714 Y: 163.864365 Z: -66.897369 |
Vertex 4: X: -23.738377 Y: -41.116043 Z: 194.995529 |
Vertex 5: X: -46.129154 Y: -79.89801 Z: 178.229355 |
Vertex 6: X: -65.901245 Y: -114.144272 Z: 151.345322 |
Vertex 7: X: -81.93219 Y: -141.91069 Z: 115.869629 |
Vertex 8: X: -93.311951 Y: -161.621033 Z: 73.816139 |
Vertex 9: X: -99.394508 Y: -172.156342 Z: 27.572216 |
Vertex 10: X: -99.834572 Y: -172.918549 Z: -20.236956 |
Vertex 11: X: 47.476753 Y: 0.000029 Z: 194.995514 |
Vertex 12: X: 92.258308 Y: 0.000026 Z: 178.22934 |
Vertex 13: X: 131.80249 Y: 0.000022 Z: 151.345306 |
Vertex 14: X: 163.86438 Y: 0.000017 Z: 115.869606 |
Vertex 15: X: 186.623901 Y: 0.000011 Z: 73.816116 |
Vertex 16: X: 198.789001 Y: 0.000004 Z: 27.572191 |
Vertex 17: X: 199.669128 Y: -0.000003 Z: -20.23698 |
Vertex 18: X: -23.738377 Y: 41.116104 Z: 194.995514 |
Vertex 19: X: -46.129154 Y: 79.898064 Z: 178.22934 |
Vertex 20: X: -65.901245 Y: 114.144318 Z: 151.345291 |
Vertex 21: X: -81.93219 Y: 141.910721 Z: 115.869591 |
Vertex 22: X: -93.311951 Y: 161.621048 Z: 73.816101 |
Vertex 23: X: -99.394508 Y: 172.156357 Z: 27.572166 |
Vertex 24: X: -99.834572 Y: 172.918533 Z: -20.237007 |
Vertex 25: X: -52.357815 Y: -172.918549 Z: -87.379234 |
Vertex 26: X: -7.136202 Y: -172.156357 Z: -102.900742 |
Vertex 27: X: 38.490532 Y: -161.621048 Z: -112.580704 |
Vertex 28: X: 81.93219 Y: -141.910721 Z: -115.869591 |
Vertex 29: X: 120.722664 Y: -114.14431 Z: -112.580711 |
Vertex 30: X: 152.659851 Y: -79.898056 Z: -102.900757 |
Vertex 31: X: 175.930756 Y: -41.1161 Z: -87.379265 |
Vertex 32: X: 175.930756 Y: 41.116062 Z: -87.379265 |
Vertex 33: X: 152.659851 Y: 79.898026 Z: -102.90078 |
Vertex 34: X: 120.722664 Y: 114.144279 Z: -112.580742 |
Vertex 35: X: 81.93219 Y: 141.91069 Z: -115.869629 |
Vertex 36: X: 38.490532 Y: 161.621017 Z: -112.58075 |
Vertex 37: X: -7.13619 Y: 172.156326 Z: -102.900787 |
Vertex 38: X: -52.357796 Y: 172.918533 Z: -87.379288 |
Vertex 39: X: -123.572952 Y: 131.80246 Z: -87.37928 |
Vertex 40: X: -145.523682 Y: 92.258286 Z: -102.90078 |
Vertex 41: X: -159.213196 Y: 47.476727 Z: -112.580734 |
Vertex 42: X: -163.86438 Y: -0.000017 Z: -115.869606 |
Vertex 43: X: -159.213196 Y: -47.476757 Z: -112.580719 |
Vertex 44: X: -145.523682 Y: -92.258308 Z: -102.900757 |
Vertex 45: X: -123.572952 Y: -131.80246 Z: -87.37925 |
Vertex 46: X: 25.142982 Y: -43.548893 Z: 194.290039 |
Vertex 47: X: 4.436438 Y: -88.080978 Z: 180.275772 |
Vertex 48: X: 74.062164 Y: -47.882549 Z: 180.275772 |
Vertex 49: X: -12.987289 Y: -131.108368 Z: 151.390976 |
Vertex 50: X: 57.934807 Y: -100.346008 Z: 163.864395 |
Vertex 51: X: 120.036842 Y: -54.306858 Z: 151.390961 |
Vertex 52: X: -25.971127 Y: -168.813553 Z: 105.379234 |
Vertex 53: X: 44.969498 Y: -152.607208 Z: 122.335945 |
Vertex 54: X: 109.67701 Y: -115.248314 Z: 122.335938 |
Vertex 55: X: 159.182404 Y: -61.915108 Z: 105.379219 |
Page 1 |
Vertex 56: X: -35.535969 Y: -193.119415 Z: 41.465549 |
Vertex 57: X: 32.47847 Y: -191.49736 Z: 50.509529 |
Vertex 58: X: 96.694572 Y: -167.479904 Z: 53.646473 |
Vertex 59: X: 149.602356 Y: -123.875839 Z: 50.509518 |
Vertex 60: X: 185.014313 Y: -65.784615 Z: 41.465527 |
Vertex 61: X: -44.907486 Y: -193.381699 Z: -29.396215 |
Vertex 62: X: 13.943819 Y: -196.946274 Z: -35.986694 |
Vertex 63: X: 71.576653 Y: -183.300751 Z: -39.432495 |
Vertex 64: X: 122.954781 Y: -153.637573 Z: -39.432499 |
Vertex 65: X: 163.588531 Y: -110.548843 Z: -35.986713 |
Vertex 66: X: 189.927216 Y: -57.799828 Z: -29.396236 |
Vertex 67: X: 25.142982 Y: 43.548954 Z: 194.290024 |
Vertex 68: X: 74.062172 Y: 47.882603 Z: 180.275757 |
Vertex 69: X: 4.436449 Y: 88.081017 Z: 180.275757 |
Vertex 70: X: 120.036858 Y: 54.306904 Z: 151.390945 |
Vertex 71: X: 57.934807 Y: 100.346054 Z: 163.864365 |
Vertex 72: X: -12.987283 Y: 131.108414 Z: 151.39093 |
Vertex 73: X: 159.182404 Y: 61.915146 Z: 105.379204 |
Vertex 74: X: 109.676987 Y: 115.24836 Z: 122.335907 |
Vertex 75: X: 44.969475 Y: 152.607254 Z: 122.335899 |
Vertex 76: X: -25.971138 Y: 168.813583 Z: 105.379189 |
Vertex 77: X: 185.014282 Y: 65.78466 Z: 41.465511 |
Vertex 78: X: 149.602356 Y: 123.87587 Z: 50.509483 |
Vertex 79: X: 96.694572 Y: 167.479919 Z: 53.64642 |
Vertex 80: X: 32.478443 Y: 191.497391 Z: 50.509468 |
Vertex 81: X: -35.536003 Y: 193.119415 Z: 41.465488 |
Vertex 82: X: 189.927216 Y: 57.79982 Z: -29.396252 |
Vertex 83: X: 163.588531 Y: 110.548828 Z: -35.98674 |
Vertex 84: X: 122.954781 Y: 153.637558 Z: -39.432549 |
Vertex 85: X: 71.576653 Y: 183.300735 Z: -39.432552 |
Vertex 86: X: 13.943819 Y: 196.946259 Z: -35.986755 |
Vertex 87: X: -44.907486 Y: 193.381683 Z: -29.396273 |
Vertex 88: X: -50.285965 Y: 0.000029 Z: 194.290024 |
Vertex 89: X: -78.498611 Y: 40.198463 Z: 180.275757 |
Vertex 90: X: -78.498611 Y: -40.198395 Z: 180.275772 |
Vertex 91: X: -107.049568 Y: 76.801544 Z: 151.390945 |
Vertex 92: X: -115.869614 Y: 0.000024 Z: 163.86438 |
Vertex 93: X: -107.049568 Y: -76.801498 Z: 151.390961 |
Vertex 94: X: -133.211304 Y: 106.89846 Z: 105.379204 |
Vertex 95: X: -154.646515 Y: 37.358913 Z: 122.335922 |
Vertex 96: X: -154.646515 Y: -37.358879 Z: 122.335938 |
Vertex 97: X: -133.211304 Y: -106.89843 Z: 105.379234 |
Vertex 98: X: -149.478363 Y: 127.334778 Z: 41.465508 |
Vertex 99: X: -182.080841 Y: 67.621529 Z: 50.509502 |
Vertex 100: X: -193.389191 Y: 0.000032 Z: 53.646461 |
Vertex 101: X: -182.080841 Y: -67.621498 Z: 50.509521 |
Vertex 102: X: -149.478363 Y: -127.334755 Z: 41.465546 |
Vertex 103: X: -145.019745 Y: 135.581863 Z: -29.396265 |
Vertex 104: X: -177.532379 Y: 86.397423 Z: -35.986736 |
Vertex 105: X: -194.531433 Y: 29.66317 Z: -39.432526 |
Vertex 106: X: -194.531433 Y: -29.663181 Z: -39.432518 |
Vertex 107: X: -177.532379 Y: -86.39743 Z: -35.986713 |
Vertex 108: X: -145.019745 Y: -135.581879 Z: -29.396225 |
Vertex 109: X: -83.208214 Y: -144.12085 Z: -112.173386 |
Vertex 110: X: -106.712585 Y: -104.434761 Z: -134.10112 |
Vertex 111: X: -37.086857 Y: -144.633194 Z: -134.101105 |
Vertex 112: X: -120.036858 Y: -54.306904 Z: -151.390945 |
Vertex 113: X: -57.934807 Y: -100.346054 Z: -163.864365 |
Vertex 114: X: 12.987283 Y: -131.108414 Z: -151.39093 |
Vertex 115: X: -120.05114 Y: 5.86221 Z: -160.719208 |
Vertex 116: X: -64.249054 Y: -36.564857 Z: -186.58075 |
Page 2 |
Vertex 117: X: 0.458444 Y: -73.923752 Z: -186.58075 |
Vertex 118: X: 65.102394 Y: -101.036232 Z: -160.719193 |
Vertex 119: X: -104.909103 Y: 72.961594 Z: -154.751358 |
Vertex 120: X: -52.025539 Y: 45.132103 Z: -188.503937 |
Vertex 121: X: 6.942347 Y: 12.024473 Z: -200.211166 |
Vertex 122: X: 65.098351 Y: -22.489416 Z: -188.503922 |
Vertex 123: X: 115.641174 Y: -54.373196 Z: -154.751328 |
Vertex 124: X: -79.38987 Y: 133.656448 Z: -126.927155 |
Vertex 125: X: -28.269325 Y: 123.830917 Z: -155.383545 |
Vertex 126: X: 25.321518 Y: 103.184486 Z: -170.26181 |
Vertex 127: X: 76.699654 Y: 73.521301 Z: -170.26181 |
Vertex 128: X: 121.375412 Y: 37.433491 Z: -155.383545 |
Vertex 129: X: 155.444824 Y: -1.925431 Z: -126.927147 |
Face list: |
Face 0: A:0 B:4 C:11 AB:1 BC:1 CA:1 |
Face 1: A:4 B:5 C:46 AB:1 BC:1 CA:1 |
Face 2: A:4 B:46 C:11 AB:1 BC:1 CA:1 |
Face 3: A:11 B:46 C:12 AB:1 BC:1 CA:1 |
Face 4: A:5 B:6 C:47 AB:1 BC:1 CA:1 |
Face 5: A:5 B:47 C:46 AB:1 BC:1 CA:1 |
Face 6: A:46 B:47 C:48 AB:1 BC:1 CA:1 |
Face 7: A:46 B:48 C:12 AB:1 BC:1 CA:1 |
Face 8: A:12 B:48 C:13 AB:1 BC:1 CA:1 |
Face 9: A:6 B:7 C:49 AB:1 BC:1 CA:1 |
Face 10: A:6 B:49 C:47 AB:1 BC:1 CA:1 |
Face 11: A:47 B:49 C:50 AB:1 BC:1 CA:1 |
Face 12: A:47 B:50 C:48 AB:1 BC:1 CA:1 |
Face 13: A:48 B:50 C:51 AB:1 BC:1 CA:1 |
Face 14: A:48 B:51 C:13 AB:1 BC:1 CA:1 |
Face 15: A:13 B:51 C:14 AB:1 BC:1 CA:1 |
Face 16: A:7 B:8 C:52 AB:1 BC:1 CA:1 |
Face 17: A:7 B:52 C:49 AB:1 BC:1 CA:1 |
Face 18: A:49 B:52 C:53 AB:1 BC:1 CA:1 |
Face 19: A:49 B:53 C:50 AB:1 BC:1 CA:1 |
Face 20: A:50 B:53 C:54 AB:1 BC:1 CA:1 |
Face 21: A:50 B:54 C:51 AB:1 BC:1 CA:1 |
Face 22: A:51 B:54 C:55 AB:1 BC:1 CA:1 |
Face 23: A:51 B:55 C:14 AB:1 BC:1 CA:1 |
Face 24: A:14 B:55 C:15 AB:1 BC:1 CA:1 |
Face 25: A:8 B:9 C:56 AB:1 BC:1 CA:1 |
Face 26: A:8 B:56 C:52 AB:1 BC:1 CA:1 |
Face 27: A:52 B:56 C:57 AB:1 BC:1 CA:1 |
Face 28: A:52 B:57 C:53 AB:1 BC:1 CA:1 |
Face 29: A:53 B:57 C:58 AB:1 BC:1 CA:1 |
Face 30: A:53 B:58 C:54 AB:1 BC:1 CA:1 |
Face 31: A:54 B:58 C:59 AB:1 BC:1 CA:1 |
Face 32: A:54 B:59 C:55 AB:1 BC:1 CA:1 |
Face 33: A:55 B:59 C:60 AB:1 BC:1 CA:1 |
Face 34: A:55 B:60 C:15 AB:1 BC:1 CA:1 |
Face 35: A:15 B:60 C:16 AB:1 BC:1 CA:1 |
Face 36: A:9 B:10 C:61 AB:1 BC:1 CA:1 |
Face 37: A:9 B:61 C:56 AB:1 BC:1 CA:1 |
Face 38: A:56 B:61 C:62 AB:1 BC:1 CA:1 |
Face 39: A:56 B:62 C:57 AB:1 BC:1 CA:1 |
Face 40: A:57 B:62 C:63 AB:1 BC:1 CA:1 |
Face 41: A:57 B:63 C:58 AB:1 BC:1 CA:1 |
Face 42: A:58 B:63 C:64 AB:1 BC:1 CA:1 |
Face 43: A:58 B:64 C:59 AB:1 BC:1 CA:1 |
Face 44: A:59 B:64 C:65 AB:1 BC:1 CA:1 |
Face 45: A:59 B:65 C:60 AB:1 BC:1 CA:1 |
Face 46: A:60 B:65 C:66 AB:1 BC:1 CA:1 |
Page 3 |
Face 47: A:60 B:66 C:16 AB:1 BC:1 CA:1 |
Face 48: A:16 B:66 C:17 AB:1 BC:1 CA:1 |
Face 49: A:10 B:1 C:25 AB:1 BC:1 CA:1 |
Face 50: A:10 B:25 C:61 AB:1 BC:1 CA:1 |
Face 51: A:61 B:25 C:26 AB:1 BC:1 CA:1 |
Face 52: A:61 B:26 C:62 AB:1 BC:1 CA:1 |
Face 53: A:62 B:26 C:27 AB:1 BC:1 CA:1 |
Face 54: A:62 B:27 C:63 AB:1 BC:1 CA:1 |
Face 55: A:63 B:27 C:28 AB:1 BC:1 CA:1 |
Face 56: A:63 B:28 C:64 AB:1 BC:1 CA:1 |
Face 57: A:64 B:28 C:29 AB:1 BC:1 CA:1 |
Face 58: A:64 B:29 C:65 AB:1 BC:1 CA:1 |
Face 59: A:65 B:29 C:30 AB:1 BC:1 CA:1 |
Face 60: A:65 B:30 C:66 AB:1 BC:1 CA:1 |
Face 61: A:66 B:30 C:31 AB:1 BC:1 CA:1 |
Face 62: A:66 B:31 C:17 AB:1 BC:1 CA:1 |
Face 63: A:17 B:31 C:2 AB:1 BC:1 CA:1 |
Face 64: A:0 B:11 C:18 AB:1 BC:1 CA:1 |
Face 65: A:11 B:12 C:67 AB:1 BC:1 CA:1 |
Face 66: A:11 B:67 C:18 AB:1 BC:1 CA:1 |
Face 67: A:18 B:67 C:19 AB:1 BC:1 CA:1 |
Face 68: A:12 B:13 C:68 AB:1 BC:1 CA:1 |
Face 69: A:12 B:68 C:67 AB:1 BC:1 CA:1 |
Face 70: A:67 B:68 C:69 AB:1 BC:1 CA:1 |
Face 71: A:67 B:69 C:19 AB:1 BC:1 CA:1 |
Face 72: A:19 B:69 C:20 AB:1 BC:1 CA:1 |
Face 73: A:13 B:14 C:70 AB:1 BC:1 CA:1 |
Face 74: A:13 B:70 C:68 AB:1 BC:1 CA:1 |
Face 75: A:68 B:70 C:71 AB:1 BC:1 CA:1 |
Face 76: A:68 B:71 C:69 AB:1 BC:1 CA:1 |
Face 77: A:69 B:71 C:72 AB:1 BC:1 CA:1 |
Face 78: A:69 B:72 C:20 AB:1 BC:1 CA:1 |
Face 79: A:20 B:72 C:21 AB:1 BC:1 CA:1 |
Face 80: A:14 B:15 C:73 AB:1 BC:1 CA:1 |
Face 81: A:14 B:73 C:70 AB:1 BC:1 CA:1 |
Face 82: A:70 B:73 C:74 AB:1 BC:1 CA:1 |
Face 83: A:70 B:74 C:71 AB:1 BC:1 CA:1 |
Face 84: A:71 B:74 C:75 AB:1 BC:1 CA:1 |
Face 85: A:71 B:75 C:72 AB:1 BC:1 CA:1 |
Face 86: A:72 B:75 C:76 AB:1 BC:1 CA:1 |
Face 87: A:72 B:76 C:21 AB:1 BC:1 CA:1 |
Face 88: A:21 B:76 C:22 AB:1 BC:1 CA:1 |
Face 89: A:15 B:16 C:77 AB:1 BC:1 CA:1 |
Face 90: A:15 B:77 C:73 AB:1 BC:1 CA:1 |
Face 91: A:73 B:77 C:78 AB:1 BC:1 CA:1 |
Face 92: A:73 B:78 C:74 AB:1 BC:1 CA:1 |
Face 93: A:74 B:78 C:79 AB:1 BC:1 CA:1 |
Face 94: A:74 B:79 C:75 AB:1 BC:1 CA:1 |
Face 95: A:75 B:79 C:80 AB:1 BC:1 CA:1 |
Face 96: A:75 B:80 C:76 AB:1 BC:1 CA:1 |
Face 97: A:76 B:80 C:81 AB:1 BC:1 CA:1 |
Face 98: A:76 B:81 C:22 AB:1 BC:1 CA:1 |
Face 99: A:22 B:81 C:23 AB:1 BC:1 CA:1 |
Face 100: A:16 B:17 C:82 AB:1 BC:1 CA:1 |
Face 101: A:16 B:82 C:77 AB:1 BC:1 CA:1 |
Face 102: A:77 B:82 C:83 AB:1 BC:1 CA:1 |
Face 103: A:77 B:83 C:78 AB:1 BC:1 CA:1 |
Face 104: A:78 B:83 C:84 AB:1 BC:1 CA:1 |
Face 105: A:78 B:84 C:79 AB:1 BC:1 CA:1 |
Face 106: A:79 B:84 C:85 AB:1 BC:1 CA:1 |
Face 107: A:79 B:85 C:80 AB:1 BC:1 CA:1 |
Page 4 |
Face 108: A:80 B:85 C:86 AB:1 BC:1 CA:1 |
Face 109: A:80 B:86 C:81 AB:1 BC:1 CA:1 |
Face 110: A:81 B:86 C:87 AB:1 BC:1 CA:1 |
Face 111: A:81 B:87 C:23 AB:1 BC:1 CA:1 |
Face 112: A:23 B:87 C:24 AB:1 BC:1 CA:1 |
Face 113: A:17 B:2 C:32 AB:1 BC:1 CA:1 |
Face 114: A:17 B:32 C:82 AB:1 BC:1 CA:1 |
Face 115: A:82 B:32 C:33 AB:1 BC:1 CA:1 |
Face 116: A:82 B:33 C:83 AB:1 BC:1 CA:1 |
Face 117: A:83 B:33 C:34 AB:1 BC:1 CA:1 |
Face 118: A:83 B:34 C:84 AB:1 BC:1 CA:1 |
Face 119: A:84 B:34 C:35 AB:1 BC:1 CA:1 |
Face 120: A:84 B:35 C:85 AB:1 BC:1 CA:1 |
Face 121: A:85 B:35 C:36 AB:1 BC:1 CA:1 |
Face 122: A:85 B:36 C:86 AB:1 BC:1 CA:1 |
Face 123: A:86 B:36 C:37 AB:1 BC:1 CA:1 |
Face 124: A:86 B:37 C:87 AB:1 BC:1 CA:1 |
Face 125: A:87 B:37 C:38 AB:1 BC:1 CA:1 |
Face 126: A:87 B:38 C:24 AB:1 BC:1 CA:1 |
Face 127: A:24 B:38 C:3 AB:1 BC:1 CA:1 |
Face 128: A:0 B:18 C:4 AB:1 BC:1 CA:1 |
Face 129: A:18 B:19 C:88 AB:1 BC:1 CA:1 |
Face 130: A:18 B:88 C:4 AB:1 BC:1 CA:1 |
Face 131: A:4 B:88 C:5 AB:1 BC:1 CA:1 |
Face 132: A:19 B:20 C:89 AB:1 BC:1 CA:1 |
Face 133: A:19 B:89 C:88 AB:1 BC:1 CA:1 |
Face 134: A:88 B:89 C:90 AB:1 BC:1 CA:1 |
Face 135: A:88 B:90 C:5 AB:1 BC:1 CA:1 |
Face 136: A:5 B:90 C:6 AB:1 BC:1 CA:1 |
Face 137: A:20 B:21 C:91 AB:1 BC:1 CA:1 |
Face 138: A:20 B:91 C:89 AB:1 BC:1 CA:1 |
Face 139: A:89 B:91 C:92 AB:1 BC:1 CA:1 |
Face 140: A:89 B:92 C:90 AB:1 BC:1 CA:1 |
Face 141: A:90 B:92 C:93 AB:1 BC:1 CA:1 |
Face 142: A:90 B:93 C:6 AB:1 BC:1 CA:1 |
Face 143: A:6 B:93 C:7 AB:1 BC:1 CA:1 |
Face 144: A:21 B:22 C:94 AB:1 BC:1 CA:1 |
Face 145: A:21 B:94 C:91 AB:1 BC:1 CA:1 |
Face 146: A:91 B:94 C:95 AB:1 BC:1 CA:1 |
Face 147: A:91 B:95 C:92 AB:1 BC:1 CA:1 |
Face 148: A:92 B:95 C:96 AB:1 BC:1 CA:1 |
Face 149: A:92 B:96 C:93 AB:1 BC:1 CA:1 |
Face 150: A:93 B:96 C:97 AB:1 BC:1 CA:1 |
Face 151: A:93 B:97 C:7 AB:1 BC:1 CA:1 |
Face 152: A:7 B:97 C:8 AB:1 BC:1 CA:1 |
Face 153: A:22 B:23 C:98 AB:1 BC:1 CA:1 |
Face 154: A:22 B:98 C:94 AB:1 BC:1 CA:1 |
Face 155: A:94 B:98 C:99 AB:1 BC:1 CA:1 |
Face 156: A:94 B:99 C:95 AB:1 BC:1 CA:1 |
Face 157: A:95 B:99 C:100 AB:1 BC:1 CA:1 |
Face 158: A:95 B:100 C:96 AB:1 BC:1 CA:1 |
Face 159: A:96 B:100 C:101 AB:1 BC:1 CA:1 |
Face 160: A:96 B:101 C:97 AB:1 BC:1 CA:1 |
Face 161: A:97 B:101 C:102 AB:1 BC:1 CA:1 |
Face 162: A:97 B:102 C:8 AB:1 BC:1 CA:1 |
Face 163: A:8 B:102 C:9 AB:1 BC:1 CA:1 |
Face 164: A:23 B:24 C:103 AB:1 BC:1 CA:1 |
Face 165: A:23 B:103 C:98 AB:1 BC:1 CA:1 |
Face 166: A:98 B:103 C:104 AB:1 BC:1 CA:1 |
Face 167: A:98 B:104 C:99 AB:1 BC:1 CA:1 |
Face 168: A:99 B:104 C:105 AB:1 BC:1 CA:1 |
Page 5 |
Face 169: A:99 B:105 C:100 AB:1 BC:1 CA:1 |
Face 170: A:100 B:105 C:106 AB:1 BC:1 CA:1 |
Face 171: A:100 B:106 C:101 AB:1 BC:1 CA:1 |
Face 172: A:101 B:106 C:107 AB:1 BC:1 CA:1 |
Face 173: A:101 B:107 C:102 AB:1 BC:1 CA:1 |
Face 174: A:102 B:107 C:108 AB:1 BC:1 CA:1 |
Face 175: A:102 B:108 C:9 AB:1 BC:1 CA:1 |
Face 176: A:9 B:108 C:10 AB:1 BC:1 CA:1 |
Face 177: A:24 B:3 C:39 AB:1 BC:1 CA:1 |
Face 178: A:24 B:39 C:103 AB:1 BC:1 CA:1 |
Face 179: A:103 B:39 C:40 AB:1 BC:1 CA:1 |
Face 180: A:103 B:40 C:104 AB:1 BC:1 CA:1 |
Face 181: A:104 B:40 C:41 AB:1 BC:1 CA:1 |
Face 182: A:104 B:41 C:105 AB:1 BC:1 CA:1 |
Face 183: A:105 B:41 C:42 AB:1 BC:1 CA:1 |
Face 184: A:105 B:42 C:106 AB:1 BC:1 CA:1 |
Face 185: A:106 B:42 C:43 AB:1 BC:1 CA:1 |
Face 186: A:106 B:43 C:107 AB:1 BC:1 CA:1 |
Face 187: A:107 B:43 C:44 AB:1 BC:1 CA:1 |
Face 188: A:107 B:44 C:108 AB:1 BC:1 CA:1 |
Face 189: A:108 B:44 C:45 AB:1 BC:1 CA:1 |
Face 190: A:108 B:45 C:10 AB:1 BC:1 CA:1 |
Face 191: A:10 B:45 C:1 AB:1 BC:1 CA:1 |
Face 192: A:1 B:45 C:25 AB:1 BC:1 CA:1 |
Face 193: A:45 B:44 C:109 AB:1 BC:1 CA:1 |
Face 194: A:45 B:109 C:25 AB:1 BC:1 CA:1 |
Face 195: A:25 B:109 C:26 AB:1 BC:1 CA:1 |
Face 196: A:44 B:43 C:110 AB:1 BC:1 CA:1 |
Face 197: A:44 B:110 C:109 AB:1 BC:1 CA:1 |
Face 198: A:109 B:110 C:111 AB:1 BC:1 CA:1 |
Face 199: A:109 B:111 C:26 AB:1 BC:1 CA:1 |
Face 200: A:26 B:111 C:27 AB:1 BC:1 CA:1 |
Face 201: A:43 B:42 C:112 AB:1 BC:1 CA:1 |
Face 202: A:43 B:112 C:110 AB:1 BC:1 CA:1 |
Face 203: A:110 B:112 C:113 AB:1 BC:1 CA:1 |
Face 204: A:110 B:113 C:111 AB:1 BC:1 CA:1 |
Face 205: A:111 B:113 C:114 AB:1 BC:1 CA:1 |
Face 206: A:111 B:114 C:27 AB:1 BC:1 CA:1 |
Face 207: A:27 B:114 C:28 AB:1 BC:1 CA:1 |
Face 208: A:42 B:41 C:115 AB:1 BC:1 CA:1 |
Face 209: A:42 B:115 C:112 AB:1 BC:1 CA:1 |
Face 210: A:112 B:115 C:116 AB:1 BC:1 CA:1 |
Face 211: A:112 B:116 C:113 AB:1 BC:1 CA:1 |
Face 212: A:113 B:116 C:117 AB:1 BC:1 CA:1 |
Face 213: A:113 B:117 C:114 AB:1 BC:1 CA:1 |
Face 214: A:114 B:117 C:118 AB:1 BC:1 CA:1 |
Face 215: A:114 B:118 C:28 AB:1 BC:1 CA:1 |
Face 216: A:28 B:118 C:29 AB:1 BC:1 CA:1 |
Face 217: A:41 B:40 C:119 AB:1 BC:1 CA:1 |
Face 218: A:41 B:119 C:115 AB:1 BC:1 CA:1 |
Face 219: A:115 B:119 C:120 AB:1 BC:1 CA:1 |
Face 220: A:115 B:120 C:116 AB:1 BC:1 CA:1 |
Face 221: A:116 B:120 C:121 AB:1 BC:1 CA:1 |
Face 222: A:116 B:121 C:117 AB:1 BC:1 CA:1 |
Face 223: A:117 B:121 C:122 AB:1 BC:1 CA:1 |
Face 224: A:117 B:122 C:118 AB:1 BC:1 CA:1 |
Face 225: A:118 B:122 C:123 AB:1 BC:1 CA:1 |
Face 226: A:118 B:123 C:29 AB:1 BC:1 CA:1 |
Face 227: A:29 B:123 C:30 AB:1 BC:1 CA:1 |
Face 228: A:40 B:39 C:124 AB:1 BC:1 CA:1 |
Face 229: A:40 B:124 C:119 AB:1 BC:1 CA:1 |
Page 6 |
Face 230: A:119 B:124 C:125 AB:1 BC:1 CA:1 |
Face 231: A:119 B:125 C:120 AB:1 BC:1 CA:1 |
Face 232: A:120 B:125 C:126 AB:1 BC:1 CA:1 |
Face 233: A:120 B:126 C:121 AB:1 BC:1 CA:1 |
Face 234: A:121 B:126 C:127 AB:1 BC:1 CA:1 |
Face 235: A:121 B:127 C:122 AB:1 BC:1 CA:1 |
Face 236: A:122 B:127 C:128 AB:1 BC:1 CA:1 |
Face 237: A:122 B:128 C:123 AB:1 BC:1 CA:1 |
Face 238: A:123 B:128 C:129 AB:1 BC:1 CA:1 |
Face 239: A:123 B:129 C:30 AB:1 BC:1 CA:1 |
Face 240: A:30 B:129 C:31 AB:1 BC:1 CA:1 |
Face 241: A:39 B:3 C:38 AB:1 BC:1 CA:1 |
Face 242: A:39 B:38 C:124 AB:1 BC:1 CA:1 |
Face 243: A:124 B:38 C:37 AB:1 BC:1 CA:1 |
Face 244: A:124 B:37 C:125 AB:1 BC:1 CA:1 |
Face 245: A:125 B:37 C:36 AB:1 BC:1 CA:1 |
Face 246: A:125 B:36 C:126 AB:1 BC:1 CA:1 |
Face 247: A:126 B:36 C:35 AB:1 BC:1 CA:1 |
Face 248: A:126 B:35 C:127 AB:1 BC:1 CA:1 |
Face 249: A:127 B:35 C:34 AB:1 BC:1 CA:1 |
Face 250: A:127 B:34 C:128 AB:1 BC:1 CA:1 |
Face 251: A:128 B:34 C:33 AB:1 BC:1 CA:1 |
Face 252: A:128 B:33 C:129 AB:1 BC:1 CA:1 |
Face 253: A:129 B:33 C:32 AB:1 BC:1 CA:1 |
Face 254: A:129 B:32 C:31 AB:1 BC:1 CA:1 |
Face 255: A:31 B:32 C:2 AB:1 BC:1 CA:1 |
Page 7 |
/programs/demos/view3ds/asc_objects/TOORUS.ASC |
---|
0,0 → 1,924 |
Ambient light color: Red=0.039216 Green=0.039216 Blue=0.039216 |
Named object: "Object01" |
Tri-mesh, Vertices: 168 Faces: 336 |
Vertex list: |
Vertex 0: X: 101.499428 Y: -2.306819 Z: 0 |
Vertex 1: X: 98.385338 Y: -2.236042 Z: 11.624938 |
Vertex 2: X: 89.877487 Y: -2.04268 Z: 20.134983 |
Vertex 3: X: 78.255547 Y: -1.778542 Z: 23.249874 |
Vertex 4: X: 66.633614 Y: -1.514406 Z: 20.134981 |
Vertex 5: X: 58.125767 Y: -1.321046 Z: 11.624938 |
Vertex 6: X: 55.011677 Y: -1.250273 Z: 0.000004 |
Vertex 7: X: 58.125763 Y: -1.32105 Z: -11.624932 |
Vertex 8: X: 66.633606 Y: -1.514412 Z: -20.134977 |
Vertex 9: X: 78.255539 Y: -1.778549 Z: -23.249874 |
Vertex 10: X: 89.877472 Y: -2.042685 Z: -20.134989 |
Vertex 11: X: 98.38533 Y: -2.236045 Z: -11.62495 |
Vertex 12: X: 92.4487 Y: 41.96059 Z: -0.000006 |
Vertex 13: X: 89.612297 Y: 40.673206 Z: 11.624931 |
Vertex 14: X: 81.863098 Y: 37.156002 Z: 20.134977 |
Vertex 15: X: 71.277489 Y: 32.351406 Z: 23.24987 |
Vertex 16: X: 60.691883 Y: 27.546818 Z: 20.134977 |
Vertex 17: X: 52.94268 Y: 24.02961 Z: 11.624935 |
Vertex 18: X: 50.106274 Y: 22.742222 Z: 0 |
Vertex 19: X: 52.942677 Y: 24.029604 Z: -11.624936 |
Vertex 20: X: 60.691875 Y: 27.546808 Z: -20.134981 |
Vertex 21: X: 71.277481 Y: 32.351398 Z: -23.24988 |
Vertex 22: X: 81.863083 Y: 37.155991 Z: -20.134995 |
Vertex 23: X: 89.612289 Y: 40.673199 Z: -11.624957 |
Vertex 24: X: 65.087372 Y: 77.917183 Z: -0.000012 |
Vertex 25: X: 63.090431 Y: 75.526619 Z: 11.624927 |
Vertex 26: X: 57.634701 Y: 68.995476 Z: 20.134974 |
Vertex 27: X: 50.182037 Y: 60.073761 Z: 23.249866 |
Vertex 28: X: 42.72937 Y: 51.15205 Z: 20.134975 |
Vertex 29: X: 37.27364 Y: 44.620907 Z: 11.624931 |
Vertex 30: X: 35.276703 Y: 42.230335 Z: -0.000003 |
Vertex 31: X: 37.27364 Y: 44.620899 Z: -11.62494 |
Vertex 32: X: 42.729366 Y: 51.152039 Z: -20.134985 |
Vertex 33: X: 50.18203 Y: 60.073746 Z: -23.249884 |
Vertex 34: X: 57.634693 Y: 68.995461 Z: -20.134998 |
Vertex 35: X: 63.090427 Y: 75.526611 Z: -11.624962 |
Vertex 36: X: 24.834675 Y: 98.441322 Z: -0.000015 |
Vertex 37: X: 24.072725 Y: 95.421059 Z: 11.624924 |
Vertex 38: X: 21.991043 Y: 87.16954 Z: 20.134968 |
Vertex 39: X: 19.147409 Y: 75.897766 Z: 23.249863 |
Vertex 40: X: 16.303778 Y: 64.625992 Z: 20.134974 |
Vertex 41: X: 14.222095 Y: 56.374477 Z: 11.624929 |
Vertex 42: X: 13.460146 Y: 53.35421 Z: -0.000004 |
Vertex 43: X: 14.222095 Y: 56.37447 Z: -11.624941 |
Vertex 44: X: 16.303776 Y: 64.625977 Z: -20.134987 |
Vertex 45: X: 19.147408 Y: 75.897743 Z: -23.249887 |
Vertex 46: X: 21.991039 Y: 87.169518 Z: -20.135004 |
Vertex 47: X: 24.072723 Y: 95.421043 Z: -11.624965 |
Vertex 48: X: -20.336836 Y: 99.467918 Z: -0.000015 |
Vertex 49: X: -19.712885 Y: 96.416161 Z: 11.624924 |
Vertex 50: X: -18.008217 Y: 88.078598 Z: 20.134968 |
Vertex 51: X: -15.679599 Y: 76.68927 Z: 23.249863 |
Vertex 52: X: -13.350981 Y: 65.299942 Z: 20.134974 |
Vertex 53: X: -11.646314 Y: 56.962383 Z: 11.624929 |
Vertex 54: X: -11.022363 Y: 53.910618 Z: -0.000004 |
Vertex 55: X: -11.646314 Y: 56.962376 Z: -11.624941 |
Page 1 |
Vertex 56: X: -13.35098 Y: 65.299934 Z: -20.134987 |
Vertex 57: X: -15.679597 Y: 76.689247 Z: -23.249887 |
Vertex 58: X: -18.008215 Y: 88.078568 Z: -20.135004 |
Vertex 59: X: -19.712883 Y: 96.416145 Z: -11.624965 |
Vertex 60: X: -61.480385 Y: 80.793663 Z: -0.000012 |
Vertex 61: X: -59.594112 Y: 78.31485 Z: 11.624926 |
Vertex 62: X: -54.440727 Y: 71.542587 Z: 20.13497 |
Vertex 63: X: -47.40107 Y: 62.291512 Z: 23.249866 |
Vertex 64: X: -40.361412 Y: 53.040436 Z: 20.134975 |
Vertex 65: X: -35.208027 Y: 46.268181 Z: 11.624931 |
Vertex 66: X: -33.321754 Y: 43.789356 Z: -0.000003 |
Vertex 67: X: -35.208023 Y: 46.268173 Z: -11.62494 |
Vertex 68: X: -40.361408 Y: 53.040424 Z: -20.134985 |
Vertex 69: X: -47.401062 Y: 62.291496 Z: -23.249884 |
Vertex 70: X: -54.44072 Y: 71.542572 Z: -20.135 |
Vertex 71: X: -59.594109 Y: 78.314835 Z: -11.624962 |
Vertex 72: X: -90.446976 Y: 46.117218 Z: -0.000007 |
Vertex 73: X: -87.671989 Y: 44.702305 Z: 11.62493 |
Vertex 74: X: -80.090576 Y: 40.836685 Z: 20.134975 |
Vertex 75: X: -69.734169 Y: 35.556149 Z: 23.24987 |
Vertex 76: X: -59.377766 Y: 30.27561 Z: 20.134977 |
Vertex 77: X: -51.796352 Y: 26.40999 Z: 11.624935 |
Vertex 78: X: -49.021362 Y: 24.995071 Z: -0 |
Vertex 79: X: -51.796349 Y: 26.409985 Z: -11.624936 |
Vertex 80: X: -59.377758 Y: 30.275604 Z: -20.134983 |
Vertex 81: X: -69.734161 Y: 35.556137 Z: -23.24988 |
Vertex 82: X: -80.090561 Y: 40.836674 Z: -20.134995 |
Vertex 83: X: -87.671982 Y: 44.702297 Z: -11.624958 |
Vertex 84: X: -101.499428 Y: 2.306689 Z: -0 |
Vertex 85: X: -98.385338 Y: 2.23592 Z: 11.624937 |
Vertex 86: X: -89.877487 Y: 2.042571 Z: 20.134981 |
Vertex 87: X: -78.255547 Y: 1.778449 Z: 23.249874 |
Vertex 88: X: -66.633614 Y: 1.514327 Z: 20.134981 |
Vertex 89: X: -58.125767 Y: 1.320975 Z: 11.624938 |
Vertex 90: X: -55.011677 Y: 1.250203 Z: 0.000003 |
Vertex 91: X: -58.125763 Y: 1.320972 Z: -11.624932 |
Vertex 92: X: -66.633606 Y: 1.514321 Z: -20.134977 |
Vertex 93: X: -78.255539 Y: 1.778442 Z: -23.249874 |
Vertex 94: X: -89.877472 Y: 2.042564 Z: -20.134991 |
Vertex 95: X: -98.38533 Y: 2.235916 Z: -11.624951 |
Vertex 96: X: -92.448647 Y: -41.960709 Z: 0.000006 |
Vertex 97: X: -89.612244 Y: -40.673317 Z: 11.624944 |
Vertex 98: X: -81.863045 Y: -37.156101 Z: 20.134987 |
Vertex 99: X: -71.277443 Y: -32.351494 Z: 23.24988 |
Vertex 100: X: -60.691845 Y: -27.546888 Z: 20.134985 |
Vertex 101: X: -52.94265 Y: -24.029675 Z: 11.624942 |
Vertex 102: X: -50.106247 Y: -22.742285 Z: 0.000007 |
Vertex 103: X: -52.942646 Y: -24.029676 Z: -11.624929 |
Vertex 104: X: -60.691841 Y: -27.546892 Z: -20.134974 |
Vertex 105: X: -71.277435 Y: -32.351494 Z: -23.24987 |
Vertex 106: X: -81.863037 Y: -37.156101 Z: -20.134985 |
Vertex 107: X: -89.612236 Y: -40.673317 Z: -11.624945 |
Vertex 108: X: -65.087273 Y: -77.917267 Z: 0.000012 |
Vertex 109: X: -63.09034 Y: -75.526695 Z: 11.624949 |
Vertex 110: X: -57.634617 Y: -68.995544 Z: 20.134991 |
Vertex 111: X: -50.181961 Y: -60.073822 Z: 23.249884 |
Vertex 112: X: -42.729305 Y: -51.1521 Z: 20.134989 |
Vertex 113: X: -37.273586 Y: -44.620949 Z: 11.624946 |
Vertex 114: X: -35.276653 Y: -42.230381 Z: 0.00001 |
Vertex 115: X: -37.273582 Y: -44.620953 Z: -11.624926 |
Vertex 116: X: -42.729301 Y: -51.1521 Z: -20.134972 |
Page 2 |
Vertex 117: X: -50.181953 Y: -60.073822 Z: -23.249866 |
Vertex 118: X: -57.634609 Y: -68.995544 Z: -20.134981 |
Vertex 119: X: -63.090332 Y: -75.526695 Z: -11.62494 |
Vertex 120: X: -24.834549 Y: -98.441345 Z: 0.000015 |
Vertex 121: X: -24.072605 Y: -95.421074 Z: 11.624951 |
Vertex 122: X: -21.990931 Y: -87.169556 Z: 20.134996 |
Vertex 123: X: -19.147314 Y: -75.897774 Z: 23.249887 |
Vertex 124: X: -16.303696 Y: -64.625999 Z: 20.134991 |
Vertex 125: X: -14.222023 Y: -56.374493 Z: 11.624947 |
Vertex 126: X: -13.460078 Y: -53.354225 Z: 0.000011 |
Vertex 127: X: -14.222022 Y: -56.374493 Z: -11.624924 |
Vertex 128: X: -16.303694 Y: -64.625999 Z: -20.13497 |
Vertex 129: X: -19.14731 Y: -75.897781 Z: -23.249863 |
Vertex 130: X: -21.990929 Y: -87.169556 Z: -20.134975 |
Vertex 131: X: -24.072603 Y: -95.421074 Z: -11.624937 |
Vertex 132: X: 20.336964 Y: -99.467896 Z: 0.000015 |
Vertex 133: X: 19.713007 Y: -96.41613 Z: 11.624951 |
Vertex 134: X: 18.008329 Y: -88.07856 Z: 20.134996 |
Vertex 135: X: 15.679697 Y: -76.68924 Z: 23.249887 |
Vertex 136: X: 13.351064 Y: -65.299919 Z: 20.134991 |
Vertex 137: X: 11.646387 Y: -56.962364 Z: 11.624947 |
Vertex 138: X: 11.022431 Y: -53.910606 Z: 0.000011 |
Vertex 139: X: 11.646386 Y: -56.962364 Z: -11.624924 |
Vertex 140: X: 13.351063 Y: -65.299927 Z: -20.13497 |
Vertex 141: X: 15.679695 Y: -76.68924 Z: -23.249863 |
Vertex 142: X: 18.008327 Y: -88.07856 Z: -20.134975 |
Vertex 143: X: 19.713007 Y: -96.41613 Z: -11.624937 |
Vertex 144: X: 61.480488 Y: -80.793579 Z: 0.000012 |
Vertex 145: X: 59.594212 Y: -78.314766 Z: 11.624949 |
Vertex 146: X: 54.440815 Y: -71.542511 Z: 20.134993 |
Vertex 147: X: 47.401146 Y: -62.291443 Z: 23.249884 |
Vertex 148: X: 40.361477 Y: -53.040379 Z: 20.134989 |
Vertex 149: X: 35.208084 Y: -46.268131 Z: 11.624946 |
Vertex 150: X: 33.321812 Y: -43.789314 Z: 0.00001 |
Vertex 151: X: 35.208084 Y: -46.268131 Z: -11.624926 |
Vertex 152: X: 40.361473 Y: -53.040379 Z: -20.134972 |
Vertex 153: X: 47.401142 Y: -62.291443 Z: -23.249866 |
Vertex 154: X: 54.440811 Y: -71.542511 Z: -20.134977 |
Vertex 155: X: 59.594208 Y: -78.314766 Z: -11.624939 |
Vertex 156: X: 90.447037 Y: -46.117104 Z: 0.000007 |
Vertex 157: X: 87.67205 Y: -44.70219 Z: 11.624945 |
Vertex 158: X: 80.09063 Y: -40.836578 Z: 20.134987 |
Vertex 159: X: 69.734215 Y: -35.556053 Z: 23.24988 |
Vertex 160: X: 59.377804 Y: -30.27553 Z: 20.134987 |
Vertex 161: X: 51.796387 Y: -26.40992 Z: 11.624942 |
Vertex 162: X: 49.021393 Y: -24.99501 Z: 0.000007 |
Vertex 163: X: 51.796383 Y: -26.409922 Z: -11.624929 |
Vertex 164: X: 59.3778 Y: -30.275532 Z: -20.134974 |
Vertex 165: X: 69.734207 Y: -35.556053 Z: -23.24987 |
Vertex 166: X: 80.090614 Y: -40.836578 Z: -20.134983 |
Vertex 167: X: 87.672043 Y: -44.70219 Z: -11.624944 |
Face list: |
Face 0: A:0 B:13 C:1 AB:0 BC:1 CA:1 |
Smoothing: 1 |
Face 1: A:0 B:12 C:13 AB:1 BC:1 CA:0 |
Smoothing: 1 |
Face 2: A:1 B:14 C:2 AB:0 BC:1 CA:1 |
Smoothing: 2 |
Face 3: A:1 B:13 C:14 AB:1 BC:1 CA:0 |
Smoothing: 2 |
Face 4: A:2 B:15 C:3 AB:0 BC:1 CA:1 |
Page 3 |
Smoothing: 3 |
Face 5: A:2 B:14 C:15 AB:1 BC:1 CA:0 |
Smoothing: 3 |
Face 6: A:3 B:16 C:4 AB:0 BC:1 CA:1 |
Smoothing: 4 |
Face 7: A:3 B:15 C:16 AB:1 BC:1 CA:0 |
Smoothing: 4 |
Face 8: A:4 B:17 C:5 AB:0 BC:1 CA:1 |
Smoothing: 5 |
Face 9: A:4 B:16 C:17 AB:1 BC:1 CA:0 |
Smoothing: 5 |
Face 10: A:5 B:18 C:6 AB:0 BC:1 CA:1 |
Smoothing: 6 |
Face 11: A:5 B:17 C:18 AB:1 BC:1 CA:0 |
Smoothing: 6 |
Face 12: A:6 B:19 C:7 AB:0 BC:1 CA:1 |
Smoothing: 7 |
Face 13: A:6 B:18 C:19 AB:1 BC:1 CA:0 |
Smoothing: 7 |
Face 14: A:7 B:20 C:8 AB:0 BC:1 CA:1 |
Smoothing: 8 |
Face 15: A:7 B:19 C:20 AB:1 BC:1 CA:0 |
Smoothing: 8 |
Face 16: A:8 B:21 C:9 AB:0 BC:1 CA:1 |
Smoothing: 9 |
Face 17: A:8 B:20 C:21 AB:1 BC:1 CA:0 |
Smoothing: 9 |
Face 18: A:9 B:22 C:10 AB:0 BC:1 CA:1 |
Smoothing: 10 |
Face 19: A:9 B:21 C:22 AB:1 BC:1 CA:0 |
Smoothing: 10 |
Face 20: A:10 B:23 C:11 AB:0 BC:1 CA:1 |
Smoothing: 11 |
Face 21: A:10 B:22 C:23 AB:1 BC:1 CA:0 |
Smoothing: 11 |
Face 22: A:11 B:12 C:0 AB:0 BC:1 CA:1 |
Smoothing: 12 |
Face 23: A:11 B:23 C:12 AB:1 BC:1 CA:0 |
Smoothing: 12 |
Face 24: A:12 B:25 C:13 AB:0 BC:1 CA:1 |
Smoothing: 13 |
Face 25: A:12 B:24 C:25 AB:1 BC:1 CA:0 |
Smoothing: 13 |
Face 26: A:13 B:26 C:14 AB:0 BC:1 CA:1 |
Smoothing: 14 |
Face 27: A:13 B:25 C:26 AB:1 BC:1 CA:0 |
Smoothing: 14 |
Face 28: A:14 B:27 C:15 AB:0 BC:1 CA:1 |
Smoothing: 15 |
Face 29: A:14 B:26 C:27 AB:1 BC:1 CA:0 |
Smoothing: 15 |
Face 30: A:15 B:28 C:16 AB:0 BC:1 CA:1 |
Smoothing: 16 |
Face 31: A:15 B:27 C:28 AB:1 BC:1 CA:0 |
Smoothing: 16 |
Face 32: A:16 B:29 C:17 AB:0 BC:1 CA:1 |
Smoothing: 17 |
Face 33: A:16 B:28 C:29 AB:1 BC:1 CA:0 |
Smoothing: 17 |
Face 34: A:17 B:30 C:18 AB:0 BC:1 CA:1 |
Smoothing: 18 |
Page 4 |
Face 35: A:17 B:29 C:30 AB:1 BC:1 CA:0 |
Smoothing: 18 |
Face 36: A:18 B:31 C:19 AB:0 BC:1 CA:1 |
Smoothing: 19 |
Face 37: A:18 B:30 C:31 AB:1 BC:1 CA:0 |
Smoothing: 19 |
Face 38: A:19 B:32 C:20 AB:0 BC:1 CA:1 |
Smoothing: 20 |
Face 39: A:19 B:31 C:32 AB:1 BC:1 CA:0 |
Smoothing: 20 |
Face 40: A:20 B:33 C:21 AB:0 BC:1 CA:1 |
Smoothing: 21 |
Face 41: A:20 B:32 C:33 AB:1 BC:1 CA:0 |
Smoothing: 21 |
Face 42: A:21 B:34 C:22 AB:0 BC:1 CA:1 |
Smoothing: 22 |
Face 43: A:21 B:33 C:34 AB:1 BC:1 CA:0 |
Smoothing: 22 |
Face 44: A:22 B:35 C:23 AB:0 BC:1 CA:1 |
Smoothing: 23 |
Face 45: A:22 B:34 C:35 AB:1 BC:1 CA:0 |
Smoothing: 23 |
Face 46: A:23 B:24 C:12 AB:0 BC:1 CA:1 |
Smoothing: 24 |
Face 47: A:23 B:35 C:24 AB:1 BC:1 CA:0 |
Smoothing: 24 |
Face 48: A:24 B:37 C:25 AB:0 BC:1 CA:1 |
Smoothing: 25 |
Face 49: A:24 B:36 C:37 AB:1 BC:1 CA:0 |
Smoothing: 25 |
Face 50: A:25 B:38 C:26 AB:0 BC:1 CA:1 |
Smoothing: 26 |
Face 51: A:25 B:37 C:38 AB:1 BC:1 CA:0 |
Smoothing: 26 |
Face 52: A:26 B:39 C:27 AB:0 BC:1 CA:1 |
Smoothing: 27 |
Face 53: A:26 B:38 C:39 AB:1 BC:1 CA:0 |
Smoothing: 27 |
Face 54: A:27 B:40 C:28 AB:0 BC:1 CA:1 |
Smoothing: 28 |
Face 55: A:27 B:39 C:40 AB:1 BC:1 CA:0 |
Smoothing: 28 |
Face 56: A:28 B:41 C:29 AB:0 BC:1 CA:1 |
Smoothing: 29 |
Face 57: A:28 B:40 C:41 AB:1 BC:1 CA:0 |
Smoothing: 29 |
Face 58: A:29 B:42 C:30 AB:0 BC:1 CA:1 |
Smoothing: 30 |
Face 59: A:29 B:41 C:42 AB:1 BC:1 CA:0 |
Smoothing: 30 |
Face 60: A:30 B:43 C:31 AB:0 BC:1 CA:1 |
Smoothing: 31 |
Face 61: A:30 B:42 C:43 AB:1 BC:1 CA:0 |
Smoothing: 31 |
Face 62: A:31 B:44 C:32 AB:0 BC:1 CA:1 |
Smoothing: 32 |
Face 63: A:31 B:43 C:44 AB:1 BC:1 CA:0 |
Smoothing: 32 |
Face 64: A:32 B:45 C:33 AB:0 BC:1 CA:1 |
Smoothing: 1 |
Face 65: A:32 B:44 C:45 AB:1 BC:1 CA:0 |
Page 5 |
Smoothing: 1 |
Face 66: A:33 B:46 C:34 AB:0 BC:1 CA:1 |
Smoothing: 2 |
Face 67: A:33 B:45 C:46 AB:1 BC:1 CA:0 |
Smoothing: 2 |
Face 68: A:34 B:47 C:35 AB:0 BC:1 CA:1 |
Smoothing: 3 |
Face 69: A:34 B:46 C:47 AB:1 BC:1 CA:0 |
Smoothing: 3 |
Face 70: A:35 B:36 C:24 AB:0 BC:1 CA:1 |
Smoothing: 4 |
Face 71: A:35 B:47 C:36 AB:1 BC:1 CA:0 |
Smoothing: 4 |
Face 72: A:36 B:49 C:37 AB:0 BC:1 CA:1 |
Smoothing: 5 |
Face 73: A:36 B:48 C:49 AB:1 BC:1 CA:0 |
Smoothing: 5 |
Face 74: A:37 B:50 C:38 AB:0 BC:1 CA:1 |
Smoothing: 6 |
Face 75: A:37 B:49 C:50 AB:1 BC:1 CA:0 |
Smoothing: 6 |
Face 76: A:38 B:51 C:39 AB:0 BC:1 CA:1 |
Smoothing: 7 |
Face 77: A:38 B:50 C:51 AB:1 BC:1 CA:0 |
Smoothing: 7 |
Face 78: A:39 B:52 C:40 AB:0 BC:1 CA:1 |
Smoothing: 8 |
Face 79: A:39 B:51 C:52 AB:1 BC:1 CA:0 |
Smoothing: 8 |
Face 80: A:40 B:53 C:41 AB:0 BC:1 CA:1 |
Smoothing: 9 |
Face 81: A:40 B:52 C:53 AB:1 BC:1 CA:0 |
Smoothing: 9 |
Face 82: A:41 B:54 C:42 AB:0 BC:1 CA:1 |
Smoothing: 10 |
Face 83: A:41 B:53 C:54 AB:1 BC:1 CA:0 |
Smoothing: 10 |
Face 84: A:42 B:55 C:43 AB:0 BC:1 CA:1 |
Smoothing: 11 |
Face 85: A:42 B:54 C:55 AB:1 BC:1 CA:0 |
Smoothing: 11 |
Face 86: A:43 B:56 C:44 AB:0 BC:1 CA:1 |
Smoothing: 12 |
Face 87: A:43 B:55 C:56 AB:1 BC:1 CA:0 |
Smoothing: 12 |
Face 88: A:44 B:57 C:45 AB:0 BC:1 CA:1 |
Smoothing: 13 |
Face 89: A:44 B:56 C:57 AB:1 BC:1 CA:0 |
Smoothing: 13 |
Face 90: A:45 B:58 C:46 AB:0 BC:1 CA:1 |
Smoothing: 14 |
Face 91: A:45 B:57 C:58 AB:1 BC:1 CA:0 |
Smoothing: 14 |
Face 92: A:46 B:59 C:47 AB:0 BC:1 CA:1 |
Smoothing: 15 |
Face 93: A:46 B:58 C:59 AB:1 BC:1 CA:0 |
Smoothing: 15 |
Face 94: A:47 B:48 C:36 AB:0 BC:1 CA:1 |
Smoothing: 16 |
Face 95: A:47 B:59 C:48 AB:1 BC:1 CA:0 |
Smoothing: 16 |
Page 6 |
Face 96: A:48 B:61 C:49 AB:0 BC:1 CA:1 |
Smoothing: 17 |
Face 97: A:48 B:60 C:61 AB:1 BC:1 CA:0 |
Smoothing: 17 |
Face 98: A:49 B:62 C:50 AB:0 BC:1 CA:1 |
Smoothing: 18 |
Face 99: A:49 B:61 C:62 AB:1 BC:1 CA:0 |
Smoothing: 18 |
Face 100: A:50 B:63 C:51 AB:0 BC:1 CA:1 |
Smoothing: 19 |
Face 101: A:50 B:62 C:63 AB:1 BC:1 CA:0 |
Smoothing: 19 |
Face 102: A:51 B:64 C:52 AB:0 BC:1 CA:1 |
Smoothing: 20 |
Face 103: A:51 B:63 C:64 AB:1 BC:1 CA:0 |
Smoothing: 20 |
Face 104: A:52 B:65 C:53 AB:0 BC:1 CA:1 |
Smoothing: 21 |
Face 105: A:52 B:64 C:65 AB:1 BC:1 CA:0 |
Smoothing: 21 |
Face 106: A:53 B:66 C:54 AB:0 BC:1 CA:1 |
Smoothing: 22 |
Face 107: A:53 B:65 C:66 AB:1 BC:1 CA:0 |
Smoothing: 22 |
Face 108: A:54 B:67 C:55 AB:0 BC:1 CA:1 |
Smoothing: 23 |
Face 109: A:54 B:66 C:67 AB:1 BC:1 CA:0 |
Smoothing: 23 |
Face 110: A:55 B:68 C:56 AB:0 BC:1 CA:1 |
Smoothing: 24 |
Face 111: A:55 B:67 C:68 AB:1 BC:1 CA:0 |
Smoothing: 24 |
Face 112: A:56 B:69 C:57 AB:0 BC:1 CA:1 |
Smoothing: 25 |
Face 113: A:56 B:68 C:69 AB:1 BC:1 CA:0 |
Smoothing: 25 |
Face 114: A:57 B:70 C:58 AB:0 BC:1 CA:1 |
Smoothing: 26 |
Face 115: A:57 B:69 C:70 AB:1 BC:1 CA:0 |
Smoothing: 26 |
Face 116: A:58 B:71 C:59 AB:0 BC:1 CA:1 |
Smoothing: 27 |
Face 117: A:58 B:70 C:71 AB:1 BC:1 CA:0 |
Smoothing: 27 |
Face 118: A:59 B:60 C:48 AB:0 BC:1 CA:1 |
Smoothing: 28 |
Face 119: A:59 B:71 C:60 AB:1 BC:1 CA:0 |
Smoothing: 28 |
Face 120: A:60 B:73 C:61 AB:0 BC:1 CA:1 |
Smoothing: 29 |
Face 121: A:60 B:72 C:73 AB:1 BC:1 CA:0 |
Smoothing: 29 |
Face 122: A:61 B:74 C:62 AB:0 BC:1 CA:1 |
Smoothing: 30 |
Face 123: A:61 B:73 C:74 AB:1 BC:1 CA:0 |
Smoothing: 30 |
Face 124: A:62 B:75 C:63 AB:0 BC:1 CA:1 |
Smoothing: 31 |
Face 125: A:62 B:74 C:75 AB:1 BC:1 CA:0 |
Smoothing: 31 |
Face 126: A:63 B:76 C:64 AB:0 BC:1 CA:1 |
Page 7 |
Smoothing: 32 |
Face 127: A:63 B:75 C:76 AB:1 BC:1 CA:0 |
Smoothing: 32 |
Face 128: A:64 B:77 C:65 AB:0 BC:1 CA:1 |
Smoothing: 1 |
Face 129: A:64 B:76 C:77 AB:1 BC:1 CA:0 |
Smoothing: 1 |
Face 130: A:65 B:78 C:66 AB:0 BC:1 CA:1 |
Smoothing: 2 |
Face 131: A:65 B:77 C:78 AB:1 BC:1 CA:0 |
Smoothing: 2 |
Face 132: A:66 B:79 C:67 AB:0 BC:1 CA:1 |
Smoothing: 3 |
Face 133: A:66 B:78 C:79 AB:1 BC:1 CA:0 |
Smoothing: 3 |
Face 134: A:67 B:80 C:68 AB:0 BC:1 CA:1 |
Smoothing: 4 |
Face 135: A:67 B:79 C:80 AB:1 BC:1 CA:0 |
Smoothing: 4 |
Face 136: A:68 B:81 C:69 AB:0 BC:1 CA:1 |
Smoothing: 5 |
Face 137: A:68 B:80 C:81 AB:1 BC:1 CA:0 |
Smoothing: 5 |
Face 138: A:69 B:82 C:70 AB:0 BC:1 CA:1 |
Smoothing: 6 |
Face 139: A:69 B:81 C:82 AB:1 BC:1 CA:0 |
Smoothing: 6 |
Face 140: A:70 B:83 C:71 AB:0 BC:1 CA:1 |
Smoothing: 7 |
Face 141: A:70 B:82 C:83 AB:1 BC:1 CA:0 |
Smoothing: 7 |
Face 142: A:71 B:72 C:60 AB:0 BC:1 CA:1 |
Smoothing: 8 |
Face 143: A:71 B:83 C:72 AB:1 BC:1 CA:0 |
Smoothing: 8 |
Face 144: A:72 B:85 C:73 AB:0 BC:1 CA:1 |
Smoothing: 9 |
Face 145: A:72 B:84 C:85 AB:1 BC:1 CA:0 |
Smoothing: 9 |
Face 146: A:73 B:86 C:74 AB:0 BC:1 CA:1 |
Smoothing: 10 |
Face 147: A:73 B:85 C:86 AB:1 BC:1 CA:0 |
Smoothing: 10 |
Face 148: A:74 B:87 C:75 AB:0 BC:1 CA:1 |
Smoothing: 11 |
Face 149: A:74 B:86 C:87 AB:1 BC:1 CA:0 |
Smoothing: 11 |
Face 150: A:75 B:88 C:76 AB:0 BC:1 CA:1 |
Smoothing: 12 |
Face 151: A:75 B:87 C:88 AB:1 BC:1 CA:0 |
Smoothing: 12 |
Face 152: A:76 B:89 C:77 AB:0 BC:1 CA:1 |
Smoothing: 13 |
Face 153: A:76 B:88 C:89 AB:1 BC:1 CA:0 |
Smoothing: 13 |
Face 154: A:77 B:90 C:78 AB:0 BC:1 CA:1 |
Smoothing: 14 |
Face 155: A:77 B:89 C:90 AB:1 BC:1 CA:0 |
Smoothing: 14 |
Face 156: A:78 B:91 C:79 AB:0 BC:1 CA:1 |
Smoothing: 15 |
Page 8 |
Face 157: A:78 B:90 C:91 AB:1 BC:1 CA:0 |
Smoothing: 15 |
Face 158: A:79 B:92 C:80 AB:0 BC:1 CA:1 |
Smoothing: 16 |
Face 159: A:79 B:91 C:92 AB:1 BC:1 CA:0 |
Smoothing: 16 |
Face 160: A:80 B:93 C:81 AB:0 BC:1 CA:1 |
Smoothing: 17 |
Face 161: A:80 B:92 C:93 AB:1 BC:1 CA:0 |
Smoothing: 17 |
Face 162: A:81 B:94 C:82 AB:0 BC:1 CA:1 |
Smoothing: 18 |
Face 163: A:81 B:93 C:94 AB:1 BC:1 CA:0 |
Smoothing: 18 |
Face 164: A:82 B:95 C:83 AB:0 BC:1 CA:1 |
Smoothing: 19 |
Face 165: A:82 B:94 C:95 AB:1 BC:1 CA:0 |
Smoothing: 19 |
Face 166: A:83 B:84 C:72 AB:0 BC:1 CA:1 |
Smoothing: 20 |
Face 167: A:83 B:95 C:84 AB:1 BC:1 CA:0 |
Smoothing: 20 |
Face 168: A:84 B:97 C:85 AB:0 BC:1 CA:1 |
Smoothing: 21 |
Face 169: A:84 B:96 C:97 AB:1 BC:1 CA:0 |
Smoothing: 21 |
Face 170: A:85 B:98 C:86 AB:0 BC:1 CA:1 |
Smoothing: 22 |
Face 171: A:85 B:97 C:98 AB:1 BC:1 CA:0 |
Smoothing: 22 |
Face 172: A:86 B:99 C:87 AB:0 BC:1 CA:1 |
Smoothing: 23 |
Face 173: A:86 B:98 C:99 AB:1 BC:1 CA:0 |
Smoothing: 23 |
Face 174: A:87 B:100 C:88 AB:0 BC:1 CA:1 |
Smoothing: 24 |
Face 175: A:87 B:99 C:100 AB:1 BC:1 CA:0 |
Smoothing: 24 |
Face 176: A:88 B:101 C:89 AB:0 BC:1 CA:1 |
Smoothing: 25 |
Face 177: A:88 B:100 C:101 AB:1 BC:1 CA:0 |
Smoothing: 25 |
Face 178: A:89 B:102 C:90 AB:0 BC:1 CA:1 |
Smoothing: 26 |
Face 179: A:89 B:101 C:102 AB:1 BC:1 CA:0 |
Smoothing: 26 |
Face 180: A:90 B:103 C:91 AB:0 BC:1 CA:1 |
Smoothing: 27 |
Face 181: A:90 B:102 C:103 AB:1 BC:1 CA:0 |
Smoothing: 27 |
Face 182: A:91 B:104 C:92 AB:0 BC:1 CA:1 |
Smoothing: 28 |
Face 183: A:91 B:103 C:104 AB:1 BC:1 CA:0 |
Smoothing: 28 |
Face 184: A:92 B:105 C:93 AB:0 BC:1 CA:1 |
Smoothing: 29 |
Face 185: A:92 B:104 C:105 AB:1 BC:1 CA:0 |
Smoothing: 29 |
Face 186: A:93 B:106 C:94 AB:0 BC:1 CA:1 |
Smoothing: 30 |
Face 187: A:93 B:105 C:106 AB:1 BC:1 CA:0 |
Page 9 |
Smoothing: 30 |
Face 188: A:94 B:107 C:95 AB:0 BC:1 CA:1 |
Smoothing: 31 |
Face 189: A:94 B:106 C:107 AB:1 BC:1 CA:0 |
Smoothing: 31 |
Face 190: A:95 B:96 C:84 AB:0 BC:1 CA:1 |
Smoothing: 32 |
Face 191: A:95 B:107 C:96 AB:1 BC:1 CA:0 |
Smoothing: 32 |
Face 192: A:96 B:109 C:97 AB:0 BC:1 CA:1 |
Smoothing: 1 |
Face 193: A:96 B:108 C:109 AB:1 BC:1 CA:0 |
Smoothing: 1 |
Face 194: A:97 B:110 C:98 AB:0 BC:1 CA:1 |
Smoothing: 2 |
Face 195: A:97 B:109 C:110 AB:1 BC:1 CA:0 |
Smoothing: 2 |
Face 196: A:98 B:111 C:99 AB:0 BC:1 CA:1 |
Smoothing: 3 |
Face 197: A:98 B:110 C:111 AB:1 BC:1 CA:0 |
Smoothing: 3 |
Face 198: A:99 B:112 C:100 AB:0 BC:1 CA:1 |
Smoothing: 4 |
Face 199: A:99 B:111 C:112 AB:1 BC:1 CA:0 |
Smoothing: 4 |
Face 200: A:100 B:113 C:101 AB:0 BC:1 CA:1 |
Smoothing: 5 |
Face 201: A:100 B:112 C:113 AB:1 BC:1 CA:0 |
Smoothing: 5 |
Face 202: A:101 B:114 C:102 AB:0 BC:1 CA:1 |
Smoothing: 6 |
Face 203: A:101 B:113 C:114 AB:1 BC:1 CA:0 |
Smoothing: 6 |
Face 204: A:102 B:115 C:103 AB:0 BC:1 CA:1 |
Smoothing: 7 |
Face 205: A:102 B:114 C:115 AB:1 BC:1 CA:0 |
Smoothing: 7 |
Face 206: A:103 B:116 C:104 AB:0 BC:1 CA:1 |
Smoothing: 8 |
Face 207: A:103 B:115 C:116 AB:1 BC:1 CA:0 |
Smoothing: 8 |
Face 208: A:104 B:117 C:105 AB:0 BC:1 CA:1 |
Smoothing: 9 |
Face 209: A:104 B:116 C:117 AB:1 BC:1 CA:0 |
Smoothing: 9 |
Face 210: A:105 B:118 C:106 AB:0 BC:1 CA:1 |
Smoothing: 10 |
Face 211: A:105 B:117 C:118 AB:1 BC:1 CA:0 |
Smoothing: 10 |
Face 212: A:106 B:119 C:107 AB:0 BC:1 CA:1 |
Smoothing: 11 |
Face 213: A:106 B:118 C:119 AB:1 BC:1 CA:0 |
Smoothing: 11 |
Face 214: A:107 B:108 C:96 AB:0 BC:1 CA:1 |
Smoothing: 12 |
Face 215: A:107 B:119 C:108 AB:1 BC:1 CA:0 |
Smoothing: 12 |
Face 216: A:108 B:121 C:109 AB:0 BC:1 CA:1 |
Smoothing: 13 |
Face 217: A:108 B:120 C:121 AB:1 BC:1 CA:0 |
Smoothing: 13 |
Page 10 |
Face 218: A:109 B:122 C:110 AB:0 BC:1 CA:1 |
Smoothing: 14 |
Face 219: A:109 B:121 C:122 AB:1 BC:1 CA:0 |
Smoothing: 14 |
Face 220: A:110 B:123 C:111 AB:0 BC:1 CA:1 |
Smoothing: 15 |
Face 221: A:110 B:122 C:123 AB:1 BC:1 CA:0 |
Smoothing: 15 |
Face 222: A:111 B:124 C:112 AB:0 BC:1 CA:1 |
Smoothing: 16 |
Face 223: A:111 B:123 C:124 AB:1 BC:1 CA:0 |
Smoothing: 16 |
Face 224: A:112 B:125 C:113 AB:0 BC:1 CA:1 |
Smoothing: 17 |
Face 225: A:112 B:124 C:125 AB:1 BC:1 CA:0 |
Smoothing: 17 |
Face 226: A:113 B:126 C:114 AB:0 BC:1 CA:1 |
Smoothing: 18 |
Face 227: A:113 B:125 C:126 AB:1 BC:1 CA:0 |
Smoothing: 18 |
Face 228: A:114 B:127 C:115 AB:0 BC:1 CA:1 |
Smoothing: 19 |
Face 229: A:114 B:126 C:127 AB:1 BC:1 CA:0 |
Smoothing: 19 |
Face 230: A:115 B:128 C:116 AB:0 BC:1 CA:1 |
Smoothing: 20 |
Face 231: A:115 B:127 C:128 AB:1 BC:1 CA:0 |
Smoothing: 20 |
Face 232: A:116 B:129 C:117 AB:0 BC:1 CA:1 |
Smoothing: 21 |
Face 233: A:116 B:128 C:129 AB:1 BC:1 CA:0 |
Smoothing: 21 |
Face 234: A:117 B:130 C:118 AB:0 BC:1 CA:1 |
Smoothing: 22 |
Face 235: A:117 B:129 C:130 AB:1 BC:1 CA:0 |
Smoothing: 22 |
Face 236: A:118 B:131 C:119 AB:0 BC:1 CA:1 |
Smoothing: 23 |
Face 237: A:118 B:130 C:131 AB:1 BC:1 CA:0 |
Smoothing: 23 |
Face 238: A:119 B:120 C:108 AB:0 BC:1 CA:1 |
Smoothing: 24 |
Face 239: A:119 B:131 C:120 AB:1 BC:1 CA:0 |
Smoothing: 24 |
Face 240: A:120 B:133 C:121 AB:0 BC:1 CA:1 |
Smoothing: 25 |
Face 241: A:120 B:132 C:133 AB:1 BC:1 CA:0 |
Smoothing: 25 |
Face 242: A:121 B:134 C:122 AB:0 BC:1 CA:1 |
Smoothing: 26 |
Face 243: A:121 B:133 C:134 AB:1 BC:1 CA:0 |
Smoothing: 26 |
Face 244: A:122 B:135 C:123 AB:0 BC:1 CA:1 |
Smoothing: 27 |
Face 245: A:122 B:134 C:135 AB:1 BC:1 CA:0 |
Smoothing: 27 |
Face 246: A:123 B:136 C:124 AB:0 BC:1 CA:1 |
Smoothing: 28 |
Face 247: A:123 B:135 C:136 AB:1 BC:1 CA:0 |
Smoothing: 28 |
Face 248: A:124 B:137 C:125 AB:0 BC:1 CA:1 |
Page 11 |
Smoothing: 29 |
Face 249: A:124 B:136 C:137 AB:1 BC:1 CA:0 |
Smoothing: 29 |
Face 250: A:125 B:138 C:126 AB:0 BC:1 CA:1 |
Smoothing: 30 |
Face 251: A:125 B:137 C:138 AB:1 BC:1 CA:0 |
Smoothing: 30 |
Face 252: A:126 B:139 C:127 AB:0 BC:1 CA:1 |
Smoothing: 31 |
Face 253: A:126 B:138 C:139 AB:1 BC:1 CA:0 |
Smoothing: 31 |
Face 254: A:127 B:140 C:128 AB:0 BC:1 CA:1 |
Smoothing: 32 |
Face 255: A:127 B:139 C:140 AB:1 BC:1 CA:0 |
Smoothing: 32 |
Face 256: A:128 B:141 C:129 AB:0 BC:1 CA:1 |
Smoothing: 1 |
Face 257: A:128 B:140 C:141 AB:1 BC:1 CA:0 |
Smoothing: 1 |
Face 258: A:129 B:142 C:130 AB:0 BC:1 CA:1 |
Smoothing: 2 |
Face 259: A:129 B:141 C:142 AB:1 BC:1 CA:0 |
Smoothing: 2 |
Face 260: A:130 B:143 C:131 AB:0 BC:1 CA:1 |
Smoothing: 3 |
Face 261: A:130 B:142 C:143 AB:1 BC:1 CA:0 |
Smoothing: 3 |
Face 262: A:131 B:132 C:120 AB:0 BC:1 CA:1 |
Smoothing: 4 |
Face 263: A:131 B:143 C:132 AB:1 BC:1 CA:0 |
Smoothing: 4 |
Face 264: A:132 B:145 C:133 AB:0 BC:1 CA:1 |
Smoothing: 5 |
Face 265: A:132 B:144 C:145 AB:1 BC:1 CA:0 |
Smoothing: 5 |
Face 266: A:133 B:146 C:134 AB:0 BC:1 CA:1 |
Smoothing: 6 |
Face 267: A:133 B:145 C:146 AB:1 BC:1 CA:0 |
Smoothing: 6 |
Face 268: A:134 B:147 C:135 AB:0 BC:1 CA:1 |
Smoothing: 7 |
Face 269: A:134 B:146 C:147 AB:1 BC:1 CA:0 |
Smoothing: 7 |
Face 270: A:135 B:148 C:136 AB:0 BC:1 CA:1 |
Smoothing: 8 |
Face 271: A:135 B:147 C:148 AB:1 BC:1 CA:0 |
Smoothing: 8 |
Face 272: A:136 B:149 C:137 AB:0 BC:1 CA:1 |
Smoothing: 9 |
Face 273: A:136 B:148 C:149 AB:1 BC:1 CA:0 |
Smoothing: 9 |
Face 274: A:137 B:150 C:138 AB:0 BC:1 CA:1 |
Smoothing: 10 |
Face 275: A:137 B:149 C:150 AB:1 BC:1 CA:0 |
Smoothing: 10 |
Face 276: A:138 B:151 C:139 AB:0 BC:1 CA:1 |
Smoothing: 11 |
Face 277: A:138 B:150 C:151 AB:1 BC:1 CA:0 |
Smoothing: 11 |
Face 278: A:139 B:152 C:140 AB:0 BC:1 CA:1 |
Smoothing: 12 |
Page 12 |
Face 279: A:139 B:151 C:152 AB:1 BC:1 CA:0 |
Smoothing: 12 |
Face 280: A:140 B:153 C:141 AB:0 BC:1 CA:1 |
Smoothing: 13 |
Face 281: A:140 B:152 C:153 AB:1 BC:1 CA:0 |
Smoothing: 13 |
Face 282: A:141 B:154 C:142 AB:0 BC:1 CA:1 |
Smoothing: 14 |
Face 283: A:141 B:153 C:154 AB:1 BC:1 CA:0 |
Smoothing: 14 |
Face 284: A:142 B:155 C:143 AB:0 BC:1 CA:1 |
Smoothing: 15 |
Face 285: A:142 B:154 C:155 AB:1 BC:1 CA:0 |
Smoothing: 15 |
Face 286: A:143 B:144 C:132 AB:0 BC:1 CA:1 |
Smoothing: 16 |
Face 287: A:143 B:155 C:144 AB:1 BC:1 CA:0 |
Smoothing: 16 |
Face 288: A:144 B:157 C:145 AB:0 BC:1 CA:1 |
Smoothing: 17 |
Face 289: A:144 B:156 C:157 AB:1 BC:1 CA:0 |
Smoothing: 17 |
Face 290: A:145 B:158 C:146 AB:0 BC:1 CA:1 |
Smoothing: 18 |
Face 291: A:145 B:157 C:158 AB:1 BC:1 CA:0 |
Smoothing: 18 |
Face 292: A:146 B:159 C:147 AB:0 BC:1 CA:1 |
Smoothing: 19 |
Face 293: A:146 B:158 C:159 AB:1 BC:1 CA:0 |
Smoothing: 19 |
Face 294: A:147 B:160 C:148 AB:0 BC:1 CA:1 |
Smoothing: 20 |
Face 295: A:147 B:159 C:160 AB:1 BC:1 CA:0 |
Smoothing: 20 |
Face 296: A:148 B:161 C:149 AB:0 BC:1 CA:1 |
Smoothing: 21 |
Face 297: A:148 B:160 C:161 AB:1 BC:1 CA:0 |
Smoothing: 21 |
Face 298: A:149 B:162 C:150 AB:0 BC:1 CA:1 |
Smoothing: 22 |
Face 299: A:149 B:161 C:162 AB:1 BC:1 CA:0 |
Smoothing: 22 |
Face 300: A:150 B:163 C:151 AB:0 BC:1 CA:1 |
Smoothing: 23 |
Face 301: A:150 B:162 C:163 AB:1 BC:1 CA:0 |
Smoothing: 23 |
Face 302: A:151 B:164 C:152 AB:0 BC:1 CA:1 |
Smoothing: 24 |
Face 303: A:151 B:163 C:164 AB:1 BC:1 CA:0 |
Smoothing: 24 |
Face 304: A:152 B:165 C:153 AB:0 BC:1 CA:1 |
Smoothing: 25 |
Face 305: A:152 B:164 C:165 AB:1 BC:1 CA:0 |
Smoothing: 25 |
Face 306: A:153 B:166 C:154 AB:0 BC:1 CA:1 |
Smoothing: 26 |
Face 307: A:153 B:165 C:166 AB:1 BC:1 CA:0 |
Smoothing: 26 |
Face 308: A:154 B:167 C:155 AB:0 BC:1 CA:1 |
Smoothing: 27 |
Face 309: A:154 B:166 C:167 AB:1 BC:1 CA:0 |
Page 13 |
Smoothing: 27 |
Face 310: A:155 B:156 C:144 AB:0 BC:1 CA:1 |
Smoothing: 28 |
Face 311: A:155 B:167 C:156 AB:1 BC:1 CA:0 |
Smoothing: 28 |
Face 312: A:156 B:1 C:157 AB:0 BC:1 CA:1 |
Smoothing: 29 |
Face 313: A:156 B:0 C:1 AB:1 BC:1 CA:0 |
Smoothing: 29 |
Face 314: A:157 B:2 C:158 AB:0 BC:1 CA:1 |
Smoothing: 30 |
Face 315: A:157 B:1 C:2 AB:1 BC:1 CA:0 |
Smoothing: 30 |
Face 316: A:158 B:3 C:159 AB:0 BC:1 CA:1 |
Smoothing: 31 |
Face 317: A:158 B:2 C:3 AB:1 BC:1 CA:0 |
Smoothing: 31 |
Face 318: A:159 B:4 C:160 AB:0 BC:1 CA:1 |
Smoothing: 32 |
Face 319: A:159 B:3 C:4 AB:1 BC:1 CA:0 |
Smoothing: 32 |
Face 320: A:160 B:5 C:161 AB:0 BC:1 CA:1 |
Smoothing: 1 |
Face 321: A:160 B:4 C:5 AB:1 BC:1 CA:0 |
Smoothing: 1 |
Face 322: A:161 B:6 C:162 AB:0 BC:1 CA:1 |
Smoothing: 2 |
Face 323: A:161 B:5 C:6 AB:1 BC:1 CA:0 |
Smoothing: 2 |
Face 324: A:162 B:7 C:163 AB:0 BC:1 CA:1 |
Smoothing: 3 |
Face 325: A:162 B:6 C:7 AB:1 BC:1 CA:0 |
Smoothing: 3 |
Face 326: A:163 B:8 C:164 AB:0 BC:1 CA:1 |
Smoothing: 4 |
Face 327: A:163 B:7 C:8 AB:1 BC:1 CA:0 |
Smoothing: 4 |
Face 328: A:164 B:9 C:165 AB:0 BC:1 CA:1 |
Smoothing: 5 |
Face 329: A:164 B:8 C:9 AB:1 BC:1 CA:0 |
Smoothing: 5 |
Face 330: A:165 B:10 C:166 AB:0 BC:1 CA:1 |
Smoothing: 6 |
Face 331: A:165 B:9 C:10 AB:1 BC:1 CA:0 |
Smoothing: 6 |
Face 332: A:166 B:11 C:167 AB:0 BC:1 CA:1 |
Smoothing: 7 |
Face 333: A:166 B:10 C:11 AB:1 BC:1 CA:0 |
Smoothing: 7 |
Face 334: A:167 B:0 C:156 AB:0 BC:1 CA:1 |
Smoothing: 8 |
Face 335: A:167 B:11 C:0 AB:1 BC:1 CA:0 |
Smoothing: 8 |
Page 14 |
/programs/demos/view3ds/asc_objects/box.asc |
---|
0,0 → 1,38 |
Ambient light color: Red=0.3 Green=0.3 Blue=0.3 |
Named Object: "Box01" |
Tri-mesh, Vertices: 8 Faces: 12 |
Vertex list: |
Vertex 0: X: -34.615379 Y: -21.005919 Z: 0.000000 |
Vertex 1: X: 42.899406 Y: -21.005919 Z: 0.000000 |
Vertex 2: X: -34.615379 Y: 54.142014 Z: 0.000000 |
Vertex 3: X: 42.899406 Y: 54.142014 Z: 0.000000 |
Vertex 4: X: -34.615379 Y: -21.005919 Z: 66.272186 |
Vertex 5: X: 42.899406 Y: -21.005919 Z: 66.272186 |
Vertex 6: X: -34.615379 Y: 54.142014 Z: 66.272186 |
Vertex 7: X: 42.899406 Y: 54.142014 Z: 66.272186 |
Face list: |
Face 0: A: 0 B: 2 C: 3 AB:1 BC:1 CA:1 |
Material:"r0g0b255a255" |
Face 1: A: 3 B: 1 C: 0 AB:1 BC:1 CA:1 |
Material:"r0g0b255a255" |
Face 2: A: 4 B: 5 C: 7 AB:1 BC:1 CA:1 |
Material:"r0g0b255a255" |
Face 3: A: 7 B: 6 C: 4 AB:1 BC:1 CA:1 |
Material:"r0g0b255a255" |
Face 4: A: 0 B: 1 C: 5 AB:1 BC:1 CA:1 |
Material:"r0g0b255a255" |
Face 5: A: 5 B: 4 C: 0 AB:1 BC:1 CA:1 |
Material:"r0g0b255a255" |
Face 6: A: 1 B: 3 C: 7 AB:1 BC:1 CA:1 |
Material:"r0g0b255a255" |
Face 7: A: 7 B: 5 C: 1 AB:1 BC:1 CA:1 |
Material:"r0g0b255a255" |
Face 8: A: 3 B: 2 C: 6 AB:1 BC:1 CA:1 |
Material:"r0g0b255a255" |
Face 9: A: 6 B: 7 C: 3 AB:1 BC:1 CA:1 |
Material:"r0g0b255a255" |
Face 10: A: 2 B: 0 C: 4 AB:1 BC:1 CA:1 |
Material:"r0g0b255a255" |
Face 11: A: 4 B: 6 C: 2 AB:1 BC:1 CA:1 |
Material:"r0g0b255a255" |
/programs/demos/view3ds/b_procs.inc |
---|
0,0 → 1,1336 |
;init_envmap_cub2: |
; mov esi,envmap |
; mov edi,envmap_cub ;take cubic env. map from |
; xor eax,eax ;spherical env. map |
; @@: |
; add esi,eax |
; movsd |
; dec edi |
; dec esi |
; add esi,511*3 |
; add eax,3 |
; cmp eax,511*3 |
; jl @b |
;ret |
init_envmap_cub: ; create 512x512 env map |
.temp equ word [ebp-2] |
push ebp |
mov ebp,esp |
sub esp,2 |
mov edi,envmap_cub |
fninit |
mov cx,-256 |
.ie_hor: |
mov .temp,cx |
fild .temp |
fabs |
; fmul st,st0 |
; fsqrt |
mov .temp,255 |
fisubr .temp |
fmul [env_const] |
fistp .temp |
mov ax,.temp |
or ax,ax |
jge .ie_ok1 |
xor ax,ax |
jmp .ie_ok2 |
.ie_ok1: |
cmp ax,255 |
jle .ie_ok2 |
mov ax,255 |
.ie_ok2: |
stosb |
stosb |
stosb |
inc cx |
cmp cx,256 |
jne .ie_hor |
mov esp,ebp |
pop ebp |
ret |
calc_one_col: |
; procedure don't save registers !!! |
; in - st - dot_product |
; stack - other parameters |
; out - eax - 0x00rrggbb |
.dot_prd equ dword[ebp+4] ; dot product - cos x - not now |
.min_col_r equ [ebp+8] ; minimum color - ambient |
.min_col_g equ word[ebp+10] |
.min_col_b equ word[ebp+12] |
.max_col_r equ [ebp+14] ; maximum color - specular |
.max_col_g equ word[ebp+16] |
.max_col_b equ word[ebp+18] |
.org_col_r equ [ebp+20] ; orginal color - diffuse |
.org_col_g equ word[ebp+22] |
.org_col_b equ word[ebp+24] |
.n equ word[ebp+26] ; shines - not implemented |
.temp equ word[ebp-2] |
.color_sum_r equ [ebp-6] |
.color_sum_g equ [ebp-10] |
.color_sum_b equ [ebp-14] |
; color = ambient+cos(x)*diffuse+(cos(x)^n)*specular |
mov ebp,esp |
sub esp,14 |
mov ax,.min_col_r |
add ax,.max_col_r |
add ax,.org_col_r |
cwde |
mov .color_sum_r,eax |
mov ax,.min_col_g |
add ax,.max_col_g |
add ax,.org_col_g |
cwde |
mov .color_sum_g,eax |
mov ax,.min_col_b |
add ax,.max_col_b |
add ax,.org_col_b |
cwde |
mov .color_sum_b,eax |
if 0 |
movq xmm0,.min_col_r |
movq xmm1,.max_col_r |
movq xmm2,.org_col_r |
packuswb xmm0,[the_zero] |
packuswb xmm1,[the_zero] |
packuswb xmm2,[the_zero] |
punpcklbw xmm0,xmm1 |
punpcklbw xmm2,[the_zero] |
packusdw xmm2,[the_zero] |
cvtdq2ps xmm0,xmm0 |
cvtdq2ps xmm1,xmm1 |
cvtdq2ps xmm2,xmm2 |
haddps xmm0,xmm0 |
haddps xmm1,xmm1 |
haddps xmm2,xmm2 |
haddps xmm0,xmm0 |
haddps xmm1,xmm1 |
haddps xmm2,xmm2 |
cvtss2si eax,xmm0 |
cvtss2si ebx,xmm1 |
cvtss2si ecx,xmm2 |
mov .color_sum_r,eax |
mov .color_sum_g,ebx |
mov .color_sum_b,ecx |
end if |
; fld .dot_prd |
; fild .n |
; fxch st1 |
; fabs |
; fyl2x ; |
; f2xm1 |
; fld1 |
; faddp ; st = dot_product ^ n |
fld st ; copy dot pr |
fmul st,st0 |
fmul st,st0 |
fmul st,st0 |
cmp .n,255 ; .n = 255 -> spot light |
jne @f |
fmul st,st0 |
fmul st,st0 |
fmul st,st0 |
@@: |
fld st ; st0=st1=dot_pr^n, st2=dot_pr |
fimul .max_col_b |
fild .org_col_b |
fmul st,st3 |
faddp ; st0=first piece of col, st1=dot_pr^n.. |
fiadd .min_col_b |
fimul .max_col_b |
fidiv dword .color_sum_b |
fistp .temp |
movzx eax,.temp |
shl eax,16 |
fld st |
fimul .max_col_g |
fild .org_col_g |
fmul st,st3 |
faddp |
fiadd .min_col_g |
fimul .max_col_g |
fidiv dword .color_sum_g |
fistp .temp |
mov ax,.temp |
mov ah,al |
shl eax,8 |
fimul word .max_col_r |
fild word .org_col_r |
fmulp st2,st |
faddp |
fiadd word .min_col_r |
fimul word .max_col_r |
fidiv dword .color_sum_r |
fistp .temp |
mov ax,.temp ;eax - 0xbbgg00rr |
; mov ah,al |
ror eax,16 |
xchg al,ah ; eax - 0x00rrggbb |
mov esp,ebp |
ret 24 |
calc_bumpmap: ; calculate random bumpmap |
;--------------in edi _ pointer to TEX_X x TEX_Y bumpmap |
push edi |
cmp [bumps_flag],0 |
je .random_bump_map |
; else bumps according to texture |
mov esi,texmap |
mov ecx,TEXTURE_SIZE |
@@: |
movzx ax,byte[esi] |
movzx bx,byte[esi+1] |
movzx dx,byte[esi+2] |
add ax,bx |
add ax,dx |
cwd |
div [i3] |
stosb |
add esi,3 |
loop @b |
jmp .blur_map |
; push ecx |
; mov eax,0x88888888 |
; mov ecx,16/4 |
; rep stosd |
; mov eax,0xffffffff |
; mov ecx,16/4 |
; rep stosd |
; pop ecx |
; loop @b |
.random_bump_map: |
mov ecx,TEXTURE_SIZE |
@@: |
push ecx |
xor ecx,ecx |
mov edx,255 |
call random |
stosb |
pop ecx |
loop @b |
.blur_map: |
pop edi |
movzx ecx,[bumps_deep_flag] |
inc cx |
.blur: |
xor esi,esi |
mov edx,TEXTURE_SIZE |
xor eax,eax |
xor ebx,ebx |
@@: |
mov ebp,esi |
dec ebp |
and ebp,TEXTURE_SIZE |
mov al,byte[ebp+edi] |
mov ebp,esi |
inc ebp |
and ebp,TEXTURE_SIZE |
mov bl,byte[ebp+edi] |
add eax,ebx |
mov ebp,esi |
sub ebp,TEX_X |
and ebp,TEXTURE_SIZE |
mov bl,byte[ebp+edi] |
add eax,ebx |
mov ebp,esi |
add ebp,TEX_X |
and ebp,TEXTURE_SIZE |
mov bl,byte[ebp+edi] |
add eax,ebx |
shr eax,2 |
mov byte[esi+edi],al |
inc esi |
dec edx |
jnz @b |
loop .blur |
ret |
random: |
; in - ecx - min |
; edx - max |
; out - eax - random number |
mov bx,[rand_seed] |
add bx,0x9248 |
ror bx,3 |
mov [rand_seed],bx |
mov ax,dx |
sub ax,cx |
mul bx |
mov ax,dx |
add ax,cx |
cwde |
ret |
optimize_object1: ; setting point (0,0,0) in center of object |
; recalculate all coords , scale object, |
;the coords in <-1.0,1.0> |
;in : real_points - table filled of real float dd coordinates (x,y,z), end mark dd -1 |
; _ global variable |
; points_count_var - dw integer variable with exactly points count |
; - global variable |
; SIZE_X, SIZE_Y must be defined |
.max equ dword[ebp-4] |
.min equ dword[ebp-8] |
.maxxx equ dword[ebp-12] |
.center equ dword[ebp-16] |
mov ebp,esp |
sub esp,16 |
fninit |
mov .maxxx,0 |
mov ecx,3 |
xor ebx,ebx ; ebx - x,y,z coord in real_points list |
.next_c: ; max/min/center x,y,z |
mov edi,[points_ptr] ; in real_point list minimum two points |
mov edx,[points_count_var] |
fld dword[edi+ebx] |
fst .max |
fstp .min |
add edi,12 |
dec edx |
.next_coord: ; next coord from real_points list |
fld dword [edi+ebx] ; real_points -> x,y,z |
fcom .max ; max_x,y,z |
fstsw ax |
sahf |
jbe @f ; jmp less equal |
fstp .max ; new max_x,y,z |
jmp .end_coords |
@@: |
fcom .min ; min_x,y,z |
fstsw ax |
sahf |
jnbe @f ; jmp greater |
fst .min ; new min_x |
@@: |
ffree st |
.end_coords: |
add edi,12 |
; cmp dword[edi],-1 ; cmp with end mark |
dec edx |
jnz .next_coord |
; ok after this we found max_coord and min_coord |
fld .max ; find center point |
fadd .min |
fld1 |
fld1 |
faddp |
fdivp st1,st ; st0 - center coord |
fstp .center |
fld .max |
fsub .center ; st = .max - .center |
fcom .maxxx ; maximum of all .max |
fstsw ax |
sahf |
jbe @f ; jmp lower |
fst .maxxx ; new maxx |
@@: |
ffree st |
mov edi,[points_ptr] |
mov edx,[points_count_var] ; substraction all coords - center point |
@@: |
fld dword[edi+ebx] |
fsub .center |
fstp dword[edi+ebx] |
add edi,12 |
; cmp dword[edi],-1 |
; jne @b |
dec edx |
jnz @b |
add ebx,4 ; ebx - x,y,z cooficientes in list real_points |
dec ecx |
jnz .next_c |
fld .maxxx |
mov edi,[points_ptr] ; create all coords in <-1.0,1.0> |
mov ecx,[points_count_var] |
@@: |
fld dword[edi] |
fdiv .maxxx |
fstp dword[edi] |
fld dword[edi+4] |
fdiv .maxxx |
fstp dword[edi+4] |
fld dword[edi+8] |
fdiv .maxxx |
fstp dword[edi+8] |
add edi,12 |
loop @b |
; cmp dword[edi],-1 |
; jne @b |
mov esp,ebp |
ret |
generate_object: ; generate node |
.N equ 32 |
.x equ word[ebp-2] |
.Ndiv2 equ word[ebp-10] |
.MthickSqr equ dword[ebp-14] ; diameter^2 |
.temp equ dword[ebp-18] ; variable for x <-1;1> |
.Hthick equ dword[ebp-22] |
.cos_temp equ dword[ebp-26] |
.next_const equ dword[ebp-30] |
.a equ dword[ebp-34] |
.Pi2 equ ebp-38 |
mov ebp,esp |
sub esp,42 |
mov .Ndiv2,.N/2 |
fninit |
fldpi |
fadd st,st |
fst dword[.Pi2] |
fidiv .Ndiv2 |
fst .a ; .Ndiv2*.a=2Pi => .a=2pi/.Ndiv2 |
fld [.Mthick] ; inside diameter, (outside daiameter = 1) |
fmul st,st0 |
fstp .MthickSqr |
fld1 |
fsub [.Mthick] |
fst .Hthick ; Hthick = 1 - Mthick |
fld st |
fadd st,st |
faddp |
fstp .next_const ; next_const = Hthick * 3 |
;init triangles list |
mov edi,[triangles_ptr] |
xor esi,esi |
xor eax,eax |
mov ebx,.N+1 |
mov ecx,(.N*2)+2 ;-- |
mov edx,(.N*3)+3 ;--- |
mov [triangles_count_var],0 |
.again_tri: |
stosd ; main wave |
mov dword[edi],ebx |
inc eax |
add edi,4 |
stosd |
stosd |
mov dword[edi],ebx |
inc ebx |
mov dword[edi+4],ebx |
add edi,8 |
mov dword[edi],ecx ;---- ; n2+2 ; xor ax,ax |
inc ecx ; n2+3 ; mov bx,.N+1 |
mov dword[edi+4],edx ; ; mov cx,(.N*2)+2 ;-- |
mov dword[edi+8],ecx ; n3+3 ; mov dx,(.N*3)+3 ;--- |
mov dword[edi+12],edx ; n3+3 ; |
inc edx ; ; |
mov dword[edi+16],edx ; n2+3 ; |
mov dword[edi+20],ecx ; n3+4 |
add edi,24 ;---- |
dec eax ; border of wave |
dec ebx |
dec ecx |
dec edx |
stosd ; first border |
inc eax |
stosd |
mov dword[edi],edx |
add edi,4 |
mov dword[edi],edx |
add edi,4 |
stosd |
inc edx |
mov dword[edi],edx |
mov dword[edi+4],ebx ; second border |
mov dword[edi+8],ecx |
inc ebx |
mov dword[edi+12],ebx |
mov dword[edi+16],ebx |
mov dword[edi+20],ecx |
inc ecx |
mov dword[edi+24],ecx |
add edi,28 |
add [triangles_count_var],8 ;10 |
inc esi |
cmp esi,.N |
jne .again_tri |
add eax,((.N+1)*3)+1 |
add ebx,((.N+1)*3)+1 |
add ecx,((.N+1)*3)+1 |
add edx,((.N+1)*3)+1 |
xor esi,esi |
cmp eax,(.N*13)+13 ;;;(.N*23)+23 ; ax,(.N*13)+13 |
jl .again_tri |
; mov dword[edi],-1 ; <--- end mark not always in use |
; init real points list |
mov .x,-(.N/2) |
mov edi,[points_ptr] |
lea esi,[edi+(12*(.N+1))] |
mov eax,[points_ptr] |
mov ebx,eax |
add eax,2*12*(.N+1) ;--- |
add ebx,3*12*(.N+1) ;--- |
mov [points_count_var],0 |
.R_P4 equ edi+(4*12*(.N+1)) |
.R_P5 equ edi+(5*12*(.N+1)) |
.R_P6 equ edi+(6*12*(.N+1)) |
.R_P7 equ edi+(7*12*(.N+1)) |
.R_P8 equ edi+(8*12*(.N+1)) |
.R_P9 equ edi+(9*12*(.N+1)) |
.R_P10 equ edi+(10*12*(.N+1)) |
.R_P11 equ edi+(11*12*(.N+1)) |
.R_P12 equ edi+(12*12*(.N+1)) |
.R_P13 equ edi+(13*12*(.N+1)) |
.R_P14 equ edi+(14*12*(.N+1)) |
.R_P15 equ edi+(15*12*(.N+1)) |
@@: |
; x coordinate |
fild .x |
fld st |
;; fmul .a ; st = <-2pi;2pi> when mul .a |
fidiv .Ndiv2 |
fst .temp ; temporary x in <-1.0;1.0> |
fst dword[edi] ;x coordinate of point |
fst dword[esi] |
fst dword[eax] ;-- |
fst dword[.R_P4] |
fst dword[.R_P5] |
fst dword[.R_P6] |
fst dword[.R_P7] |
fst dword[.R_P8] |
fst dword[.R_P9] |
fst dword[.R_P10] |
fst dword[.R_P11] |
fst dword[.R_P12] |
fst dword[.R_P13] |
fst dword[.R_P14] |
fst dword[.R_P15] |
fstp dword[ebx] ;pop |
;*******y coord dword[offset + 4] |
fmul .a ; st = <-2pi;2pi> |
fsincos |
fmul .next_const |
fst dword[edi+4] ; y coordinate of point |
fst dword[esi+4] |
fst dword[.R_P4+4] |
fst dword[.R_P5+4] |
fld .Hthick |
faddp |
fst dword[.R_P6+4] |
fst dword[.R_P7+4] |
fst dword[eax+4] |
fst dword[ebx+4] |
fchs |
fst dword[.R_P10+4] |
fst dword[.R_P11+4] |
fst dword[.R_P14+4] |
fst dword[.R_P15+4] |
fadd .Hthick |
fadd .Hthick |
fst dword[.R_P8+4] |
fst dword[.R_P9+4] |
fst dword[.R_P12+4] |
fstp dword[.R_P13+4] |
fmul .Hthick |
fmul .next_const |
fstp .cos_temp ; cos_temp = Hthick^2 * 3 |
;***************z coord |
fld .temp |
fld st |
fmul st,st0 ; z coords |
fchs |
fld1 |
faddp |
fabs |
fsqrt |
; fld st |
; fsub |
fld st |
fsub .cos_temp |
fst dword[esi+8] |
fstp dword[eax+8] ;-- |
fld st |
fadd .cos_temp |
fst dword[.R_P9+8] |
fstp dword[.R_P10+8] |
fchs |
fld st |
fsub .cos_temp |
fst dword[.R_P6+8] |
fstp dword[.R_P5+8] |
fadd .cos_temp |
fst dword[.R_P13+8] |
fstp dword[.R_P14+8] |
fmul [.Mthick] |
fmul st,st0 |
fchs |
fld .MthickSqr |
faddp |
fabs |
fsqrt |
fld st |
fsub .cos_temp |
fst dword[edi+8] ; z coordinate |
fstp dword[ebx+8] ;-- |
fld st |
fadd .cos_temp |
fst dword[.R_P8+8] |
fstp dword[.R_P11+8] |
fchs |
fld st |
fsub .cos_temp |
fst dword[.R_P7+8] |
fstp dword[.R_P4+8] |
fadd .cos_temp |
fst dword[.R_P12+8] |
fstp dword[.R_P15+8] |
add edi,12 |
add esi,12 |
add eax,12 ;-- |
add ebx,12 ;--- |
add [points_count_var],24 ;16 |
inc .x |
cmp .x,.N/2 |
jng @b |
; mov dword[esi],-1 ; <-- end mark |
mov [culling_flag],0 |
mov esp,ebp |
ret |
.Mthick dd 0.85 ; size-thickness |
make_random_lights: |
.temp1 equ ebp-4 |
.temp2 equ ebp-8 ; - light vector generate variables |
.temp3 equ ebp-12 |
.max equ 800 |
RDTSC |
mov [rand_seed],ax |
push ebp |
mov ebp,esp |
sub esp,12 |
mov edi,lights |
fninit |
mov dword[.temp2],.max |
mov dword[.temp3],.max/2 |
.again: |
xor esi,esi |
@@: |
mov edx,.max |
xor ecx,ecx |
call random |
sub eax,.max/2 |
mov dword[.temp1],eax |
fild dword[.temp1] |
fidiv dword[.temp3] |
fstp dword[edi+esi*4] |
inc esi |
cmp esi,2 |
jne @b |
.max1 equ 1000 |
mov dword[.temp2],.max1/2 |
mov edx,.max1 |
xor ecx,ecx |
call random |
mov dword[.temp1],eax |
fild dword[.temp1] |
fchs |
fidiv dword[.temp2] |
fstp dword[edi+8] |
xor esi,esi |
@@: |
mov ecx,220 ; max colors and shine , ecx = 200 - more bright shading |
mov edx,255 |
call random |
mov byte[edi+18+esi],al |
inc esi |
cmp esi,4 |
jne @b |
xor esi,esi |
@@: |
mov ecx,100 ; orginal colors |
movzx edx,byte[edi+18+esi] |
call random |
mov byte[edi+12+esi],al |
inc esi |
cmp esi,3 |
jne @b |
xor esi,esi |
@@: |
mov ecx,1 ; min cols |
movzx edx,byte[edi+12+esi] |
call random |
mov byte[edi+15+esi],al |
inc esi |
cmp esi,3 |
jne @b |
add edi,LIGHT_SIZE ;22 |
cmp edi,lightsend ; see file View3ds,asm |
jne .again |
mov esp,ebp |
pop ebp |
ret |
generate_texture2: |
.const equ 32 |
mov edi,texmap |
xor bx,bx |
.next_line: |
xor dx,dx |
.next2stripes: |
mov eax,-1 |
mov ecx,(TEX_X/.const)*3/4 |
rep stosd |
mov eax,0x00ff0000 |
mov ecx,(TEX_X/.const) |
@@: |
stosd |
dec edi |
loop @b |
inc dx |
cmp dx,.const/2 |
jl .next2stripes |
inc bx |
cmp bx,TEX_Y |
jl .next_line |
ret |
blur_screen: ;blur n times ; blur or fire |
;in - ecx times count |
;.counter equ dword[esp-4] |
.counter1 equ dword[esp-8] |
if Ext>=SSE2 |
push ebp |
mov ebp,esp |
push dword 0x01010101 |
movss xmm5,[esp] |
shufps xmm5,xmm5,0 |
.again_blur: |
push ecx |
mov edi,[screen_ptr] |
movzx ecx,word[size_x_var] ;SIZE_X*3/4 |
cmp [dr_flag],12 |
jge @f |
lea ecx,[ecx*3+1] |
shr ecx,2 |
@@: |
xor eax,eax |
rep stosd |
if 1 |
movzx ebx,word[size_x_var] |
movzx ecx,word[size_y_var] |
sub ecx,3 |
imul ecx,ebx |
cmp [dr_flag],12 ; 32 bit per pix cause |
jge @f |
lea ecx,[ecx*3] |
shr ecx,4 |
lea ebx,[ebx *3] |
jmp .blr |
@@: |
shr ecx,2 |
shl ebx,2 |
; mov ecx,(SIZE_X*(SIZE_Y-3))*3/16 |
.blr: |
@@: |
push ecx |
movups xmm0,[edi+ebx] |
mov ecx,edi |
sub ecx,ebx |
movups xmm1,[ecx] |
cmp [dr_flag],12 |
jge @f |
movups xmm2,[edi-3] |
movups xmm3,[edi+3] |
jmp .f |
@@: |
movups xmm2,[edi-4] |
movups xmm3,[edi+4] |
.f: |
pavgb xmm0,xmm1 |
pavgb xmm2,xmm3 |
pavgb xmm0,xmm2 |
psubusb xmm0,xmm5 ; importand if fire |
movups [edi],xmm0 |
add edi,16 |
add esi,16 |
pop ecx |
loop .blr |
end if |
xor eax,eax |
movzx ecx,word[size_x_var] |
cmp [dr_flag],12 |
jge @f |
lea ecx,[ecx*3] |
shr ecx,2 |
@@: |
; mov ecx,SIZE_X*3/4 |
rep stosd |
pop ecx |
dec ecx |
jnz .again_blur |
mov esp,ebp |
pop ebp |
end if |
if Ext=SSE |
emms |
push ebp |
mov ebp,esp |
push dword 0x01010101 |
push dword 0x01010101 |
movq mm4,[esp] |
.again_blur: |
push ecx |
mov edi,[screen_ptr] |
movzx ecx,word[size_x_var] ;SIZE_X*3/4 |
lea ecx,[ecx*3] |
shr ecx,2 |
; pxor mm5,mm5 |
xor eax,eax |
rep stosd |
movzx ebx,word[size_x_var] |
movzx ecx,word[size_y_var] |
sub ecx,3 |
imul ecx,ebx |
lea ecx,[ecx*3] |
shr ecx,3 |
lea ebx,[ebx*3] |
; mov ecx,(SIZE_X*(SIZE_Y-3))*3/8 |
.blr: |
@@: |
movq mm0,[edi+ebx] |
movq mm1,[edi-ebx] |
movq mm2,[edi-3] |
movq mm3,[edi+3] |
pavgb mm0,mm1 |
pavgb mm2,mm3 |
pavgb mm0,mm2 |
psubusb mm0,mm4 ; importand if fire |
movq [edi],mm0 |
add edi,8 |
add esi,8 |
loop .blr |
xor eax,eax |
mov ecx,[size_x_var] |
lea ecx,[ecx*3] |
shr ecx,2 |
; SIZE_X*3/4 |
rep stosd |
pop ecx |
loop .again_blur |
mov esp,ebp |
pop ebp |
end if |
if Ext=MMX |
emms |
push ebp |
mov ebp,esp |
push dword 0x0 |
push dword 0x01010101 |
.again_blur: |
push ecx |
mov edi,[screen_ptr] |
mov ecx,SIZE_X*3/4 |
pxor mm5,mm5 |
xor eax,eax |
rep stosd |
mov ecx,(SIZE_X*(SIZE_Y-3))*3/4 |
.blr: |
@@: |
movd mm0,[edi+SIZE_X*3] |
movd mm1,[edi-SIZE_X*3] |
movd mm2,[edi-3] |
movd mm3,[edi+3] |
punpcklbw mm0,mm5 |
punpcklbw mm1,mm5 |
punpcklbw mm2,mm5 |
punpcklbw mm3,mm5 |
paddw mm0,mm1 |
paddw mm0,mm2 |
paddw mm0,mm3 |
psrlw mm0,2 |
packuswb mm0,mm5 |
psubusb mm0,qword[esp] ; importand if fire |
movd eax,mm0 |
stosd |
loop .blr |
xor eax,eax |
mov ecx,SIZE_X*3/4 |
rep stosd |
pop ecx |
loop .again_blur |
mov esp,ebp |
pop ebp |
end if |
if Ext=NON |
.blur: |
push ecx |
xor ecx,ecx |
.next_col_coof: |
xor esi,esi |
xor eax,eax |
xor ebx,ebx |
mov edi,SIZE_X*SIZE_Y |
.next: |
mov ebp,esi |
dec ebp |
cmp ebp,SIZE_X*SIZE_Y-1 ; clipping |
jl @f |
mov ebp,SIZE_X*SIZE_Y-1 |
@@: |
or ebp,ebp |
jg @f |
xor ebp,ebp |
@@: |
lea edx,[ebp*3+screen] |
mov al,byte[edx+ecx] |
mov ebp,esi |
inc ebp |
cmp ebp,SIZE_X*SIZE_Y-1 ; clipping |
jl @f |
mov ebp,SIZE_X*SIZE_Y-1 |
@@: |
or ebp,ebp |
jg @f |
xor ebp,ebp |
@@: |
lea edx,[ebp*3+screen] |
mov bl,byte[edx+ecx] |
add eax,ebx |
mov ebp,esi |
sub ebp,SIZE_X |
cmp ebp,SIZE_X*SIZE_Y-1 ; clipping |
jl @f |
mov ebp,SIZE_X*SIZE_Y-1 |
@@: |
or ebp,ebp |
jg @f |
xor ebp,ebp |
@@: |
lea edx,[ebp*3+screen] |
mov bl,byte[edx+ecx] |
add eax,ebx |
mov ebp,esi |
add ebp,SIZE_X |
cmp ebp,SIZE_X*SIZE_Y-1 ; clipping |
jl @f |
mov ebp,SIZE_X*SIZE_Y-1 |
@@: |
or ebp,ebp |
jg @f |
xor ebp,ebp |
@@: |
lea edx,[ebp*3+screen] |
mov bl,byte[edx+ecx] |
add eax,ebx |
shr eax,2 |
lea edx,[esi*3+screen] |
or al,al |
jz @f |
dec al ; not importand if fire |
mov byte[edx+ecx],al |
@@: |
inc esi |
dec edi |
jnz .next |
inc ecx |
cmp ecx,3 |
jne .next_col_coof |
pop ecx |
dec ecx |
jnz .blur |
end if |
ret |
mirror: ; mirror effect - loseless operation |
; in ah - button id = 11, 12, 13 |
mov edi,[points_ptr] ; one real point - triple float |
mov esi,[points_normals_ptr] ; one 3dvector - triple float dword x,y,z |
fninit |
mov ecx,[points_count_var] |
cmp ah,11 |
je @f |
cmp ah,12 |
je .yn |
cmp ah,13 |
je .zn |
@@: ; neg x |
fld dword[edi] ;x |
fchs |
fstp dword[edi] ;x |
fld dword[esi] |
fchs |
fstp dword[esi] |
add edi,12 |
add esi,12 |
loop @b |
ret |
.yn: |
fld dword[edi+4] ;y |
fchs |
fstp dword[edi+4] ;y |
fld dword[esi+4] |
fchs |
fstp dword[esi+4] |
add edi,12 |
add esi,12 |
loop .yn |
ret |
.zn: |
fld dword[edi+8] ;z |
fchs |
fstp dword[edi+8] ;z |
fld dword[esi+8] |
fchs |
fstp dword[esi+8] |
add edi,12 |
add esi,12 |
loop .zn |
ret |
exchange: ; exchange some coords - loseless operation |
mov edi,[points_ptr] ; one real point - triple float |
mov esi,[points_normals_ptr] ; one 3dvector - triple float dword x,y,z |
fninit ; exchange both points and normal vactors coords/coofics |
mov ecx,[points_count_var] |
cmp [xchg_flag],1 |
je @f |
cmp [xchg_flag],2 |
je .zx |
cmp [xchg_flag],3 |
je .yz |
@@: |
fld dword[edi] ;x |
fld dword[edi+4] ;y |
fstp dword[edi] ;x |
fstp dword[edi+4] ;y |
fld dword[esi] ;x |
fld dword[esi+4] ;y |
fstp dword[esi] ;x |
fstp dword[esi+4] ;y |
add esi,12 |
add edi,12 |
loop @b |
ret |
.zx: |
fld dword[edi] ;x |
fld dword[edi+8] ;z |
fstp dword[edi] ;x |
fstp dword[edi+8] ;z |
fld dword[esi] ;x |
fld dword[esi+8] ;y |
fstp dword[esi] ;x |
fstp dword[esi+8] ;y |
add esi,12 |
add edi,12 |
loop .zx |
ret |
.yz: |
fld dword[edi+8] ;z |
fld dword[edi+4] ;y |
fstp dword[edi+8] ;z |
fstp dword[edi+4] ;y |
fld dword[esi+8] ;x |
fld dword[esi+4] ;y |
fstp dword[esi+8] ;x |
fstp dword[esi+4] ;y |
add edi,12 |
add esi,12 |
loop .yz |
ret |
;#\\\\\\\\\\\\\\\\\\\\\\\\\comented/////////////////////////////// |
if 0 |
calc_attenuation_light: ;; calculate point to spot_light distance |
; spot light with attenuation ;; and vector, normalize vector, |
;; calc dot_pr and unlinear color according |
;; to dot_product, write to color buff |
.distance equ dword[ebp-4] ;; color buff in bumpmap for save the mem |
.temp_col equ word[ebp-6] |
.vector equ [ebp-20] |
.spot_light_ptr equ dword [ebp-24] |
mov ebp,esp |
sub esp,24 |
mov edi,rotated_points_r ;points_rotated |
mov edx,point_normals_rotated |
mov ecx,bumpmap ; mem area with temp points color list |
xor ax,ax ; counter |
mov esi,spot_light_params |
mov .spot_light_ptr,esi |
.again_color: |
push eax |
lea ebx,.vector |
mov esi,.spot_light_ptr ; calc vector fom light to every point |
call make_vector_r |
; ebx - ptr to result vector |
fld dword [ebx] |
fmul st, st |
fld dword [ebx+4] |
fmul st, st |
fld dword [ebx+8] |
fmul st, st |
faddp st1, st |
faddp st1, st |
fsqrt |
fstp .distance |
push edi |
mov edi,ebx |
call normalize_vector |
; edi - normalized distance vector |
mov esi,edx |
call dot_product ; esi first vector, edi second vector |
; st0 - dot product |
fabs ; why not ? - think about it |
pop edi |
fldz |
fcomip st1 |
jbe @f ; st1>0 |
mov dword[ecx],0 |
mov word[ecx+4],0 |
add ecx,6 |
ffree st0 |
jmp .update_counters |
@@: |
; pop edi |
; calc color(with atenuation), write to buff |
; buff - color of points list |
; color = ambient+cos(x)*diffuse+(cos(x)^n)*specular |
push edx |
push edi |
push ecx |
push ebp |
; mov eax,spot_light_params |
mov eax,.spot_light_ptr |
movzx dx,byte[eax+15] |
push dx ; shines |
movzx dx,byte[eax+8] ; b |
push dx ; orginal col |
movzx dx,byte[eax+7] ; g |
push dx |
movzx dx,byte[eax+6] ; r |
push dx |
movzx dx,byte[eax+14] ; max col |
push dx |
movzx dx,byte[eax+13] |
push dx |
movzx dx,byte[eax+12] |
push dx |
movzx dx,byte[eax+11] ; min col |
push dx |
movzx dx,byte[eax+10] |
push dx |
movzx dx,byte[eax+9] |
push dx |
push eax ; dot pr. (in st0) |
call calc_one_col |
; eax - 0x00rrggbb |
; brightness = 1 - (distance/light.fadezero)^fogness |
; if brightness < 0, then brightness = 0 |
; attenuetion equation taken from 3dica tutorial - 1/d^2 isn't perfect |
; color = color * brightness ; fogness = <0.5,2.0> |
pop ebp |
pop ecx |
fld .distance |
mov esi,.spot_light_ptr |
; fidiv word[spot_light_params+16] ; fadezero |
fidiv word[esi+16] ; fadezero |
; fmul st,st0 ; fogness = 2 |
fabs ; to be sure |
fchs |
fld1 |
faddp |
fld1 |
fcomip st1 |
jnbe @f |
ffree st0 |
fld1 |
@@: |
fld st ; st - brightness |
ror eax,16 |
movzx bx,al ; al - r |
mov .temp_col,bx |
fimul .temp_col |
fistp word[ecx] |
cmp word[ecx],0 |
jge @f |
mov word[ecx],0 |
@@: |
; mov edx,dword[spot_light_params+12] ; max colors |
mov edx,dword[esi+12] ; max colors |
movzx bx,dl ; r max |
cmp word[ecx],bx ; choose the brightest for r, g, b |
jl @f |
mov word[ecx],bx |
@@: |
add ecx,2 |
fld st |
ror eax,16 |
movzx bx,ah ; g |
mov .temp_col,bx |
fimul .temp_col |
fistp word[ecx] |
cmp word[ecx],0 |
jg @f |
mov word[ecx],0 |
@@: |
movzx bx,dh ; g max |
cmp word[ecx],bx |
jle @f |
mov word[ecx],bx |
@@: |
add ecx,2 |
movzx bx,al ; b |
mov .temp_col,bx |
fimul .temp_col |
fistp word[ecx] |
cmp word[ecx],0 |
jg @f |
mov word[ecx],0 |
@@: |
shr edx,16 |
movzx bx,dl ; b max |
cmp word[ecx],bx |
jle @f |
mov word[ecx],bx |
@@: |
add ecx,2 |
;end if |
; ror eax,16 |
; movzx bx,al |
; mov word[ecx],bx |
; ror eax,16 |
; movzx bx,ah |
; mov word[ecx+2],bx |
; xor ah,ah |
; mov word[ecx+4],ax |
; add ecx,6 |
pop edi |
pop edx |
.update_counters: |
add edx,12 ; normal_size |
add edi,12 ;6 ; 3d point_coord_size |
pop eax |
inc ax |
cmp ax,[points_count_var] |
jne .again_color |
add .spot_light_ptr,18 |
cmp .spot_light_ptr,spot_l_end |
jl .again_color |
mov esp,ebp |
ret |
end if |
;#\\\\\\\\\\\\\\\\\\\\\\\\\comented//////////////////////////////////// |
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |
/programs/demos/view3ds/bump_cat.inc |
---|
0,0 → 1,1132 |
;SIZE_X equ 350 |
;SIZE_Y equ 350 |
ROUND equ 8 |
;TEX_X equ 512 |
;TEX_Y equ 512 |
;TEXTURE_SIZE EQU (512*512)-1 |
;TEX_SHIFT EQU 9 |
CATMULL_SHIFT equ 8 |
;TEXTURE_SIZE EQU (TEX_X * TEX_Y)-1 |
;Ext = NON |
;MMX = 1 |
;NON = 0 |
;------- Big thanks to Majuma (www.majuma.xt.pl) for absolutely great--- |
;------- DOS 13h mode demos -------------------------------------------- |
;------- Procedure draws bump triangle using Catmull Z-buffer algorithm- |
;------- (Z coordinate interpolation)----------------------------------- |
bump_triangle_z: |
;------------------in - eax - x1 shl 16 + y1 ----------- |
;---------------------- ebx - x2 shl 16 + y2 ----------- |
;---------------------- ecx - x3 shl 16 + y3 ----------- |
;---------------------- edx - pointer to bump map ------ |
;---------------------- esi - pointer to environment map |
;---------------------- edi - pointer to screen buffer-- |
;---------------------- stack : bump coordinates-------- |
;---------------------- environment coordinates- |
;---------------------- Z position coordinates-- |
;---------------------- pointer io Z buffer----- |
;-- Z-buffer - filled with coordinates as dword -------- |
;-- (Z coor. as word) shl CATMULL_SHIFT ---------------- |
.b_x1 equ ebp+4 ; procedure don't save registers !!! |
.b_y1 equ ebp+6 ; each coordinate as word |
.b_x2 equ ebp+8 |
.b_y2 equ ebp+10 |
.b_x3 equ ebp+12 |
.b_y3 equ ebp+14 |
.e_x1 equ ebp+16 |
.e_y1 equ ebp+18 |
.e_x2 equ ebp+20 |
.e_y2 equ ebp+22 |
.e_x3 equ ebp+24 |
.e_y3 equ ebp+26 |
.z1 equ word[ebp+28] |
.z2 equ word[ebp+30] |
.z3 equ word[ebp+32] |
.z_buff equ dword[ebp+34] ; pointer to Z-buffer |
.t_bmap equ dword[ebp-4] ; pointer to bump map |
.t_emap equ dword[ebp-8] ; pointer to e. map |
.x1 equ word[ebp-10] |
.y1 equ word[ebp-12] |
.x2 equ word[ebp-14] |
.y2 equ word[ebp-16] |
.x3 equ word[ebp-18] |
.y3 equ word[ebp-20] |
.dx12 equ dword[ebp-24] |
.dz12 equ [ebp-28] |
.dbx12 equ dword[ebp-32] |
.dby12 equ [ebp-36] |
.dex12 equ dword[ebp-40] |
.dey12 equ [ebp-44] |
.dx13 equ dword[ebp-48] |
.dz13 equ [ebp-52] |
.dbx13 equ dword[ebp-56] |
.dby13 equ [ebp-60] |
.dex13 equ dword[ebp-64] |
.dey13 equ [ebp-68] |
.dx23 equ dword[ebp-72] |
.dz23 equ [ebp-76] |
.dbx23 equ dword[ebp-80] |
.dby23 equ [ebp-84] |
.dex23 equ dword[ebp-88] |
.dey23 equ [ebp-92] |
.cx1 equ dword[ebp-96] ; current variables |
.cz1 equ [ebp-100] |
.cx2 equ dword[ebp-104] |
.cz2 equ [ebp-108] |
.cbx1 equ dword[ebp-112] |
.cby1 equ [ebp-116] |
.cex1 equ dword[ebp-120] |
.cey1 equ [ebp-124] |
.cbx2 equ dword[ebp-128] |
.cby2 equ [ebp-132] |
.cex2 equ dword[ebp-136] |
.cey2 equ [ebp-140] |
mov ebp,esp |
push edx ; store bump map |
push esi ; store e. map |
; sub esp,120 |
.sort3: ; sort triangle coordinates... |
cmp ax,bx |
jle .sort1 |
xchg eax,ebx |
mov edx,dword[.b_x1] |
xchg edx,dword[.b_x2] |
mov dword[.b_x1],edx |
mov edx,dword[.e_x1] |
xchg edx,dword[.e_x2] |
mov dword[.e_x1],edx |
mov dx,.z1 |
xchg dx,.z2 |
mov .z1,dx |
.sort1: |
cmp bx,cx |
jle .sort2 |
xchg ebx,ecx |
mov edx,dword[.b_x2] |
xchg edx,dword[.b_x3] |
mov dword[.b_x2],edx |
mov edx,dword[.e_x2] |
xchg edx,dword[.e_x3] |
mov dword[.e_x2],edx |
mov dx,.z2 |
xchg dx,.z3 |
mov .z2,dx |
jmp .sort3 |
.sort2: |
push eax ; store triangle coords in variables |
push ebx |
push ecx |
mov edx,80008000h ; eax,ebx,ecx are ANDd together into edx which means that |
and edx,ebx ; if *all* of them are negative a sign flag is raised |
and edx,ecx |
and edx,eax |
test edx,80008000h ; Check both X&Y at once |
jne .loop23_done |
; mov edx,eax ; eax,ebx,ecx are ORd together into edx which means that |
; or edx,ebx ; if any *one* of them is negative a sign flag is raised |
; or edx,ecx |
; test edx,80000000h ; Check only X |
; jne .loop23_done |
; cmp .x1,SIZE_X ; { |
; jg .loop23_done |
; cmp .x2,SIZE_X ; This can be optimized with effort |
; jg .loop23_done |
; cmp .x3,SIZE_X |
; jg .loop23_done ; { |
mov bx,.y2 ; calc delta 12 |
sub bx,.y1 |
jnz .bt_dx12_make |
mov ecx,6 |
xor edx,edx |
@@: |
push edx ;dword 0 |
loop @b |
jmp .bt_dx12_done |
.bt_dx12_make: |
mov ax,.x2 |
sub ax,.x1 |
cwde |
movsx ebx,bx |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dx12,eax |
push eax |
mov ax,.z2 |
sub ax,.z1 |
cwde |
shl eax,CATMULL_SHIFT |
cdq |
idiv ebx |
push eax |
if Ext>=SSE |
sub esp,16 |
cvtsi2ss xmm3,ebx ;rcps |
; mov eax,255 |
cvtsi2ss xmm4,[i255d] |
divss xmm3,xmm4 |
rcpss xmm3,xmm3 |
; mulss xmm3,xmm4 |
shufps xmm3,xmm3,0 |
movd mm0,[.b_x1] |
movd mm1,[.b_x2] |
movd mm2,[.e_x1] |
movd mm3,[.e_x2] |
pxor mm4,mm4 |
punpcklwd mm0,mm4 |
punpcklwd mm1,mm4 |
punpcklwd mm2,mm4 |
punpcklwd mm3,mm4 |
psubd mm1,mm0 |
psubd mm3,mm2 |
; cvtpi2ps xmm0,mm0 |
; movlhps xmm0,xmm0 |
; cvtpi2ps xmm0,mm2 |
cvtpi2ps xmm1,mm1 |
movlhps xmm1,xmm1 |
cvtpi2ps xmm1,mm3 |
; subps xmm1,xmm0 |
; cvtpi2ps xmm0,mm3 |
; divps xmm1,xmm3 |
mulps xmm1,xmm3 |
shufps xmm1,xmm1,10110001b |
cvtps2pi mm0,xmm1 ; mm0 -> 2 delta dwords |
movhlps xmm1,xmm1 |
cvtps2pi mm1,xmm1 |
movq .dey12,mm0 |
movq .dby12,mm1 |
else |
mov ax,word[.b_x2] |
sub ax,word[.b_x1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dbx12,eax |
push eax |
mov ax,word[.b_y2] |
sub ax,word[.b_y1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dby12,eax |
push eax |
mov ax,word[.e_x2] |
sub ax,word[.e_x1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dex12,eax |
push eax |
mov ax,word[.e_y2] |
sub ax,word[.e_y1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dey12,eax |
push eax |
end if |
.bt_dx12_done: |
mov bx,.y3 ; calc delta13 |
sub bx,.y1 |
jnz .bt_dx13_make |
mov ecx,6 |
xor edx,edx |
@@: |
push edx ;dword 0 |
loop @b |
jmp .bt_dx13_done |
.bt_dx13_make: |
mov ax,.x3 |
sub ax,.x1 |
cwde |
movsx ebx,bx |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dx13,eax |
push eax |
mov ax,.z3 |
sub ax,.z1 |
cwde |
shl eax,CATMULL_SHIFT |
cdq |
idiv ebx |
; mov .dz13,eax |
push eax |
if Ext>=SSE |
sub esp,16 |
cvtsi2ss xmm3,ebx ;rcps |
; mov eax,255 |
cvtsi2ss xmm4,[i255d] |
divss xmm3,xmm4 |
rcpss xmm3,xmm3 |
; mulss xmm3,xmm4 |
shufps xmm3,xmm3,0 |
movd mm0,[.b_x1] |
movd mm1,[.b_x3] |
movd mm2,[.e_x1] |
movd mm3,[.e_x3] |
pxor mm4,mm4 |
punpcklwd mm0,mm4 |
punpcklwd mm1,mm4 |
punpcklwd mm2,mm4 |
punpcklwd mm3,mm4 |
psubd mm1,mm0 |
psubd mm3,mm2 |
; cvtpi2ps xmm0,mm0 |
; movlhps xmm0,xmm0 |
; cvtpi2ps xmm0,mm2 |
cvtpi2ps xmm1,mm1 |
movlhps xmm1,xmm1 |
cvtpi2ps xmm1,mm3 |
; subps xmm1,xmm0 |
; cvtpi2ps xmm0,mm3 |
; divps xmm1,xmm3 |
mulps xmm1,xmm3 |
shufps xmm1,xmm1,10110001b |
cvtps2pi mm0,xmm1 ; mm0 -> 2 delta dwords |
movhlps xmm1,xmm1 |
cvtps2pi mm1,xmm1 |
movq .dey13,mm0 |
movq .dby13,mm1 |
else |
mov ax,word[.b_x3] |
sub ax,word[.b_x1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dbx13,eax |
push eax |
mov ax,word[.b_y3] |
sub ax,word[.b_y1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dby13,eax |
push eax |
mov ax,word[.e_x3] |
sub ax,word[.e_x1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dex13,eax |
push eax |
mov ax,word[.e_y3] |
sub ax,word[.e_y1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dey13,eax |
push eax |
end if |
.bt_dx13_done: |
mov bx,.y3 ; calc delta23 |
sub bx,.y2 |
jnz .bt_dx23_make |
mov ecx,6 |
xor edx,edx |
@@: |
push edx ;dword 0 |
loop @b |
jmp .bt_dx23_done |
.bt_dx23_make: |
mov ax,.x3 |
sub ax,.x2 |
cwde |
movsx ebx,bx |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dx23,eax |
push eax |
mov ax,.z3 |
sub ax,.z2 |
cwde |
shl eax,CATMULL_SHIFT |
cdq |
idiv ebx |
; mov .dz23,eax |
push eax |
; sub esp,40 |
if Ext>=SSE |
sub esp,16 |
cvtsi2ss xmm3,ebx ;rcps |
; mov eax,255 |
cvtsi2ss xmm4,[i255d] |
divss xmm3,xmm4 |
rcpss xmm3,xmm3 |
; mulss xmm3,xmm4 |
shufps xmm3,xmm3,0 |
movd mm0,[.b_x2] |
movd mm1,[.b_x3] |
movd mm2,[.e_x2] |
movd mm3,[.e_x3] |
pxor mm4,mm4 |
punpcklwd mm0,mm4 |
punpcklwd mm1,mm4 |
punpcklwd mm2,mm4 |
punpcklwd mm3,mm4 |
psubd mm1,mm0 |
psubd mm3,mm2 |
; cvtpi2ps xmm0,mm0 |
; movlhps xmm0,xmm0 |
; cvtpi2ps xmm0,mm2 |
cvtpi2ps xmm1,mm1 |
movlhps xmm1,xmm1 |
cvtpi2ps xmm1,mm3 |
; subps xmm1,xmm0 |
; cvtpi2ps xmm0,mm3 |
; divps xmm1,xmm3 |
mulps xmm1,xmm3 |
shufps xmm1,xmm1,10110001b |
cvtps2pi mm0,xmm1 ; mm0 -> 2 delta dwords |
movhlps xmm1,xmm1 |
cvtps2pi mm1,xmm1 |
movq .dey23,mm0 |
movq .dby23,mm1 |
else |
mov ax,word[.b_x3] |
sub ax,word[.b_x2] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dbx23,eax |
push eax |
mov ax,word[.b_y3] |
sub ax,word[.b_y2] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dby23,eax |
push eax |
mov ax,word[.e_x3] |
sub ax,word[.e_x2] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dex23,eax |
push eax |
mov ax,word[.e_y3] |
sub ax,word[.e_y2] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dey23,eax |
push eax |
end if |
.bt_dx23_done: |
sub esp,48 |
movsx eax,.x1 |
shl eax,ROUND |
mov .cx1,eax |
mov .cx2,eax |
; push eax |
; push eax |
movsx eax,word[.b_x1] |
shl eax,ROUND |
mov .cbx1,eax |
mov .cbx2,eax |
; push eax |
; push eax |
movsx eax,word[.b_y1] |
shl eax,ROUND |
mov .cby1,eax |
mov .cby2,eax |
; push eax |
; push eax |
movsx eax,word[.e_x1] |
shl eax,ROUND |
mov .cex1,eax |
mov .cex2,eax |
; push eax |
; push eax |
movsx eax,word[.e_y1] |
shl eax,ROUND |
mov .cey1,eax |
mov .cey2,eax |
; push eax |
; push eax |
movsx eax,.z1 |
shl eax,CATMULL_SHIFT |
mov .cz1,eax |
mov .cz2,eax |
; push eax |
; push eax |
movsx ecx,.y1 |
cmp cx,.y2 |
jge .loop12_done |
.loop12: |
call .call_bump_line |
if Ext >= SSE2 |
movups xmm0,.cey2 |
movups xmm1,.cey1 |
movups xmm2,.dey12 |
movups xmm3,.dey13 |
paddd xmm0,xmm2 |
paddd xmm1,xmm3 |
movups .cey2,xmm0 |
movups .cey1,xmm1 |
movq mm4,.cz1 |
movq mm5,.cz2 |
paddd mm4,.dz13 |
paddd mm5,.dz12 |
movq .cz1,mm4 |
movq .cz2,mm5 |
end if |
if (Ext = MMX) | (Ext = SSE) |
movq mm0,.cby2 |
movq mm1,.cby1 |
movq mm2,.cey2 |
movq mm3,.cey1 |
movq mm4,.cz1 |
movq mm5,.cz2 |
paddd mm0,.dby12 |
paddd mm1,.dby13 |
paddd mm2,.dey12 |
paddd mm3,.dey13 |
paddd mm4,.dz13 |
paddd mm5,.dz12 |
movq .cby2,mm0 |
movq .cby1,mm1 |
movq .cey1,mm3 |
movq .cey2,mm2 |
movq .cz1,mm4 |
movq .cz2,mm5 |
else if Ext = NON |
mov edx,.dbx13 |
add .cbx1,edx |
mov eax,.dbx12 |
add .cbx2,eax |
mov ebx,.dby13 |
add .cby1,ebx |
mov edx,.dby12 |
add .cby2,edx |
mov eax,.dex13 |
add .cex1,eax |
mov ebx,.dex12 |
add .cex2,ebx |
mov edx,.dey13 |
add .cey1,edx |
mov eax,.dey12 |
add .cey2,eax |
mov eax,.dx13 |
add .cx1,eax |
mov ebx,.dx12 |
add .cx2,ebx |
mov ebx,.dz13 |
add .cz1,ebx |
mov edx,.dz12 |
add .cz2,edx |
end if |
inc ecx |
cmp cx,.y2 |
jl .loop12 |
.loop12_done: |
movsx ecx,.y2 |
cmp cx,.y3 |
jge .loop23_done |
movsx eax,.z2 |
shl eax,CATMULL_SHIFT |
mov .cz2,eax |
movsx eax,.x2 |
shl eax,ROUND |
mov .cx2,eax |
movzx eax,word[.b_x2] |
shl eax,ROUND |
mov .cbx2,eax |
movzx eax,word[.b_y2] |
shl eax,ROUND |
mov .cby2,eax |
movzx eax,word[.e_x2] |
shl eax,ROUND |
mov .cex2,eax |
movzx eax,word[.e_y2] |
shl eax,ROUND |
mov .cey2,eax |
.loop23: |
call .call_bump_line |
if Ext >= SSE2 |
movups xmm0,.cey2 |
movups xmm1,.cey1 |
movups xmm2,.dey23 |
movups xmm3,.dey13 |
paddd xmm0,xmm2 |
paddd xmm1,xmm3 |
movups .cey2,xmm0 |
movups .cey1,xmm1 |
movq mm4,.cz1 |
movq mm5,.cz2 |
paddd mm4,.dz13 |
paddd mm5,.dz23 |
movq .cz1,mm4 |
movq .cz2,mm5 |
end if |
if (Ext = MMX) | (Ext = SSE) |
movq mm0,.cby2 |
movq mm1,.cby1 |
movq mm2,.cey2 |
movq mm3,.cey1 |
movq mm4,.cz1 |
movq mm5,.cz2 |
paddd mm0,.dby23 |
paddd mm1,.dby13 |
paddd mm2,.dey23 |
paddd mm3,.dey13 |
paddd mm4,.dz13 |
paddd mm5,.dz23 |
movq .cby2,mm0 |
movq .cby1,mm1 |
movq .cey1,mm3 |
movq .cey2,mm2 |
movq .cz1,mm4 |
movq .cz2,mm5 |
else if Ext = NON |
mov eax,.dx13 |
add .cx1,eax |
mov ebx,.dx23 |
add .cx2,ebx |
mov edx,.dbx13 |
add .cbx1,edx |
mov eax,.dbx23 |
add .cbx2,eax |
mov ebx,.dby13 |
add .cby1,ebx |
mov edx,.dby23 |
add .cby2,edx |
mov eax,.dex13 |
add .cex1,eax |
mov ebx,.dex23 |
add .cex2,ebx |
mov edx,.dey13 |
add .cey1,edx |
mov eax,.dey23 |
add .cey2,eax |
mov ebx,.dz13 |
add .cz1,ebx |
mov edx,.dz23 |
add .cz2,edx |
end if |
inc ecx |
cmp cx,.y3 |
jl .loop23 |
.loop23_done: |
mov esp,ebp |
ret 34 |
.call_bump_line: |
; push ebp |
; push ecx |
pushad |
push dword .cz1 |
push dword .cz2 |
push .z_buff |
push .t_emap |
push .t_bmap |
push dword .cey2 |
push .cex2 |
push dword .cby2 |
push .cbx2 |
push dword .cey1 |
push .cex1 |
push dword .cby1 |
push .cbx1 |
push ecx |
mov eax,.cx1 |
sar eax,ROUND |
mov ebx,.cx2 |
sar ebx,ROUND |
call bump_line_z |
popad |
ret |
bump_line_z: |
;--------------in: eax - x1 |
;-------------- ebx - x2 |
;-------------- edi - pointer to screen buffer |
;stack - another parameters : |
.y equ dword [ebp+4] |
.bx1 equ [ebp+8] ; --- |
.by1 equ dword [ebp+12] ; | |
.ex1 equ [ebp+16] ; | |
.ey1 equ dword [ebp+20] ; |> bump and env coords |
.bx2 equ [ebp+24] ; |> shifted shl ROUND |
.by2 equ dword [ebp+28] ; | |
.ex2 equ [ebp+32] ; | |
.ey2 equ dword [ebp+36] ; --- |
.bmap equ dword [ebp+40] |
.emap equ dword [ebp+44] |
.z_buff equ dword [ebp+48] |
.z2 equ dword [ebp+52] ; -- |> z coords shifted |
.z1 equ dword [ebp+56] ; -- shl CATMULL_SHIFT |
.x1 equ dword [ebp-4] |
.x2 equ dword [ebp-8] |
.dbx equ dword [ebp-12] |
.dby equ [ebp-16] |
.dex equ dword [ebp-20] |
.dey equ [ebp-24] |
.dz equ dword [ebp-28] |
.cbx equ dword [ebp-32] |
.cby equ [ebp-36] |
.cex equ dword [ebp-40] |
.cey equ [ebp-44] |
.cz equ dword [ebp-48] |
.czbuff equ dword [ebp-52] |
.temp1 equ ebp-60 |
.temp2 equ ebp-68 |
.temp3 equ ebp-76 |
.temp4 equ ebp-84 |
.temp5 equ ebp-92 |
mov ebp,esp |
mov ecx,.y |
or ecx,ecx |
jl .bl_end |
; mov dx,[size_x_var] |
; dec dx |
cmp cx,[size_y_var] ;SIZE_Y |
jge .bl_end |
cmp eax,ebx |
jl .bl_ok |
je .bl_end |
xchg eax,ebx |
if Ext=NON |
mov edx,.bx1 |
xchg edx,.bx2 |
mov .bx1,edx |
mov edx,.by1 |
xchg edx,.by2 |
mov .by1,edx |
mov edx,.ex1 |
xchg edx,.ex2 |
mov .ex1,edx |
mov edx,.ey1 |
xchg edx,.ey2 |
mov .ey1,edx |
end if |
if Ext = MMX |
movq mm0,.bx1 |
movq mm1,.ex1 |
movq mm2,.bx2 |
movq mm3,.ex2 |
movq .bx2,mm0 |
movq .ex2,mm1 |
movq .bx1,mm2 |
movq .ex1,mm3 |
end if |
if Ext >= SSE |
movups xmm0,.bx1 |
movups xmm1,.bx2 |
movups .bx2,xmm0 |
movups .bx1,xmm1 |
end if |
mov edx,.z1 |
xchg edx,.z2 |
mov .z1,edx |
.bl_ok: |
push eax |
push ebx ;store x1, x2 |
movzx edx,word[size_x_var] |
dec edx |
cmp .x1,edx ;SIZE_X |
jge .bl_end |
cmp .x2,0 |
jle .bl_end |
mov ebx,.x2 |
sub ebx,.x1 |
if Ext >= SSE |
sub esp,16 |
cvtsi2ss xmm3,ebx ;rcps |
shufps xmm3,xmm3,0 |
cvtpi2ps xmm0,.bx1 ;mm0 |
movlhps xmm0,xmm0 |
cvtpi2ps xmm0,.ex1 ;mm2 |
cvtpi2ps xmm1,.bx2 ;mm1 |
movlhps xmm1,xmm1 |
cvtpi2ps xmm1,.ex2 ;mm3 |
subps xmm1,xmm0 |
divps xmm1,xmm3 |
shufps xmm1,xmm1,10110001b |
cvtps2pi mm0,xmm1 ; mm0 -> 2 delta dwords |
movhlps xmm1,xmm1 |
cvtps2pi mm1,xmm1 |
movq .dey,mm0 |
movq .dby,mm1 |
else |
mov eax,.bx2 ; calc .dbx |
sub eax,.bx1 |
cdq |
idiv ebx |
push eax |
mov eax,.by2 ; calc .dby |
sub eax,.by1 |
cdq |
idiv ebx |
push eax |
mov eax,.ex2 ; calc .dex |
sub eax,.ex1 |
cdq |
idiv ebx |
push eax |
mov eax,.ey2 ; calc .dey |
sub eax,.ey1 |
cdq |
idiv ebx |
push eax |
end if |
mov eax,.z2 ; calc .dz |
sub eax,.z1 |
cdq |
idiv ebx |
push eax |
cmp .x1,0 ; set correctly begin variable |
jge @f ; CLIPPING ON FUNCTION |
; cutting triangle exceedes screen |
mov ebx,.x1 |
neg ebx |
imul ebx ; eax = .dz * abs(.x1) |
add .z1,eax |
mov .x1,0 |
mov eax,.dbx |
imul ebx |
add .bx1,eax |
mov eax,.dby |
imul ebx |
add .by1,eax |
mov eax,.dex |
imul ebx |
add .ex1,eax |
mov eax,.dey |
imul ebx |
add .ey1,eax |
@@: |
movzx edx,word[size_x_var] |
dec edx |
cmp .x2,edx ;SIZE_X |
jl @f |
mov .x2,edx ;SIZE_X |
@@: |
movzx eax,word[size_x_var] ;SIZE_X ;calc memory begin in buffers |
mov ebx,.y |
mul ebx |
mov ebx,.x1 |
add eax,ebx |
mov ebx,eax |
lea eax,[eax*3] |
add edi,eax |
mov esi,.z_buff ; z-buffer filled with dd variables |
shl ebx,2 |
add esi,ebx |
mov ecx,.x2 |
sub ecx,.x1 |
; init current variables |
push dword .bx1 |
push .by1 |
push dword .ex1 |
push .ey1 |
push .z1 ; current z shl CATMULL_SHIFT |
push esi |
;if Ext = SSE2 |
; movups xmm1,.dey |
;end if |
if Ext>=MMX |
movq mm0,.cby |
movq mm1,.cey |
movq mm2,.dby |
movq mm3,.dey |
end if |
if Ext >= SSE2 |
mov eax,TEXTURE_SIZE |
movd xmm1,eax |
shufps xmm1,xmm1,0 |
push dword TEX_X |
push dword -TEX_X |
push dword 1 |
push dword -1 |
movups xmm2,[esp] |
movd xmm3,.bmap |
shufps xmm3,xmm3,0 |
end if |
;align 16 |
.draw: |
; if TEX = SHIFTING ;bump drawing only in shifting mode |
mov esi,.czbuff ; .czbuff current address in buffer |
mov ebx,.cz ; .cz - cur z position |
cmp ebx,dword[esi] |
jge .skip |
if Ext>=MMX |
movq mm6,mm0 |
psrld mm6,ROUND |
movd eax,mm6 |
psrlq mm6,32 |
movd esi,mm6 |
else |
mov eax,.cby |
sar eax,ROUND |
mov esi,.cbx |
sar esi,ROUND |
end if |
shl eax,TEX_SHIFT ;- |
add esi,eax ;- ; esi - current bump map index |
if Ext = SSE2 |
movd xmm0,esi |
shufps xmm0,xmm0,0 |
paddd xmm0,xmm2 |
pand xmm0,xmm1 |
paddd xmm0,xmm3 |
movd ebx,xmm0 |
movzx eax,byte[ebx] |
; |
; shufps xmm0,xmm0,11100001b |
psrldq xmm0,4 |
movd ebx,xmm0 |
movzx ebx,byte[ebx] |
sub eax,ebx |
; |
; shufps xmm0,xmm0,11111110b |
psrldq xmm0,4 |
movd ebx,xmm0 |
movzx edx, byte [ebx] |
; |
; shufps xmm0,xmm0,11111111b |
psrldq xmm0,4 |
movd ebx,xmm0 |
movzx ebx, byte [ebx] |
sub edx,ebx |
; |
else |
mov ebx,esi |
dec ebx |
and ebx,TEXTURE_SIZE |
add ebx,.bmap |
movzx eax,byte [ebx] |
mov ebx,esi |
inc ebx |
and ebx,TEXTURE_SIZE |
add ebx,.bmap |
movzx ebx,byte [ebx] |
sub eax,ebx |
mov ebx,esi |
sub ebx,TEX_X |
and ebx,TEXTURE_SIZE |
add ebx,.bmap |
movzx edx,byte [ebx] |
mov ebx,esi |
add ebx,TEX_X |
and ebx,TEXTURE_SIZE |
add ebx,.bmap |
movzx ebx,byte [ebx] |
sub edx,ebx |
end if |
; eax - horizontal sub |
; edx - vertical sub |
if Ext = NON |
mov ebx,.cex ;.cex - current env map X |
sar ebx,ROUND |
add eax,ebx ; eax - modified x coord |
mov ebx,.cey ;.cey - current env map y |
sar ebx,ROUND |
add edx,ebx ; edx - modified y coord |
else |
movq mm6,mm1 ; mm5 - copy of cur env coords |
psrld mm6,ROUND |
movd ebx,mm6 |
psrlq mm6,32 |
add eax,ebx |
movd ebx,mm6 |
add edx,ebx |
end if |
or eax,eax |
jl .black |
cmp eax,TEX_X |
jg .black |
or edx,edx |
jl .black |
cmp edx,TEX_Y |
jg .black |
shl edx,TEX_SHIFT |
add edx,eax |
lea esi,[edx*3] |
add esi,.emap |
lodsd |
jmp .put_pixel |
.black: |
xor eax,eax |
.put_pixel: |
stosd |
dec edi |
mov ebx,.cz |
mov esi,.czbuff |
mov dword[esi],ebx |
jmp .no_skip |
.skip: |
add edi,3 |
.no_skip: |
add .czbuff,4 |
;if Ext = SSE2 |
; movups xmm0,.cey |
; paddd xmm0,xmm1 |
; movups .cey,xmm0 |
; |
;end if |
if Ext >= MMX |
paddd mm0,mm2 |
paddd mm1,mm3 |
end if |
if Ext=NON |
mov eax,.dbx |
add .cbx,eax |
mov eax,.dby |
add .cby,eax |
mov eax,.dex |
add .cex,eax |
mov eax,.dey |
add .cey,eax |
end if |
mov eax,.dz |
add .cz,eax |
dec ecx |
jnz .draw |
; end if |
.bl_end: |
mov esp,ebp |
ret 56 |
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |
/programs/demos/view3ds/bump_tex.inc |
---|
0,0 → 1,1817 |
;CATMULL_SHIFT equ 8 |
;TEXTURE_SIZE EQU (TEX_X * TEX_Y)-1 |
;ROUND equ 8 |
;Ext = NON |
;MMX = 1 |
;NON = 0 |
;------- Big thanks to Majuma (www.majuma.xt.pl) for absolutely great--- |
;------- DOS 13h mode demos -------------------------------------------- |
;------- Procedure draws bump triangle with texture, I use ------------- |
;--------Catmull Z-buffer algorithm- (Z coordinate interpolation)------- |
;--------I calc texture pixel by this way: col1*col2/256 --------------- |
bump_tex_triangle_z: |
;------------------in - eax - x1 shl 16 + y1 ----------- |
;---------------------- ebx - x2 shl 16 + y2 ----------- |
;---------------------- ecx - x3 shl 16 + y3 ----------- |
;---------------------- edx - pointer to bump map------- |
;---------------------- esi - pointer to env map-------- |
;---------------------- edi - pointer to screen buffer-- |
;---------------------- stack : bump coordinates-------- |
;---------------------- environment coordinates- |
;---------------------- Z position coordinates-- |
;---------------------- pointer to Z buffer----- |
;---------------------- pointer to texture------ |
;---------------------- texture coordinates----- |
;-- Z-buffer - filled with coordinates as dword -------- |
;-- (Z coor. as word) shl CATMULL_SHIFT ---------------- |
.b_x1 equ ebp+4 ; procedure don't save registers !!! |
.b_y1 equ ebp+6 ; each coordinate as word |
.b_x2 equ ebp+8 |
.b_y2 equ ebp+10 ; b - bump map coords |
.b_x3 equ ebp+12 ; e - env map coords |
.b_y3 equ ebp+14 |
.e_x1 equ ebp+16 |
.e_y1 equ ebp+18 |
.e_x2 equ ebp+20 |
.e_y2 equ ebp+22 |
.e_x3 equ ebp+24 |
.e_y3 equ ebp+26 |
.z1 equ word[ebp+28] |
.z2 equ word[ebp+30] |
.z3 equ word[ebp+32] |
.z_buff equ dword[ebp+34] ; pointer to Z-buffer |
.tex_ptr equ dword[ebp+38] ; ptr to texture |
.t_x1 equ ebp+42 ; texture coords |
.t_y1 equ ebp+44 |
.t_x2 equ ebp+46 |
.t_y2 equ ebp+48 |
.t_x3 equ ebp+50 |
.t_y3 equ ebp+52 |
.t_bmap equ dword[ebp-4] ; pointer to bump map |
.t_emap equ dword[ebp-8] ; pointer to env map |
.x1 equ word[ebp-10] |
.y1 equ word[ebp-12] |
.x2 equ word[ebp-14] |
.y2 equ word[ebp-16] |
.x3 equ word[ebp-18] |
.y3 equ word[ebp-20] |
if 0 ;Ext <= SSE2 |
.dx12 equ dword[edi-4] |
.dz12 equ [edi-8] |
.dbx12 equ dword[edi-12] |
.dby12 equ [edi-16] |
.dex12 equ dword[edi-20] |
.dey12 equ [edi-24] |
.dtx12 equ dword[edi-28] |
.dty12 equ [edi-32] |
.dx13 equ dword[ebp-52-4*1] |
.dz13 equ [ebp-52-4*2] |
.dbx13 equ dword[ebp-52-4*3] |
.dby13 equ [ebp-52-4*4] |
.dex13 equ dword[ebp-52-4*5] |
.dey13 equ [ebp-52-4*6] |
.dtx13 equ dword[ebp-52-4*7] |
.dty13 equ [ebp-52-4*8] |
.dx23 equ dword[ebp-(52+4*9)] |
.dz23 equ [ebp-(52+4*10)] |
.dbx23 equ dword[ebp-(52+4*11)] |
.dby23 equ [ebp-(52+4*12)] |
.dex23 equ dword[ebp-(52+4*13)] |
.dey23 equ [ebp-(52+4*14)] |
.dtx23 equ dword[ebp-(52+4*15)] |
.dty23 equ [ebp-(52+4*16)] |
else |
.dx12 equ dword[ebp-24] |
.dz12 equ [ebp-28] |
.dbx12 equ dword[ebp-32] |
.dby12 equ [ebp-36] |
.dex12 equ dword[ebp-40] |
.dey12 equ [ebp-44] |
.dtx12 equ dword[ebp-48] |
.dty12 equ [ebp-52] |
.dx13 equ dword[ebp-52-4*1] |
.dz13 equ [ebp-52-4*2] |
.dbx13 equ dword[ebp-52-4*3] |
.dby13 equ [ebp-52-4*4] |
.dex13 equ dword[ebp-52-4*5] |
.dey13 equ [ebp-52-4*6] |
.dtx13 equ dword[ebp-52-4*7] |
.dty13 equ [ebp-52-4*8] |
.dx23 equ dword[ebp-(52+4*9)] |
.dz23 equ [ebp-(52+4*10)] |
.dbx23 equ dword[ebp-(52+4*11)] |
.dby23 equ [ebp-(52+4*12)] |
.dex23 equ dword[ebp-(52+4*13)] |
.dey23 equ [ebp-(52+4*14)] |
.dtx23 equ dword[ebp-(52+4*15)] |
.dty23 equ [ebp-(52+4*16)] |
end if |
if Ext < SSE |
.cx1 equ dword[ebp-(52+4*17)] ; current variables |
.cz1 equ [ebp-(52+4*18)] |
.cx2 equ dword[ebp-(52+4*19)] |
.cz2 equ [ebp-(52+4*20)] |
.cbx1 equ dword[ebp-(52+4*21)] |
.cby1 equ [ebp-(52+4*22)] |
.cbx2 equ dword[ebp-(52+4*23)] |
.cby2 equ [ebp-(52+4*24)] |
.cex1 equ dword[ebp-(52+4*25)] |
.cey1 equ [ebp-(52+4*26)] |
.cex2 equ dword[ebp-(52+4*27)] |
.cey2 equ [ebp-(52+4*28)] |
.ctx1 equ dword[ebp-(52+4*29)] |
.cty1 equ [ebp-(52+4*30)] |
.ctx2 equ dword[ebp-(52+4*31)] |
.cty2 equ [ebp-(52+4*32)] |
else |
.cx1 equ dword[ebp-(52+4*17)] ; current variables |
.cz1 equ [ebp-(52+4*18)] |
.cbx1 equ dword[ebp-(52+4*19)] |
.cby1 equ [ebp-(52+4*20)] |
.cex1 equ dword[ebp-(52+4*21)] |
.cey1 equ [ebp-(52+4*22)] |
.ctx1 equ dword[ebp-(52+4*23)] |
.cty1 equ [ebp-(52+4*24)] |
.cx2 equ dword[ebp-(52+4*25)] |
.cz2 equ [ebp-(52+4*26)] |
.cbx2 equ dword[ebp-(52+4*27)] |
.cby2 equ [ebp-(52+4*28)] |
.cex2 equ dword[ebp-(52+4*29)] |
.cey2 equ [ebp-(52+4*30)] |
.ctx2 equ dword[ebp-(52+4*31)] |
.cty2 equ [ebp-(52+4*32)] |
end if |
cld |
mov ebp,esp |
push edx ; store bump map |
push esi ; store e. map |
; sub esp,120 |
.sort3: ; sort triangle coordinates... |
cmp ax,bx |
jle .sort1 |
xchg eax,ebx |
mov edx,dword[.b_x1] |
xchg edx,dword[.b_x2] |
mov dword[.b_x1],edx |
mov edx,dword[.e_x1] |
xchg edx,dword[.e_x2] |
mov dword[.e_x1],edx |
mov edx,dword[.t_x1] |
xchg edx,dword[.t_x2] |
mov dword[.t_x1],edx |
mov dx,.z1 |
xchg dx,.z2 |
mov .z1,dx |
.sort1: |
cmp bx,cx |
jle .sort2 |
xchg ebx,ecx |
mov edx,dword[.b_x2] |
xchg edx,dword[.b_x3] |
mov dword[.b_x2],edx |
mov edx,dword[.e_x2] |
xchg edx,dword[.e_x3] |
mov dword[.e_x2],edx |
mov edx,dword[.t_x2] |
xchg edx,dword[.t_x3] |
mov dword[.t_x2],edx |
mov dx,.z2 |
xchg dx,.z3 |
mov .z2,dx |
jmp .sort3 |
.sort2: |
push eax ; store triangle coords in variables |
push ebx |
push ecx |
mov edx,80008000h ; eax,ebx,ecx are ANDd together into edx which means that |
and edx,ebx ; if *all* of them are negative a sign flag is raised |
and edx,ecx |
and edx,eax |
test edx,80008000h ; Check both X&Y at once |
jne .loop23_done |
; mov edx,eax ; eax,ebx,ecx are ORd together into edx which means that |
; or edx,ebx ; if any *one* of them is negative a sign flag is raised |
; or edx,ecx |
; test edx,80000000h ; Check only X |
; jne .loop23_done |
; cmp .x1,SIZE_X ; { |
; jg .loop23_done |
; cmp .x2,SIZE_X ; This can be optimized with effort |
; jg .loop23_done |
; cmp .x3,SIZE_X |
; jg .loop23_done ; { |
mov bx,.y2 ; calc delta 12 |
sub bx,.y1 |
jnz .bt_dx12_make |
if 0 ;Ext >= SSE2 |
pxor xmm0,xmm0 |
movups .dty12,xmm0 |
movups .dey12,xmm0 |
sub esp,16 |
else |
mov ecx,8 |
xor edx,edx |
@@: |
push edx ;dword 0 |
loop @b |
end if |
jmp .bt_dx12_done |
.bt_dx12_make: |
movsx ebx,bx |
if Ext>=SSE |
sub esp,32 |
; mov eax,256 |
cvtsi2ss xmm4,[i255d] |
cvtsi2ss xmm3,ebx ;rcps |
if 0 ;Ext >= SSE2 |
mov edi,ebp |
sub edi,512 |
or edi,0x0000000f |
end if |
divss xmm3,xmm4 |
shufps xmm3,xmm3,0 |
movd mm0,[.b_x1] |
movd mm1,[.b_x2] |
movd mm2,[.e_x1] |
movd mm3,[.e_x2] |
pxor mm4,mm4 |
punpcklwd mm0,mm4 |
punpcklwd mm1,mm4 |
punpcklwd mm2,mm4 |
punpcklwd mm3,mm4 |
psubd mm1,mm0 |
psubd mm3,mm2 |
cvtpi2ps xmm1,mm1 |
movlhps xmm1,xmm1 |
cvtpi2ps xmm1,mm3 |
divps xmm1,xmm3 ;xmm1--> | dby | dbx | dey | dex | |
shufps xmm1,xmm1,10110001b |
;xmm1--> | dbx | dby | dex | dey | |
;1 movups .dey12,xmm1 |
cvtps2pi mm0,xmm1 ;mm0,xmm1 ; mm0 -> 2 delta dwords |
movhlps xmm1,xmm1 |
cvtps2pi mm1,xmm1 ;mm1,xmm1 |
movq .dey12,mm0 |
movq .dby12,mm1 |
;------------- |
; pxor mm0,mm0 |
; pxor mm1,mm1 |
;/ pinsrw mm0,.z1,1 |
;/ pinsrw mm0,.x1,0 |
;/ pinsrw mm1,.z2,1 |
;/ pinsrw mm1,.x2,0 |
mov ax,.z2 |
sub ax,.z1 |
cwde |
mov dx,.x2 |
sub dx,.x1 |
movsx edx,dx |
;/ movd mm1,eax |
;/ punpcklwd mm0,mm4 |
;/ punpcklwd mm1,mm4 |
; cvtpi2ps xmm1,mm1 |
; cvtpi2ps xmm2,mm0 |
; subps xmm1,xmm2 |
;/ psubd mm1,mm0 |
movd mm2,[.t_x1] |
movd mm3,[.t_x2] |
punpcklwd mm2,mm4 |
punpcklwd mm3,mm4 |
psubd mm3,mm2 |
;/ cvtpi2ps xmm1,mm1 |
cvtsi2ss xmm1,eax |
movlhps xmm1,xmm1 |
cvtsi2ss xmm1,edx |
; movss xmm1,xmm4 |
shufps xmm1,xmm1,00101111b |
cvtpi2ps xmm1,mm3 |
divps xmm1,xmm3 ; xmm1--> | dx | dz | dty | dtx | |
shufps xmm1,xmm1,11100001b |
; xmm1--> | dx | dz | dtx | dty | |
;1 movlps .dty12,xmm1 |
;1 movhps .dz12,xmm1 |
cvtps2pi mm0,xmm1 ; mm0 -> 2 delta dwords | dtx | dty | |
movhlps xmm1,xmm1 |
cvtps2pi mm1,xmm1 |
movq .dty12,mm0 |
movq .dz12,mm1 |
;---- |
; mov ax,.z2 |
; sub ax,.z1 |
; cwde |
; mov bx,.x2 |
; sub bx,.x1 |
; movsx ebx,bx |
; movd mm1,eax |
; psllq mm1,32 |
; movd mm1,ebx |
;; push ebx |
;; push eax |
;; movq mm1,[esp] |
;; add esp,8 |
;;; mov ax,.z1 |
;;; mov bx,.z2 |
;;; shl eax,16 |
;;; shl ebx,16 |
;;; mov ax,.x1 |
;;; mov bx,.x2 |
; movd mm2,[.t_x1] |
; movd mm3,[.t_x2] |
;; movd mm0,eax |
;; movd mm1,ebx |
; pxor mm4,mm4 |
;; punpcklwd mm0,mm4 |
;; punpcklwd mm1,mm4 |
; punpcklwd mm2,mm4 |
; punpcklwd mm3,mm4 |
;; psubd mm1,mm0 |
; psubd mm3,mm2 |
; cvtpi2ps xmm1,mm1 |
; movlhps xmm1,xmm1 |
; cvtpi2ps xmm1,mm3 |
; divps xmm1,xmm3 ; xmm1--> | dz | dx | dty | dtx | |
; shufps xmm1,xmm1,10110001b |
; xmm1--> | dx | dz | dtx | dty | |
; cvtps2pi mm0,xmm1 ; mm0 -> 2 delta dwords | dtx | dty | |
; movhlps xmm1,xmm1 |
; cvtps2pi mm1,xmm1 ; mm1 --> 2 delta dwords | dx | dz | |
; movq .dty12,mm0 |
; movq .dz12,mm1 |
else |
mov ax,.x2 |
sub ax,.x1 |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dx12,eax |
push eax |
mov ax,.z2 |
sub ax,.z1 |
cwde |
shl eax,CATMULL_SHIFT |
cdq |
idiv ebx |
push eax |
mov ax,word[.b_x2] |
sub ax,word[.b_x1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dbx12,eax |
push eax |
mov ax,word[.b_y2] |
sub ax,word[.b_y1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dby12,eax |
push eax |
mov ax,word[.e_x2] |
sub ax,word[.e_x1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dex12,eax |
push eax |
mov ax,word[.e_y2] |
sub ax,word[.e_y1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dey12,eax |
push eax |
mov ax,word[.t_x2] |
sub ax,word[.t_x1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dtx12,eax |
push eax |
mov ax,word[.t_y2] |
sub ax,word[.t_y1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dty12,eax |
push eax |
end if |
.bt_dx12_done: |
mov bx,.y3 ; calc delta13 |
sub bx,.y1 |
jnz .bt_dx13_make |
mov ecx,8 |
xor edx,edx |
@@: |
push edx ;dword 0 |
loop @b |
jmp .bt_dx13_done |
.bt_dx13_make: |
movsx ebx,bx |
if Ext>=SSE |
sub esp,32 |
; mov eax,256 |
cvtsi2ss xmm4,[i255d] |
cvtsi2ss xmm3,ebx ;rcps |
divss xmm3,xmm4 |
shufps xmm3,xmm3,0 |
movd mm0,[.b_x1] |
movd mm1,[.b_x3] |
movd mm2,[.e_x1] |
movd mm3,[.e_x3] |
pxor mm4,mm4 |
punpcklwd mm0,mm4 |
punpcklwd mm1,mm4 |
punpcklwd mm2,mm4 |
punpcklwd mm3,mm4 |
psubd mm1,mm0 |
psubd mm3,mm2 |
cvtpi2ps xmm1,mm1 |
movlhps xmm1,xmm1 |
cvtpi2ps xmm1,mm3 |
divps xmm1,xmm3 ;xmm1--> | dby | dbx | dey | dex | |
shufps xmm1,xmm1,10110001b |
;xmm1--> | dbx | dby | dex | dey | |
;1 movups .dey13,xmm1 |
cvtps2pi mm0,xmm1 ;mm0,xmm1 ; mm0 -> 2 delta dwords |
movhlps xmm1,xmm1 |
cvtps2pi mm1,xmm1 ;mm1,xmm1 |
movq .dey13,mm0 |
movq .dby13,mm1 |
mov ax,.z3 |
sub ax,.z1 |
cwde |
mov dx,.x3 |
sub dx,.x1 |
movsx edx,dx |
movd mm2,[.t_x1] |
movd mm3,[.t_x3] |
punpcklwd mm2,mm4 |
punpcklwd mm3,mm4 |
psubd mm3,mm2 |
cvtsi2ss xmm1,eax |
movlhps xmm1,xmm1 |
cvtsi2ss xmm1,edx |
shufps xmm1,xmm1,00101111b |
cvtpi2ps xmm1,mm3 |
divps xmm1,xmm3 ; xmm1--> | dx | dz | dty | dtx | |
shufps xmm1,xmm1,11100001b |
; xmm1--> | dx | dz | dtx | dty | |
;1 movlps .dty13,xmm1 |
;1 movhps .dz13,xmm1 |
cvtps2pi mm0,xmm1 ; mm0 -> 2 delta dwords | dtx | dty | |
movhlps xmm1,xmm1 |
cvtps2pi mm1,xmm1 |
movq .dty13,mm0 |
movq .dz13,mm1 |
else |
mov ax,.x3 |
sub ax,.x1 |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dx13,eax |
push eax |
mov ax,.z3 |
sub ax,.z1 |
cwde |
shl eax,CATMULL_SHIFT |
cdq |
idiv ebx |
; mov .dz13,eax |
push eax |
mov ax,word[.b_x3] |
sub ax,word[.b_x1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dbx13,eax |
push eax |
mov ax,word[.b_y3] |
sub ax,word[.b_y1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dby13,eax |
push eax |
mov ax,word[.e_x3] |
sub ax,word[.e_x1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dex13,eax |
push eax |
mov ax,word[.e_y3] |
sub ax,word[.e_y1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dey13,eax |
push eax |
mov ax,word[.t_x3] |
sub ax,word[.t_x1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dtx13,eax |
push eax |
mov ax,word[.t_y3] |
sub ax,word[.t_y1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dty13,eax |
push eax |
end if |
.bt_dx13_done: |
mov bx,.y3 ; calc delta23 |
sub bx,.y2 |
jnz .bt_dx23_make |
mov ecx,8 |
xor edx,edx |
@@: |
push edx ;dword 0 |
loop @b |
jmp .bt_dx23_done |
.bt_dx23_make: |
movsx ebx,bx |
if Ext>=SSE |
sub esp,32 |
; mov eax,256 |
cvtsi2ss xmm4,[i255d] |
cvtsi2ss xmm3,ebx ;rcps |
divss xmm3,xmm4 |
shufps xmm3,xmm3,0 |
movd mm0,[.b_x2] |
movd mm1,[.b_x3] |
movd mm2,[.e_x2] |
movd mm3,[.e_x3] |
pxor mm4,mm4 |
punpcklwd mm0,mm4 |
punpcklwd mm1,mm4 |
punpcklwd mm2,mm4 |
punpcklwd mm3,mm4 |
psubd mm1,mm0 |
psubd mm3,mm2 |
cvtpi2ps xmm1,mm1 |
movlhps xmm1,xmm1 |
cvtpi2ps xmm1,mm3 |
divps xmm1,xmm3 ;xmm1--> | dby | dbx | dey | dex | |
shufps xmm1,xmm1,10110001b |
;xmm1--> | dbx | dby | dex | dey | |
;1 movups .dey23,xmm1 |
cvtps2pi mm0,xmm1 ;mm0,xmm1 ; mm0 -> 2 delta dwords |
movhlps xmm1,xmm1 |
cvtps2pi mm1,xmm1 ;mm1,xmm1 |
movq .dey23,mm0 |
movq .dby23,mm1 |
mov ax,.z3 |
sub ax,.z2 |
cwde |
mov dx,.x3 |
sub dx,.x2 |
movsx edx,dx |
movd mm2,[.t_x2] |
movd mm3,[.t_x3] |
punpcklwd mm2,mm4 |
punpcklwd mm3,mm4 |
psubd mm3,mm2 |
cvtsi2ss xmm1,eax |
movlhps xmm1,xmm1 |
cvtsi2ss xmm1,edx |
shufps xmm1,xmm1,00101111b |
cvtpi2ps xmm1,mm3 |
divps xmm1,xmm3 ; xmm1--> | dx | dz | dty | dtx | |
shufps xmm1,xmm1,11100001b |
; xmm1--> | dx | dz | dtx | dty | |
; movlps .dty23,xmm1 |
; movhps .dz23,xmm1 |
cvtps2pi mm0,xmm1 ; mm0 -> 2 delta dwords | dtx | dty | |
movhlps xmm1,xmm1 |
cvtps2pi mm1,xmm1 ; mm1 --> 2 delta dwords | dx | dz | |
movq .dty23,mm0 |
movq .dz23,mm1 |
else |
mov ax,.x3 |
sub ax,.x2 |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dx23,eax |
push eax |
mov ax,.z3 |
sub ax,.z2 |
cwde |
shl eax,CATMULL_SHIFT |
cdq |
idiv ebx |
; mov .dz23,eax |
push eax |
mov ax,word[.b_x3] |
sub ax,word[.b_x2] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dbx23,eax |
push eax |
mov ax,word[.b_y3] |
sub ax,word[.b_y2] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dby23,eax |
push eax |
mov ax,word[.e_x3] |
sub ax,word[.e_x2] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dex23,eax |
push eax |
mov ax,word[.e_y3] |
sub ax,word[.e_y2] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dey23,eax |
push eax |
mov ax,word[.t_x3] |
sub ax,word[.t_x2] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dtx23,eax |
push eax |
mov ax,word[.t_y3] |
sub ax,word[.t_y2] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dty23,eax |
push eax |
end if |
; sub esp,40 |
.bt_dx23_done: |
sub esp,64 |
movsx eax,.x1 |
shl eax,ROUND |
mov .cx1,eax |
mov .cx2,eax |
; push eax |
; push eax |
movsx ebx,word[.b_x1] |
shl ebx,ROUND |
mov .cbx1,ebx |
mov .cbx2,ebx |
; push ebx |
; push ebx |
movsx ecx,word[.b_y1] |
shl ecx,ROUND |
mov .cby1,ecx |
mov .cby2,ecx |
; push ecx |
; push ecx |
movsx edx,word[.e_x1] |
shl edx,ROUND |
mov .cex1,edx |
mov .cex2,edx |
; push edx |
; push edx |
movsx eax,word[.e_y1] |
shl eax,ROUND |
mov .cey1,eax |
mov .cey2,eax |
; push eax |
; push eax |
movsx ebx,.z1 |
shl ebx,CATMULL_SHIFT |
mov .cz1,ebx |
mov .cz2,ebx |
; push ebx |
; push ebx |
; sub esp,16 |
movsx ecx,word[.t_x1] |
shl ecx,ROUND |
mov .ctx1,ecx |
mov .ctx2,ecx |
;push ecx |
;push ecx |
movsx edx,word[.t_y1] |
shl edx,ROUND |
mov .cty1,edx |
mov .cty2,edx |
; push edx |
; push edx |
if Ext >= SSE2 |
movups xmm0,.cby1 |
movups xmm1,.cty1 |
movups xmm2,.cby2 |
movups xmm3,.cty2 |
movups xmm4,.dby13 |
movups xmm5,.dty13 |
movups xmm6,.dby12 |
movups xmm7,.dty12 |
.scby1 equ [edi] |
.scty1 equ [edi+16] |
.scby2 equ [edi+32] |
.scty2 equ [edi+48] |
.sdby13 equ [edi+64] |
.sdty13 equ [edi+80] |
.sdby12 equ [edi+96] |
.sdty12 equ [edi+128] |
push edi |
mov edi,sse_repository |
movaps .scby1,xmm0 |
movaps .scty1,xmm1 |
movaps .scby2,xmm2 |
movaps .scty2,xmm3 |
movaps .sdby13,xmm4 |
movaps .sdty13,xmm5 |
movaps .sdby12,xmm6 |
movaps .sdty12,xmm7 |
pop edi |
end if |
movsx ecx,.y1 |
cmp cx,.y2 |
jge .loop12_done |
.loop12: |
;if Ext >= SSE2 |
; fxsave [sse_repository] |
;end if |
call .call_line |
if Ext >= SSE2 |
; fxrstor [sse_repository] |
movups xmm0,.cby1 |
movups xmm1,.cty1 |
movups xmm2,.cby2 |
movups xmm3,.cty2 |
; movups xmm4,.dby13 |
; movups xmm5,.dty13 |
; movups xmm6,.dby12 |
; movups xmm7,.dty12 |
; paddd xmm0,xmm4 |
; paddd xmm1,xmm5 |
; paddd xmm2,xmm6 |
; paddd xmm3,xmm7 |
push edi |
mov edi,sse_repository |
paddd xmm0,.sdby13 |
paddd xmm1,.sdty13 |
paddd xmm2,.sdby12 |
paddd xmm3,.sdty12 |
pop edi |
movups .cby1,xmm0 |
movups .cty1,xmm1 |
movups .cby2,xmm2 |
movups .cty2,xmm3 |
end if |
if (Ext = MMX) | (Ext = SSE) |
movq mm0,.cby2 |
movq mm1,.cby1 |
movq mm2,.cey2 |
movq mm3,.cey1 |
movq mm4,.cty1 |
movq mm5,.cty2 |
movq mm6,.cz1 |
movq mm7,.cz2 |
paddd mm0,.dby12 |
paddd mm1,.dby13 |
paddd mm2,.dey12 |
paddd mm3,.dey13 |
paddd mm4,.dty13 |
paddd mm5,.dty12 |
paddd mm6,.dz13 |
paddd mm7,.dz12 |
movq .cby2,mm0 |
movq .cby1,mm1 |
movq .cey1,mm3 |
movq .cey2,mm2 |
movq .cty1,mm4 |
movq .cty2,mm5 |
movq .cz1,mm6 |
movq .cz2,mm7 |
end if |
if Ext = NON |
mov edx,.dbx13 |
add .cbx1,edx |
mov eax,.dbx12 |
add .cbx2,eax |
mov ebx,.dby13 |
add .cby1,ebx |
mov edx,.dby12 |
add .cby2,edx |
mov eax,.dex13 |
add .cex1,eax |
mov ebx,.dex12 |
add .cex2,ebx |
mov edx,.dey13 |
add .cey1,edx |
mov eax,.dey12 |
add .cey2,eax |
mov eax,.dtx13 |
add .ctx1,eax |
mov ebx,.dtx12 |
add .ctx2,ebx |
mov edx,.dty13 |
add .cty1,edx |
mov eax,.dty12 |
add .cty2,eax |
mov eax,.dx13 |
add .cx1,eax |
mov ebx,.dx12 |
add .cx2,ebx |
mov ebx,.dz13 |
add .cz1,ebx |
mov edx,.dz12 |
add .cz2,edx |
end if |
inc ecx |
cmp cx,.y2 |
jl .loop12 |
.loop12_done: |
movsx ecx,.y2 |
cmp cx,.y3 |
jge .loop23_done |
movsx eax,.z2 |
shl eax,CATMULL_SHIFT |
mov .cz2,eax |
movsx ebx,.x2 |
shl ebx,ROUND |
mov .cx2,ebx |
movzx edx,word[.b_x2] |
shl edx,ROUND |
mov .cbx2,edx |
movzx eax,word[.b_y2] |
shl eax,ROUND |
mov .cby2,eax |
movzx ebx,word[.e_x2] |
shl ebx,ROUND |
mov .cex2,ebx |
movzx edx,word[.e_y2] |
shl edx,ROUND |
mov .cey2,edx |
movzx eax,word[.t_x2] |
shl eax,ROUND |
mov .ctx2,eax |
movzx ebx,word[.t_y2] |
shl ebx,ROUND |
mov .cty2,ebx |
if Ext >= SSE2 |
movups xmm2,.cby2 |
movups xmm3,.cty2 |
; movups xmm4,.dby13 |
; movups xmm5,.dty13 |
movups xmm6,.dby23 |
movups xmm7,.dty23 |
; .scby1 equ [edi] |
; .scty1 equ [edi+16] |
; .scby2 equ [edi+32] |
; .scty2 equ [edi+48] |
; .sdby13 equ [edi+64] |
; .sdty13 equ [edi+80] |
.sdby23 equ [edi+160] |
.sdty23 equ [edi+192] |
push edi |
mov edi,sse_repository |
; movaps .scby1,xmm0 |
; movaps .scty1,xmm1 |
movaps .scby2,xmm2 |
movaps .scty2,xmm3 |
; movaps .sdby13,xmm4 |
; movaps .sdty13,xmm5 |
movaps .sdby23,xmm6 |
movaps .sdty23,xmm7 |
pop edi |
end if |
.loop23: |
;if Ext >= SSE2 |
; fxsave [sse_repository] |
;end if |
call .call_line |
if Ext >= SSE2 |
movups xmm0,.cby1 |
movups xmm1,.cty1 |
movups xmm2,.cby2 |
movups xmm3,.cty2 |
push edi |
mov edi,sse_repository |
paddd xmm0,.sdby13 |
paddd xmm1,.sdty13 |
paddd xmm2,.sdby23 |
paddd xmm3,.sdty23 |
pop edi |
movups .cby1,xmm0 |
movups .cty1,xmm1 |
movups .cby2,xmm2 |
movups .cty2,xmm3 |
; fxrstor [sse_repository] |
; movups xmm0,.cby1 |
; movups xmm1,.cty1 |
; movups xmm2,.cby2 |
; movups xmm3,.cty2 |
; movups xmm4,.dby13 |
; movups xmm5,.dty13 |
; movups xmm6,.dby23 |
; movups xmm7,.dty23 |
; paddd xmm0,xmm4 |
; paddd xmm1,xmm5 |
; paddd xmm2,xmm6 |
; paddd xmm3,xmm7 |
; movups .cby1,xmm0 |
; movups .cty1,xmm1 |
; movups .cby2,xmm2 |
; movups .cty2,xmm3 |
; |
end if |
if (Ext = MMX) | (Ext = SSE) |
movq mm0,.cby2 |
movq mm1,.cby1 |
movq mm2,.cey2 |
movq mm3,.cey1 |
movq mm4,.cty1 |
movq mm5,.cty2 |
movq mm6,.cz1 |
movq mm7,.cz2 |
paddd mm0,.dby23 |
paddd mm1,.dby13 |
paddd mm2,.dey23 |
paddd mm3,.dey13 |
paddd mm4,.dty13 |
paddd mm5,.dty23 |
paddd mm6,.dz13 |
paddd mm7,.dz23 |
movq .cby2,mm0 |
movq .cby1,mm1 |
movq .cey2,mm2 |
movq .cey1,mm3 |
movq .cty1,mm4 |
movq .cty2,mm5 |
movq .cz1,mm6 |
movq .cz2,mm7 |
end if |
If Ext = NON |
mov edx,.dbx13 |
add .cbx1,edx |
mov eax,.dbx23 |
add .cbx2,eax |
mov ebx,.dby13 |
add .cby1,ebx |
mov edx,.dby23 |
add .cby2,edx |
mov eax,.dex13 |
add .cex1,eax |
mov ebx,.dex23 |
add .cex2,ebx |
mov edx,.dey13 |
add .cey1,edx |
mov eax,.dey23 |
add .cey2,eax |
mov eax,.dx13 |
add .cx1,eax |
mov ebx,.dx23 |
add .cx2,ebx |
mov ebx,.dz13 |
add .cz1,ebx |
mov edx,.dz23 |
add .cz2,edx |
mov eax,.dtx13 |
add .ctx1,eax |
mov ebx,.dtx23 |
add .ctx2,ebx |
mov edx,.dty13 |
add .cty1,edx |
mov eax,.dty23 |
add .cty2,eax |
end if |
inc ecx |
cmp cx,.y3 |
jl .loop23 |
.loop23_done: |
mov esp,ebp |
ret 50 |
.call_line: |
pushad |
; xmm0= cby1,cbx1,cz1,cx1 |
; xmm1= cty1,ctx1,cey1,cex1 |
if Ext >= SSE2 |
sub esp,8 |
shufps xmm1,xmm1,10110001b |
shufps xmm3,xmm3,10110001b |
movlps [esp],xmm1 |
else |
push dword .cty1 |
push .ctx1 |
end if |
push dword .cz1 |
if Ext>=SSE2 |
sub esp,8 |
movlps [esp],xmm3 |
else |
push dword .cty2 |
push .ctx2 |
end if |
push dword .cz2 |
if Ext>=SSE2 |
sub esp,32 |
movhps [esp+24],xmm3 |
shufps xmm2,xmm2,10110001b |
movlps [esp+16],xmm2 |
movhps [esp+8],xmm1 |
shufps xmm0,xmm0,10110001b |
movlps [esp],xmm0 ;================================ |
else |
push dword .cey2 |
push .cex2 |
push dword .cby2 |
push .cbx2 |
push dword .cey1 |
push .cex1 |
push dword .cby1 |
push .cbx1 |
end if |
push .tex_ptr |
push .z_buff |
push .t_emap |
push .t_bmap |
push ecx |
mov eax,.cx1 |
sar eax,ROUND |
mov ebx,.cx2 |
sar ebx,ROUND |
call bump_tex_line_z |
popad |
;end if |
ret |
bump_tex_line_z: |
;--------------in: eax - x1 |
;-------------- ebx - x2 |
;-------------- edi - pointer to screen buffer |
;stack - another parameters : |
.y equ dword [ebp+4] |
.bmap equ dword [ebp+8] ; bump map pointer |
.emap equ dword [ebp+12] ; env map pointer |
.z_buff equ dword [ebp+16] ; z buffer |
.tex_map equ dword [ebp+20] ; texture pointer |
.bx1 equ [ebp+24] ; --- |
.by1 equ [ebp+28] ; | |
.ex1 equ [ebp+32] ; | |
.ey1 equ [ebp+36] ; | |
.bx2 equ [ebp+40] ; | |
.by2 equ [ebp+44] ; |> b. map and e. map coords |
.ex2 equ [ebp+48] ; |> shifted shl ROUND |
.ey2 equ [ebp+52] ; --- |
.z2 equ [ebp+56] |
.tx2 equ [ebp+60] |
.ty2 equ [ebp+64] |
.z1 equ [ebp+68] |
.tx1 equ [ebp+72] |
.ty1 equ [ebp+76] |
.x1 equ [ebp-4] |
.x2 equ [ebp-8] |
.dbx equ [ebp-12] |
.dby equ [ebp-16] |
.dex equ [ebp-20] |
.dey equ [ebp-24] |
.dz equ [ebp-28] |
.dtx equ [ebp-32] |
.dty equ [ebp-36] |
.cbx equ [ebp-40] |
.cby equ [ebp-44] |
.cex equ [ebp-48] |
.cey equ [ebp-52] |
.cz equ [ebp-56] |
.czbuff equ [ebp-60] |
.ctx equ [ebp-64] |
.cty equ [ebp-68] |
.c_scr equ [ebp-72] |
.temp1 equ ebp-80 |
.temp2 equ ebp-88 |
.temp3 equ ebp-76 |
.temp4 equ ebp-84 |
.temp5 equ ebp-92 |
mov ebp,esp |
mov ecx,.y |
or ecx,ecx |
jl .bl_end |
movzx edx,word[size_y_var] |
cmp ecx,edx ;SIZE_Y |
jge .bl_end |
cmp eax,ebx |
jl .bl_ok |
je .bl_end |
if Ext=NON |
mov edx,.bx1 |
xchg edx,.bx2 |
mov .bx1,edx |
mov edx,.by1 |
xchg edx,.by2 |
mov .by1,edx |
mov edx,.ex1 |
xchg edx,.ex2 |
mov .ex1,edx |
mov edx,.ey1 |
xchg edx,.ey2 |
mov .ey1,edx |
mov edx,.tx1 |
xchg edx,.tx2 |
mov .tx1,edx |
mov edx,.ty1 |
xchg edx,.ty2 |
mov .ty1,edx |
end if |
if Ext = MMX |
movq mm0,.bx1 |
movq mm1,.bx2 |
movq mm2,.ex1 |
movq mm3,.ex2 |
movq mm4,.tx1 |
movq mm5,.tx2 |
movq .bx2,mm0 |
movq .bx1,mm1 |
movq .ex1,mm3 |
movq .ex2,mm2 |
movq .tx1,mm5 |
movq .tx2,mm4 |
end if |
if Ext>=SSE |
movups xmm0,.bx1 |
movups xmm1,.bx2 |
movups .bx1,xmm1 |
movups .bx2,xmm0 |
movq mm0,.tx1 |
movq mm1,.tx2 |
movq .tx1,mm1 |
movq .tx2,mm0 |
end if |
;if Ext>=SSE2 |
; movaps xmm4,xmm0 |
; movaps xmm0,xmm2 |
; movaps xmm2,xmm4 |
; movaps xmm5,xmm1 |
; movaps xmm1,xmm3 |
; movaps xmm3,xmm5 |
;else |
xchg eax,ebx |
mov edx,.z1 |
xchg edx,.z2 |
mov .z1,edx |
;end if |
.bl_ok: |
;if Ext >= SSE2 |
; shufps xmm0,xmm0,11100001b |
; shufps xmm2,xmm2,11100001b |
; movlps .bx1,xmm0 |
; movlps .bx2,xmm2 |
; shufps xmm0,xmm0,00011011b |
; shufps xmm2,xmm2,00011011b |
; movd eax,xmm0 |
; movd ebx,xmm2 |
; shufps xmm0,xmm0,11000110b |
; shufps xmm2,xmm2,11000110b |
; movd .z1,xmm0 |
; movd .z2,xmm2 |
; shufps xmm1,xmm1,10110001b |
; shufps xmm3,xmm3,10110001b |
; movlps .ex1,xmm1 |
; movlps .ex2,xmm2 |
; movhps .tx1,xmm1 |
; movhps .tx2,xmm2 |
; xchg eax,ebx |
; mov edx,.z1 |
; xchg edx,.z2 |
; mov .z1,edx |
;end if |
push eax |
push ebx ;store x1, x2 |
movzx ebx,word[size_x_var] |
; mov eax,.x1 |
cmp dword .x1,ebx ;dword .x1,SIZE_X |
jge .bl_end |
cmp dword .x2,0 |
jle .bl_end |
mov ebx,.x2 |
sub ebx,.x1 |
if Ext>=SSE |
sub esp,28 |
cvtsi2ss xmm3,ebx ;rcps |
shufps xmm3,xmm3,0 |
; float using SSE variant ::--> |
; movups xmm0,.bx1 ; new |
; movups xmm1,.bx2 ; new |
cvtpi2ps xmm0,.bx1 ;mm0 ; variant fixed point |
movlhps xmm0,xmm0 |
cvtpi2ps xmm0,.ex1 ;mm2 |
cvtpi2ps xmm1,.bx2 ;mm1 |
movlhps xmm1,xmm1 |
cvtpi2ps xmm1,.ex2 ;mm3 |
subps xmm1,xmm0 |
divps xmm1,xmm3 |
shufps xmm1,xmm1,10110001b |
; movups .dey,xmm1 ; new |
cvtps2pi mm0,xmm1 ; mm0 -> 2 delta dwords |
movhlps xmm1,xmm1 |
cvtps2pi mm1,xmm1 |
movq .dey,mm0 |
movq .dby,mm1 |
movd mm2,.z1 |
movd mm3,.z2 |
cvtpi2ps xmm0,.tx1 ;mm0 |
movlhps xmm0,xmm0 |
cvtpi2ps xmm0,mm2 |
cvtpi2ps xmm1,.tx2 ;mm1 |
movlhps xmm1,xmm1 |
cvtpi2ps xmm1,mm3 |
; movups xmm0,,z1 ; new |
; movups xmm1,.z2 ; new |
subps xmm1,xmm0 |
divps xmm1,xmm3 |
; movups .dz,xmm1 ;new |
shufps xmm1,xmm1,10110100b |
cvtps2pi mm0,xmm1 ; mm0 -> 2 delta dwords |
movhlps xmm1,xmm1 |
cvtps2pi mm1,xmm1 |
movd .dz,mm0 |
movq .dty,mm1 |
else |
mov eax,.bx2 ; calc .dbx |
sub eax,.bx1 |
cdq |
idiv ebx |
push eax |
mov eax,.by2 ; calc .dby |
sub eax,.by1 |
cdq |
idiv ebx |
push eax |
mov eax,.ex2 ; calc .dex |
sub eax,.ex1 |
cdq |
idiv ebx |
push eax |
mov eax,.ey2 ; calc .dey |
sub eax,.ey1 |
cdq |
idiv ebx |
push eax |
mov eax,.z2 ; calc .dz |
sub eax,.z1 |
cdq |
idiv ebx |
push eax |
mov eax,.tx2 ; calc .dtx |
sub eax,.tx1 |
cdq |
idiv ebx |
push eax |
mov eax,.ty2 ; calc .dty |
sub eax,.ty1 |
cdq |
idiv ebx |
push eax |
end if |
cmp dword .x1,0 ; set correctly begin variable |
jge @f ; CLIPPING ON FUNCTION |
; cutting triangle exceedes screen |
mov ebx,.x1 |
neg ebx |
;if Ext >= SSE |
; cvtsi2ss xmm0,ebx |
; shufps xmm0,xmm0,0 |
; movups xmm1,.dey |
; mulps xmm1,xmm0 |
; shufps xmm1,xmm1,00011011b |
; movups xmm2,.bx1 |
; addps xmm2,xmm1 |
; movups .bx1,xmm2 |
mov eax,.dz |
imul ebx ; eax = .dz * abs(.x1) |
add .z1,eax |
mov dword .x1,0 |
mov eax,.dbx |
imul ebx |
add .bx1,eax |
mov eax,.dby |
imul ebx |
add .by1,eax |
mov eax,.dex |
imul ebx |
add .ex1,eax |
mov eax,.dey |
imul ebx |
add .ey1,eax |
mov eax,.dtx |
imul ebx |
add .tx1,eax |
mov eax,.dty |
imul ebx |
add .ty1,eax |
@@: |
; mov ebx,.x2 |
movzx eax,word[size_x_var] |
; cmp dword .x2,SIZE_X |
cmp dword .x2,eax ; eax,ebx |
jl @f |
mov dword .x2,eax ;SIZE_X |
@@: |
movzx eax,word[size_x_var] ;SIZE_X ;calc memory begin in buffers |
mul .y |
add eax,.x1 |
lea esi,[4*eax] |
add esi,.z_buff ; z-buffer filled with dd variables |
lea eax,[eax*3] |
add edi,eax |
mov ecx,.x2 |
sub ecx,.x1 |
; init current variables |
push dword .bx1 ; current b, e and t shifted shl ROUND .cbx |
push dword .by1 ; .cby |
push dword .ex1 ; .cex |
push dword .ey1 ; .cey |
push dword .z1 ; current z shl CATMULL_SHIFT ; .cz |
push esi ; .czbuff |
push dword .tx1 ; .ctx |
push dword .ty1 ; .cty |
push edi ; .c_scr |
if Ext = SSE2 |
mov eax,TEXTURE_SIZE |
movd xmm1,eax |
shufps xmm1,xmm1,0 |
push dword TEX_X |
push dword -TEX_X |
push dword 1 |
push dword -1 |
movups xmm2,[esp] |
movd xmm3,.bmap |
shufps xmm3,xmm3,0 |
end if |
if Ext>=MMX |
movq mm7,.cty |
movq mm6,.cby |
movq mm5,.cey |
; movq mm4,.dtyq |
; movq mm3,.dbyq |
end if |
.draw: |
; if TEX = SHIFTING ;bump drawing only in shifting mode |
mov esi,.czbuff ; .czbuff current address in buffer |
mov ebx,.cz ; .cz - cur z position |
cmp ebx,dword[esi] |
jge .skip |
if Ext=NON |
mov eax,.cby |
shr eax,ROUND |
mov esi,.cbx |
shr esi,ROUND |
else |
movq mm1,mm6 |
psrld mm1,ROUND |
movd eax,mm1 |
psrlq mm1,32 |
movd esi,mm1 |
end if |
shl eax,TEX_SHIFT |
add esi,eax ;- ; esi - current bump map index |
if Ext = SSE2 |
movd xmm0,esi |
shufps xmm0,xmm0,0 |
paddd xmm0,xmm2 |
pand xmm0,xmm1 |
paddd xmm0,xmm3 |
movd ebx,xmm0 |
movzx eax,byte[ebx] |
; |
; shufps xmm0,xmm0,11100001b |
psrldq xmm0,4 |
movd ebx,xmm0 |
movzx ebx,byte[ebx] |
sub eax,ebx |
; |
; shufps xmm0,xmm0,11111110b |
psrldq xmm0,4 |
movd ebx,xmm0 |
movzx edx, byte [ebx] |
; |
; shufps xmm0,xmm0,11111111b |
psrldq xmm0,4 |
movd ebx,xmm0 |
movzx ebx, byte [ebx] |
sub edx,ebx |
; |
else |
; mov ebx,esi |
; dec ebx |
lea ebx,[esi-1] |
and ebx,TEXTURE_SIZE |
add ebx,.bmap |
movzx eax,byte [ebx] |
; mov ebx,esi |
; inc ebx |
lea ebx,[esi+1] |
and ebx,TEXTURE_SIZE |
add ebx,.bmap |
movzx ebx,byte [ebx] |
sub eax,ebx |
; mov ebx,esi |
; sub ebx,TEX_X |
lea ebx,[esi-TEX_X] |
and ebx,TEXTURE_SIZE |
add ebx,.bmap |
movzx edx,byte [ebx] |
; mov ebx,esi |
; add ebx,TEX_X |
lea ebx,[esi+TEX_X] |
and ebx,TEXTURE_SIZE |
add ebx,.bmap |
movzx ebx,byte [ebx] |
sub edx,ebx |
end if |
; eax - horizontal sub modificated x coord |
; edx - vertical sub modificated y coord |
if Ext=NON |
mov ebx,.cex ;.cex - current env map X |
shr ebx,ROUND |
add eax,ebx |
mov ebx,.cey ;.cey - current env map y |
shr ebx,ROUND |
add edx,ebx |
else |
movq mm1,mm5 ; mm5 - copy of cur env coords |
psrld mm1,ROUND |
movd ebx,mm1 |
psrlq mm1,32 |
add eax,ebx |
movd ebx,mm1 |
add edx,ebx |
; movq qword[.temp1],mm3 |
; add eax,dword [.temp1] |
; add edx,dword [.temp1+4] |
end if |
or eax,eax |
jl .black |
cmp eax,TEX_X |
jg .black |
or edx,edx |
jl .black |
cmp edx,TEX_Y |
jg .black |
shl edx,TEX_SHIFT ; zaburzenie w emapie = zaburzenie w teksturze |
add edx,eax ; proponuje nie stawiac czarnego pixela tylko |
lea esi,[edx*3] ; niezaburzony. |
add esi,.emap ; |
lodsd |
if Ext=NON |
mov edx,.cty |
shr edx,ROUND ; sar |
mov edi,.ctx |
shr edi,ROUND ; sar |
else |
movq mm1,mm7 |
psrld mm1,ROUND |
movd edx,mm1 |
psrlq mm1,32 |
movd edi,mm1 |
end if |
shl edx,TEX_SHIFT |
add edi,edx |
and edi,TEXTURE_SIZE |
lea esi,[edi*3] |
add esi,.tex_map |
if Ext=NON |
mov edx,eax |
lodsd |
push ax |
mul dl |
mov dl,ah |
pop ax |
shr ax,8 |
mul dh |
mov al,dl |
mov edi,.c_scr |
stosw |
shr edx,16 |
shr eax,16 |
mul dl |
shr ax,8 |
stosb |
else |
movd mm0,eax |
pxor mm1,mm1 |
punpcklbw mm0,mm1 |
movd mm2,[esi] |
punpcklbw mm2,mm1 |
pmullw mm0,mm2 |
psrlw mm0,8 |
packuswb mm0,mm1 |
mov edi,.c_scr |
movd [edi],mm0 |
end if |
jmp .actual_zbuff ; actualize z buffer |
@@: |
.black: |
xor eax,eax |
mov edi,.c_scr |
stosd |
.actual_zbuff: |
mov eax,.cz |
mov edi,.czbuff |
stosd |
.skip: |
add dword .czbuff,4 |
add dword .c_scr,3 |
if Ext=NON |
mov eax,.dbx |
add .cbx,eax |
mov ebx,.dby |
add .cby,ebx |
mov edx,.dex |
add .cex,edx |
mov eax,.dey |
add .cey,eax |
mov ebx,.dtx |
add .ctx,ebx |
mov edx,.dty |
add .cty,edx |
else |
paddd mm7,.dty |
paddd mm6,.dby |
paddd mm5,.dey |
end if |
mov eax,.dz |
add .cz,eax |
dec ecx |
jnz .draw |
.bl_end: |
mov esp,ebp |
ret 76 |
;Ext = MMX |
; else |
; movq mm5, qword[.temp1] ;- |
; paddd mm5, qword[.temp5] ; .temp5 == low dword = TEX_X, high dword = -TEX_X |
; pand mm5, qword[.temp3] ; .temp3 == low = high dword = TEX_SIZE |
; paddd mm5, qword[.temp4] ; .temp4 == low = high dword = offset .bmap |
; movd ebx,mm5 |
; psrlq mm5,32 |
; end if |
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |
/programs/demos/view3ds/data.inc |
---|
0,0 → 1,554 |
; DATA AREA ************************************ |
i3 dw 3 |
i12 dd 12 |
i256 dw 256 |
i255d dd 255 |
dot_max dd 1.0 ; dot product max and min |
dot_min dd 0.0 |
env_const dd 1.05 |
tex_x_div2 dw TEX_X / 2 |
tex_y_div2 dw TEX_Y / 2 |
xobs dw 0 ;SIZE_X / 2 ;200 ;observer = camera |
yobs dw 0 ;SIZE_Y / 2 ;200 ;coordinates |
zobs dw -1000 |
re_alloc_flag db 0 |
angle_counter dw 0 |
piD180 dd 0.017453292519943295769236907684886 |
piD128 dd 0.024544 |
const6 dw 6,6,6,6 |
x_offset dw SIZE_X / 2 |
y_offset dw SIZE_Y / 2 |
z_offset dw 0 |
rsscale dd 175.0 ; next real scale |
vect_x dw SIZE_X / 2 |
vect_y dw SIZE_Y / 2 |
vect_z dw 0 |
size_y_var: |
yres_var dw SIZE_Y |
size_x_var: |
xres_var dw SIZE_X |
angle_x dw 0 |
angle_y dw 0 |
angle_z dw 0 |
sin_amplitude dd 50 |
sin_frq dd 0.7 |
sin_delta dd 0.07 ; wave frequency granularity |
convert_muler: |
dd 1, 10, 100, 1000, 10000 |
XYZpartices: |
db 'X','Y','Z' |
i10 dw 10 |
offset_y: |
i25 dw 25 ; screen buff offset |
offset_x: |
i5 dw 5 |
triangles_ptr dd 0 |
triangles_w_z_ptr dd 0 |
triangles_normals_ptr dd 0 |
points_normals_ptr dd 0 |
points_normals_rot_ptr dd 0 |
points_ptr dd 0 |
points_rotated_ptr dd 0 |
points_translated_ptr dd 0 |
screen_ptr dd 0 |
Zbuffer_ptr dd 0 |
vertices_index_ptr dd 0 |
vertex_edit_no dw 0 |
edit_start_x: |
dw 0 |
edit_start_y dw 0 |
edit_end_x: |
dw 0 |
edit_end_y dw 0 |
mouse_state dd 0 |
menu: |
db 2 ; button number = index |
db 'rotary ' ; label |
db 3 ; max flag + 1 , if = 255, no flag |
r_flag db 1 ; flag |
dd axl_f ; offset to flags description |
db 3 |
db 'shd. model' |
if Ext >= SSE3 |
max_dr_flg db 15 |
else |
db 12 |
end if |
dr_flag db 0 ; 6 - dots |
dd shd_f |
db 4 |
db 'speed ' |
db 2 |
speed_flag db 0 |
dd spd_f |
db 5 |
db 'zoom out ' |
db 255 |
db ? |
dd ? |
db 6 |
db 'zoom in ' |
db 255 |
db ? |
dd ? |
db 7 |
db 'catmull ' |
db 2 |
catmull_flag db 1 |
dd onoff_f |
db 8 |
db 'culling ' |
db 2 |
culling_flag db 0 |
dd onoff_f |
db 9 |
db 'rand.light' |
db 255 |
db ? |
dd ? |
db 10 |
db 'blur ' |
db 6 |
blur_flag db 0 |
dd blur_f |
db 11 |
db 'mirror x ' |
db 2 |
mirr_x_flag db 0 |
dd onoff_f |
db 12 |
db 'mirror y ' |
db 2 |
mirr_y_flag db 0 |
dd onoff_f |
db 13 |
db 'mirror z ' |
db 2 |
mirr_z_flag db 0 |
dd onoff_f |
db 14 |
db 'xchg ' |
db 4 |
xchg_flag db 0 |
dd xchg_f |
db 15 |
db 'emboss ' |
db 2 |
emboss_flag db 0 |
dd onoff_f |
db 16 |
db 'fire ' |
db 3 |
fire_flag db 0 |
dd blur_f |
db 17 |
db 'move ' |
db 3 |
move_flag db 0 |
dd move_f |
db 18 |
db 'generate ' |
db 6 |
generator_flag db 0 |
dd blur_f |
db 19 |
db 'bumps ' |
db 2 |
bumps_flag db 0 |
dd bumps_f |
db 20 |
db 'bumps deep' |
db 4 |
bumps_deep_flag db 3 |
dd bumps_d_f |
db 21 |
db 're-map tex' |
db 255 |
map_tex_flag db ? ;1 |
dd ? ;bumps_d_f |
db 22 |
db 'bright + ' |
db 6 |
inc_bright_flag db 0 ;1 |
dd blur_f |
db 23 |
db 'bright - ' |
db 6 |
dec_bright_flag db 0 ;1 |
dd blur_f |
db 24 |
db 'wav effect' |
db 2 |
sinus_flag db 0 |
dd onoff_f |
db 25 |
db 'editor ' |
db 2 |
edit_flag db 0 |
dd onoff_f |
; db 24 |
; db 'max ' |
; db 2 |
;max_flag db 0 ;1 |
; dd blur_f |
; |
; db 25 |
; db 'min ' |
; db 2 |
;min_flag db 0 ;1 |
; dd blur_f |
; db 21 |
; db 'light No. ' |
; db 3 |
;light_no_flag db 0 |
; dd bumps_d_f |
; db 22 |
; db 'light comp' |
; db 3 |
;light_comp_flag db 0 |
; dd light_component_f |
;; db 23 |
;; db 'col. comp' |
;; db 3 |
;;color_comp_flag db 0 |
;; dd color_component_f |
db -1 ; end mark |
flags: ; flags description |
shd_f: |
db 'flat' |
db 'grd ' |
db 'env ' |
db 'bump' |
db 'tex ' |
db 'pos ' |
db 'dots' |
db 'txgr' |
db '2tex' |
db 'btex' |
db 'cenv' |
db 'grdl' |
db 'rphg' |
db 'glas' |
db 'ptex' |
spd_f: |
db 'idle' |
db 'full' |
axl_f: |
db ' y ' |
db 'x+y ' |
db ' x ' |
onoff_f: |
db 'off ' |
db 'on ' |
blur_f: ; blur, fire |
db 'off ' |
bumps_d_f: db ' 1 ' |
db ' 2 ' |
db ' 3 ' |
db ' 4 ' |
db ' 5 ' |
xchg_f: |
db 'no ' |
db 'x<>y' |
db 'z<>x' |
db 'y<>z' |
move_f: |
db 'obj ' |
db 'camr' |
db 'wave' |
; db 'lght' |
bumps_f: |
db 'rand' |
db 'tex ' |
; db 'cscl' |
base_vector: |
labelvector: |
db 'add vector' |
labelvectorend: |
labelyminus: |
db 'y -' |
labelyminusend: |
labelzplus: |
db 'z +' |
labelzplusend: |
labelxminus: |
db 'x -' |
labelxminusend: |
labelxplus: |
db 'x +' |
labelxplusend: |
labelzminus: |
db 'z -' |
labelzminusend: |
labelyplus: |
db 'y +' |
labelyplusend: |
labelt: |
db 'DEUS CARITAS EST' |
if Ext=MMX |
db ' (MMX)' |
end if |
if Ext=SSE |
db ' (SSE)' |
end if |
if Ext=SSE2 |
db ' (SSE2)' |
end if |
if Ext=SSE3 |
db ' (SSE3)' |
end if |
db ' 0.072',0 |
labellen: |
STRdata db '-1 ' |
all_lights_size dw lightsend-lights |
; file_info: |
; dd 0 |
; dd 0 |
; dd 0 |
; fsize dd 0 ;180000 ; sizeof(workarea) |
; fptr dd 0 ;workarea |
; file_name: |
; db '/rd/1/3d/house.3ds',0 |
; ; db '/tmp0/1/ant.3ds',0 |
; |
; rb 256 |
;============================================= |
lights: |
.light_vector dd 0.0,0.0,-1.0 ; x,y,z Z cooficient of vector must be negative |
.orginal_color_r db 1 ; +12 |
.orginal_color_g db 255 ; |
.orginal_color_b db 1 ; +14 |
.min_color_r db 1 ; |
.min_color_g db 1 ; +16 |
.min_color_b db 1 ; |
.max_color_r db 255 ; |
.max_color_g db 255 ; |
.max_color_b db 255 ; |
.shine db 24 ; +21 |
; LIGHT_SIZE equ ($-lights) |
dd -0.5,-0.5,-1.0 ; x,y,z ; .light_vector |
db 5 ; .orginal_color_r |
db 1 ; .orginal_color_g |
db 135 ; .orginal_color_b |
db 19 ; .min_color_r |
db 19 ; .min_color_g |
db 19 ; .min_color_b |
db 255 ; .max_color_r |
db 255 ; .max_color_g |
db 255 ; .max_color_b |
db 16 ; .shine |
dd 0.5,0.5,-1.0 ; x,y,z ; .light_vector |
db 135 ; .orginal_color_r |
db 1 ; .orginal_color_g |
db 1 ; .orginal_color_b |
db 19 ; .min_color_r |
db 19 ; .min_color_g |
db 19 ; .min_color_b |
db 255 ; .max_color_r |
db 255 ; .max_color_g |
db 20 ; .max_color_b |
db 16 ; .shine |
; ALL_LIGHTS_SIZE equ ($ - lights) |
;#all_lights_size dw ($ - lights) ;ALL_LIGHTS_SIZE |
;=============================================== |
lightsend: |
align 16 |
emboss_bias: |
dw 128, 128, 128, 128, 128, 128, 128, 128 |
zero_hgst_dd: |
dd -1, -1, -1, 0 |
mask_255f: |
correct_texf: |
times 4 dd 255.0 |
the_zero: |
times 4 dd 0.0 |
tex_m2: |
times 4 dd 510.0 |
the_one: |
times 4 dd 1.0 |
aprox dd 0.0001 |
file_info: |
dd 0 |
dd 0 |
dd 0 |
fsize dd 0 ;180000 ; sizeof(workarea) |
fptr dd 0 ;workarea |
file_name: |
db '/rd/1/3d/house.3ds',0 |
; db '/tmp0/1/ant.3ds',0 |
rb 256 |
I_END: |
SourceFile: |
workarea rb 180 |
EndFile dd ? |
align 8 |
sinbeta dd ?;+32 |
cosbeta dd ? |
xsub dw ? |
zsub dw ?;+40 |
ysub dw ? |
xx1 dw ? |
yy1 dw ? |
zz1 dw ?;+48 xx1 + 4 |
xx2 dw ? |
yy2 dw ? |
zz2 dw ? ; xx1 + 10 |
xx3 dw ?;+56 |
yy3 dw ? |
zz3 dw ? ; xx1 + 16 |
col1 dd ? |
col2 dd ? |
col3 dd ? |
scale dd ? ; help scale variable |
;== |
triangles_count_var dd ? |
points_count_var dd ? |
; size_y_var: |
; yres_var dw ? |
; size_x_var: |
; xres_var dw ? |
x_start: |
dw ? |
y_start: |
dw ? |
;=== |
point_index1 dd ? ;-\ |
point_index2 dd ? ; } don't change order |
point_index3 dd ? ;-/ |
temp_col dw ? |
temp1 dd ? ; > dont change |
temp2 dd ? ; > order |
high dd ? |
rand_seed dw ? |
align 8 |
buffer dq ? |
errr dd ? |
drr dd ? |
xx dd ? |
yy dd ? |
xst dd ? |
yst dd ? |
; screen_ptr dd ? |
; Zbuffer_ptr dd ? |
matrix rb 36 |
cos_tab rd 360 |
sin_tab rd 360 |
align 16 |
points_count = 180000/6*3 |
triangles_count = 180000 / 6 ;($-triangles)/6 |
align 16 |
label trizdd dword |
label trizdq qword |
triangles_with_z rw triangles_count*4 + 2 ; triangles triple dw + z position |
align 16 |
vectors rb 24 |
align 16 |
bumpmap rb TEXTURE_SIZE + 1 |
align 16 |
bumpmap2 rb TEXTURE_SIZE + 1 |
align 16 |
envmap rb (TEXTURE_SIZE +1) * 3 |
align 16 |
envmap_cub rb TEX_X * 3 |
align 16 |
texmap rb (TEXTURE_SIZE +1) * 3 |
align 16 |
color_map rb (TEXTURE_SIZE +100) * 3 |
align 16 |
tex_points rb points_count * 4 ; bump_map and texture coords |
; each point word x, word y |
align 16 |
lights_aligned: |
lights_aligned_end = $ + 16 * 12 |
rb 16 * 12 |
if Ext >= SSE2 |
sse_repository rb 1024 |
end if |
; SourceFile: ; source file temporally in screen area |
; workarea dd ? |
; screen rb SIZE_X * SIZE_Y * 3 ; screen buffer |
;align 16 |
; Z_buffer rb SIZE_X * SIZE_Y * 4 |
procinfo: |
rb 1024 ; process info |
I_Param rb 256 |
memStack: |
rb 2000 |
align 16 |
screen: |
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |
/programs/demos/view3ds/flat_cat.inc |
---|
0,0 → 1,399 |
CATMULL_SHIFT equ 16 |
flat_triangle_z: |
; procedure drawing triangle with Z cordinate interpolation ------ |
; (Catmull alghoritm)-------------------------------------------- |
; ----------------in - eax - x1 shl 16 + y1 ---------------------- |
; -------------------- ebx - x2 shl 16 + y2 ---------------------- |
; -------------------- ecx - x3 shl 16 + y3 ---------------------- |
; -------------------- edx - color 0x00RRGGBB -------------------- |
; -------------------- esi - pointer to Z-buffer ----------------- |
; -------------------- edi - pointer to screen buffer------------- |
; -------------------- stack : z coordinates |
; -------------------- Z-buffer : each z variable as dword |
; -------------------- (Z coor. as word) shl CATMULL_SHIFT |
.z1 equ word[ebp+4] |
.z2 equ word[ebp+6] ; each z coordinate as word integer |
.z3 equ word[ebp+8] |
.col equ dword[ebp-4] |
.x1 equ word[ebp-6] |
.y1 equ word[ebp-8] |
.x2 equ word[ebp-10] |
.y2 equ word[ebp-12] |
.x3 equ word[ebp-14] |
.y3 equ word[ebp-16] |
.dx12 equ dword[ebp-20] |
;.dz12 equ dword[ebp-24] |
.dx13 equ dword[ebp-24] |
.dz13 equ dword[ebp-28] |
.dz12 equ dword[ebp-32] |
;.dz13 equ dword[ebp-32] |
.dx23 equ dword[ebp-36] |
.dz13M equ [ebp-40] |
.dz23 equ dword[ebp-44] |
.zz1 equ dword[ebp-48] |
.zz2 equ dword[ebp-52] |
.zz2M equ qword[ebp-52] |
.dz12M equ qword[ebp-32] |
.dz23M equ qword[ebp-44] |
;if Ext>=MMX |
; emms |
;end if |
mov ebp,esp |
push edx ; store edx in variable .col |
.sort2: |
cmp ax,bx |
jle .sort1 |
xchg eax,ebx |
mov dx,.z1 |
xchg dx,.z2 |
mov .z1,dx |
.sort1: |
cmp bx,cx |
jle .sort3 |
xchg ebx,ecx |
mov dx,.z2 |
xchg dx,.z3 |
mov .z2,dx |
jmp .sort2 |
.sort3: |
push eax ; store triangle coordinates in user friendly variables |
push ebx |
push ecx |
mov edx,80008000h ; eax,ebx,ecx are ANDd together into edx which means that |
and edx,ebx ; if *all* of them are negative a sign flag is raised |
and edx,ecx |
and edx,eax |
test edx,80008000h ; Check both X&Y at once |
jne .ft_loop2_end |
; cmp ax,SIZE_Y |
; jle @f |
; cmp bx,SIZE_Y |
; jle @f |
; cmp cx,SIZE_Y |
; jge @f |
; ror eax,16 |
; ror ebx,16 |
; ror ecx,16 |
; cmp ax,SIZE_X |
; jle @f |
; cmp bx,SIZE_X |
; jle @f |
; cmp cx,SIZE_X |
; jle @f |
; jmp .ft_loop2_end |
;@@: |
sub esp,52-12 |
mov bx,.y2 ; calc delta 12 |
sub bx,.y1 |
jnz .ft_dx12_make |
mov .dx12,0 |
mov .dz12,0 |
jmp .ft_dx12_done |
.ft_dx12_make: |
mov ax,.x2 |
sub ax,.x1 |
cwde |
movsx ebx,bx |
shl eax,ROUND |
cdq |
idiv ebx |
mov .dx12,eax |
mov ax,.z2 |
sub ax,.z1 |
cwde |
shl eax,CATMULL_SHIFT |
cdq |
idiv ebx |
mov .dz12,eax |
.ft_dx12_done: |
mov bx,.y3 ; calc delta 13 |
sub bx,.y1 |
jnz .ft_dx13_make |
mov .dx13,0 |
mov .dz13,0 |
mov dword .dz13M,0 |
jmp .ft_dx13_done |
.ft_dx13_make: |
mov ax,.x3 |
sub ax,.x1 |
cwde |
movsx ebx,bx |
shl eax,ROUND |
cdq |
idiv ebx |
mov .dx13,eax |
mov ax,.z3 |
sub ax,.z1 |
cwde |
shl eax,CATMULL_SHIFT |
cdq |
idiv ebx |
mov .dz13,eax |
mov dword .dz13M,eax |
.ft_dx13_done: |
mov bx,.y3 ; calc delta 23 |
sub bx,.y2 |
jnz .gt_dx23_make |
mov .dx23,0 |
mov .dz23,0 |
jmp .gt_dx23_done |
.gt_dx23_make: |
mov ax,.x3 |
sub ax,.x2 |
cwde |
movsx ebx,bx |
shl eax,ROUND |
cdq |
idiv ebx |
mov .dx23,eax |
mov ax,.z3 |
sub ax,.z2 |
cwde |
shl eax,CATMULL_SHIFT |
cdq |
idiv ebx |
mov .dz23,eax |
.gt_dx23_done: |
movsx edx,.z1 |
shl edx,CATMULL_SHIFT |
mov .zz1,edx |
mov .zz2,edx |
movsx eax,.x1 |
shl eax,ROUND ; eax - x1 |
mov ebx,eax ; ebx - x2 |
;if Ext>=MMX |
; movq mm0,.zz2M |
;end if |
mov cx,.y1 |
cmp cx,.y2 |
jge .ft_loop1_end |
.ft_loop1: |
pushad |
push .col |
push cx ; y |
sar ebx,ROUND |
push bx ; x2 |
sar eax,ROUND |
push ax ; x1 |
;if Ext>=MMX |
; sub esp,8 |
; movq [esp],mm0 |
;else |
push .zz2 ; z2 shl CATMULL_SHIFT |
push .zz1 ; z1 shl CATMULL_SHIFT |
;end if |
call flat_line_z |
popad |
add eax,.dx13 |
add ebx,.dx12 |
;if Ext>=MMX |
; paddd mm0,.dz12M |
;else |
mov edx,.dz13 |
add .zz1,edx |
mov edx,.dz12 |
add .zz2,edx |
;end if |
inc cx |
cmp cx,.y2 |
jl .ft_loop1 |
.ft_loop1_end: |
movsx edx,.z2 |
shl edx,CATMULL_SHIFT |
mov .zz2,edx |
movsx ebx,.x2 |
shl ebx,ROUND |
;if Ext>=MMX |
; movq mm0,.zz2M |
;; push .dz13 ; exchange |
;; pop .dz12 |
;; push .dz23 ; exchange |
;; pop .dz13 |
;end if |
mov cx,.y2 |
cmp cx,.y3 |
jge .ft_loop2_end |
.ft_loop2: |
pushad |
push .col |
push cx |
sar ebx,ROUND |
push bx |
sar eax,ROUND |
push ax ; x1 |
;if Ext>=MMX |
; sub esp,8 |
; movq [esp],mm0 |
;else |
push .zz2 ; z2 shl CATMULL_SHIFT |
push .zz1 ; z1 shl CATMULL_SHIFT |
;end if |
call flat_line_z |
popad |
add eax,.dx13 |
add ebx,.dx23 |
;if Ext>=MMX |
; paddd mm0,.dz23M |
;else |
mov edx,.dz13 |
add .zz1,edx |
mov edx,.dz23 |
add .zz2,edx |
; mov edx,.dz13 |
; add .zz1,edx |
; mov edx,.dz12 |
; add .zz2,edx |
;end if |
inc cx |
cmp cx,.y3 |
jl .ft_loop2 |
.ft_loop2_end: |
mov esp,ebp |
ret 6 |
flat_line_z: |
;---------------- |
;-------------in edi - pointer to screen buffer ---------------------------------- |
;--------------- esi - pointer to z-buffer (each Z varible dword)----------------- |
;----------stack - (each z coordinate shifted shl CATMULL_SHIFT)------------------ |
.z1 equ dword [ebp+4] |
.z2 equ dword [ebp+8] |
.x1 equ word [ebp+12] |
.x2 equ word [ebp+14] |
.y equ word [ebp+16] |
.col equ dword [ebp+18] |
.dz equ dword [ebp-4] |
mov ebp,esp |
;; sub esp,4 |
mov ax,.y |
or ax,ax |
jl .fl_quit |
mov bx,[size_y_var] |
dec bx |
cmp ax,bx ;[size_y_var] |
; cmp ax,SIZE_Y-1 |
jg .fl_quit |
; cmp .x1,0 |
; jge .fl_ok1 |
; cmp .x2,0 |
; jl .fl_quit |
; .fl_ok1: |
; cmp .x1,SIZE_X |
; jle .fl_ok2 |
; cmp .x2,SIZE_X |
; jg .fl_quit |
; .fl_ok2: |
mov ax,.x1 |
cmp ax,.x2 |
je .fl_quit |
jl .fl_ok |
xchg ax,.x2 |
mov .x1,ax |
mov edx,.z1 |
xchg edx,.z2 |
mov .z1,edx |
.fl_ok: |
mov bx,[size_x_var] |
dec bx |
cmp .x1,bx ;SIZE_X-1 |
jg .fl_quit |
cmp .x2,0 |
jle .fl_quit |
mov eax,.z2 |
sub eax,.z1 |
cdq |
mov bx,.x2 |
sub bx,.x1 |
movsx ebx,bx |
idiv ebx |
;; mov .dz,eax ; calculated delta - shifted .dz |
push eax |
cmp .x1,0 |
jge @f |
movsx ebx,.x1 |
neg ebx |
imul ebx |
add .z1,eax |
mov .x1,0 |
@@: |
movzx edx,word[size_x_var] |
cmp .x2,dx ;[size_x_var] ;SIZE_X |
jl @f |
mov .x2,dx ;[size_x_var] ;SIZE_X |
@@: |
; movzx edx,[size_x_var] ;SIZE_X |
movsx eax,.y |
mul edx ; edi = edi + (SIZE_X * y + x1)*3 |
movsx edx,.x1 |
add eax,edx |
push eax |
lea eax,[eax*3] |
add edi,eax ; esi = esi + (SIZE_X * y + x1)*4 |
pop eax |
shl eax,2 |
add esi,eax |
mov cx,.x2 |
sub cx,.x1 |
movzx ecx,cx |
mov eax,.col |
mov ebx,.z1 ; ebx : curr. z |
mov edx,.dz |
dec ecx |
jecxz .draw_last |
.ddraw: |
cmp ebx,dword[esi] |
; cmovl [edi],eax |
; cmovl [esi],ebx |
jge @f |
stosd |
dec edi |
mov dword[esi],ebx |
jmp .no_skip |
@@: |
add edi,3 |
.no_skip: |
add esi,4 |
add ebx,edx |
loop .ddraw |
.draw_last: |
cmp ebx,dword[esi] |
jge .fl_quit |
stosw |
shr eax,16 |
stosb |
mov dword[esi],ebx |
.fl_quit: |
mov esp,ebp |
ret 18 |
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |
/programs/demos/view3ds/grd_cat.inc |
---|
0,0 → 1,704 |
ROUND equ 8 |
CATMULL_SHIFT equ 8 |
gouraud_triangle_z: |
;----procedure drawing gouraud triangle with z coordinate |
;----interpolation ( Catmull alghoritm )----------------- |
;------------------in - eax - x1 shl 16 + y1 ------------ |
;---------------------- ebx - x2 shl 16 + y2 ------------ |
;---------------------- ecx - x3 shl 16 + y3 ------------ |
;---------------------- esi - pointer to Z-buffer-------- |
;---------------------- Z-buffer filled with dd variables |
;---------------------- shifted CATMULL_SHIFT------------ |
;---------------------- edi - pointer to screen buffer--- |
;---------------------- stack : colors------------------- |
;----------------- procedure don't save registers !!----- |
.col1r equ ebp+4 ; each color as word |
.col1g equ ebp+6 ; each z coordinate as word |
.col1b equ ebp+8 |
.z1 equ ebp+10 |
.col2r equ ebp+12 |
.col2g equ ebp+14 |
.col2b equ ebp+16 |
.z2 equ ebp+18 |
.col3r equ ebp+20 |
.col3g equ ebp+22 |
.col3b equ ebp+24 |
.z3 equ ebp+26 |
.x1 equ word[ebp-2] |
.y1 equ word[ebp-4] |
.x2 equ word[ebp-6] |
.y2 equ word[ebp-8] |
.x3 equ word[ebp-10] |
.y3 equ word[ebp-12] |
.dx12 equ dword[ebp-16] |
.dz12 equ dword[ebp-20] |
.dc12r equ dword[ebp-24] |
.dc12g equ dword[ebp-28] |
.dc12b equ dword[ebp-32] |
.dx13 equ dword[ebp-36] |
.dz13 equ dword[ebp-40] |
.dc13r equ dword[ebp-44] |
.dc13g equ dword[ebp-48] |
.dc13b equ dword[ebp-52] |
.dx23 equ dword[ebp-56] |
.dz23 equ dword[ebp-60] |
.dc23r equ dword[ebp-64] |
.dc23g equ dword[ebp-68] |
.dc23b equ dword[ebp-72] |
.zz1 equ dword[ebp-76] |
.c1r equ dword[ebp-80] |
.c1g equ dword[ebp-84] |
.c1b equ dword[ebp-88] |
.zz2 equ dword[ebp-92] |
.c2r equ dword[ebp-96] |
.c2g equ dword[ebp-100] |
.c2b equ dword[ebp-104] |
;.zz1 equ dword[ebp-100] |
;.zz2 equ dword[ebp-104] |
.c1bM equ [ebp-88] |
.c2bM equ [ebp-104] |
.c1rM equ [ebp-80] |
.c2rM equ [ebp-96] |
.dc23bM equ [ebp-72] |
.dc13bM equ [ebp-52] |
.dc12bM equ [ebp-32] |
.dc12rM equ [ebp-24] |
.dc13rM equ [ebp-44] |
.dc23rM equ [ebp-64] |
if Ext=MMX |
emms |
end if |
mov ebp,esp |
; sub esp,84 |
.sort3: ; sort triangle coordinates... |
cmp ax,bx |
jle .sort1 |
xchg eax,ebx |
mov edx,dword[.col1r] |
xchg edx,dword[.col2r] |
mov dword[.col1r],edx |
mov edx,dword[.col1b] |
xchg edx,dword[.col2b] |
mov dword[.col1b],edx |
.sort1: |
cmp bx,cx |
jle .sort2 |
xchg ebx,ecx |
mov edx,dword[.col2r] |
xchg edx,dword[.col3r] |
mov dword[.col2r],edx |
mov edx,dword[.col2b] |
xchg edx,dword[.col3b] |
mov dword[.col2b],edx |
jmp .sort3 |
.sort2: |
push eax ; store in variables |
push ebx |
push ecx |
mov edx,80008000h ; eax,ebx,ecx are ANDd together into edx which means that |
and edx,ebx ; if *all* of them are negative a sign flag is raised |
and edx,ecx |
and edx,eax |
test edx,80008000h ; Check both X&Y at once |
jne .gt_loop2_end |
mov bx,.y2 ; calc deltas |
sub bx,.y1 |
jnz .gt_dx12_make |
; mov .dx12,0 |
; mov .dz12,0 |
; mov .dc12r,0 |
; mov .dc12g,0 |
; mov .dc12b,0 |
mov ecx,5 |
@@: |
push dword 0 |
loop @b |
jmp .gt_dx12_done |
.gt_dx12_make: |
mov ax,.x2 |
sub ax,.x1 |
cwde |
movsx ebx,bx |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dx12,eax |
push eax |
mov ax,word[.z2] |
sub ax,word[.z1] |
cwde |
shl eax,CATMULL_SHIFT |
cdq |
idiv ebx |
push eax |
mov ax,word[.col2r] |
sub ax,word[.col1r] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dc12r,eax |
push eax |
mov ax,word[.col2g] |
sub ax,word[.col1g] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dc12g,eax |
push eax |
mov ax,word[.col2b] ;;--- |
sub ax,word[.col1b] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dc12b,eax |
push eax |
.gt_dx12_done: |
mov bx,.y3 ; calc deltas |
sub bx,.y1 |
jnz .gt_dx13_make |
; mov .dx13,0 |
; mov .dz13,0 |
; mov .dc13r,0 |
; mov .dc13g,0 |
; mov .dc13b,0 |
mov ecx,5 |
@@: |
push dword 0 |
loop @b |
jmp .gt_dx13_done |
.gt_dx13_make: |
mov ax,.x3 |
sub ax,.x1 |
cwde |
movsx ebx,bx |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dx13,eax |
push eax |
mov ax,word[.z3] |
sub ax,word[.z1] |
cwde |
shl eax,CATMULL_SHIFT |
cdq |
idiv ebx |
push eax |
mov ax,word[.col3r] |
sub ax,word[.col1r] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dc13r,eax |
push eax |
mov ax,word[.col3g] |
sub ax,word[.col1g] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dc13g,eax |
push eax |
mov ax,word[.col3b] |
sub ax,word[.col1b] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dc13b,eax |
push eax |
.gt_dx13_done: |
mov bx,.y3 ; calc deltas |
sub bx,.y2 |
jnz .gt_dx23_make |
; mov .dx23,0 |
; mov .dz23,0 |
; mov .dc23r,0 |
; mov .dc23g,0 |
; mov .dc23b,0 |
mov ecx,5 |
@@: |
push dword 0 |
loop @b |
jmp .gt_dx23_done |
.gt_dx23_make: |
mov ax,.x3 |
sub ax,.x2 |
cwde |
movsx ebx,bx |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dx23,eax |
push eax |
mov ax,word[.z3] |
sub ax,word[.z2] |
cwde |
shl eax,CATMULL_SHIFT |
cdq |
idiv ebx |
push eax |
mov ax,word[.col3r] |
sub ax,word[.col2r] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dc23r,eax |
push eax |
mov ax,word[.col3g] |
sub ax,word[.col2g] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dc23g,eax |
push eax |
mov ax,word[.col3b] |
sub ax,word[.col2b] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dc23b,eax |
push eax |
.gt_dx23_done: |
sub esp,32 |
movsx eax,.x1 ; eax - cur x1 |
shl eax,ROUND ; ebx - cur x2 |
mov ebx,eax |
movsx edx,word[.z1] |
shl edx,CATMULL_SHIFT |
mov .zz1,edx |
mov .zz2,edx |
movzx edx,word[.col1r] |
shl edx,ROUND |
mov .c1r,edx |
mov .c2r,edx |
movzx edx,word[.col1g] |
shl edx,ROUND |
mov .c1g,edx |
mov .c2g,edx |
movzx edx,word[.col1b] |
shl edx,ROUND |
mov .c1b,edx |
mov .c2b,edx |
mov cx,.y1 |
cmp cx,.y2 |
jge .gt_loop1_end |
.gt_loop1: |
pushad |
; macro .debug |
mov edx,.c2r ; c2r,c2g,c2b,c1r,c1g,c1b - current colors |
sar edx,ROUND |
push dx |
mov edx,.c2g |
sar edx,ROUND |
push dx |
mov edx,.c2b |
sar edx,ROUND |
push dx |
sar ebx,ROUND ; x2 |
push bx |
mov edx,.c1r |
sar edx,ROUND |
push dx |
mov edx,.c1g |
sar edx,ROUND |
push dx |
mov edx,.c1b |
sar edx,ROUND |
push dx |
sar eax,ROUND |
push ax ; x1 |
push cx ; y |
push .zz2 |
push .zz1 |
call gouraud_line_z |
popad |
if Ext >= MMX |
movq mm0,.c1bM |
paddd mm0,qword .dc13bM |
movq .c1bM,mm0 |
movq mm1,.c2bM |
paddd mm1,qword .dc12bM |
movq .c2bM,mm1 |
movq mm0,.c1rM |
paddd mm0,qword .dc13rM |
movq .c1rM,mm0 |
movq mm1,.c2rM |
paddd mm1,qword .dc12rM |
movq .c2rM,mm1 |
else |
mov edx,.dc13r |
add .c1r,edx |
mov edx,.dc13g |
add .c1g,edx |
mov edx,.dc13b |
add .c1b,edx |
mov edx,.dc12r |
add .c2r,edx |
mov edx,.dc12g |
add .c2g,edx |
mov edx,.dc12b |
add .c2b,edx |
mov edx,.dz13 |
add .zz1,edx |
mov edx,.dz12 |
add .zz2,edx |
end if |
add eax,.dx13 |
add ebx,.dx12 |
inc cx |
cmp cx,.y2 |
jl .gt_loop1 |
.gt_loop1_end: |
mov cx,.y2 |
cmp cx,.y3 |
jge .gt_loop2_end |
movsx ebx,.x2 ; eax - cur x1 |
shl ebx,ROUND ; ebx - cur x2 |
movsx edx,word[.z2] |
shl edx,CATMULL_SHIFT |
mov .zz2,edx |
movzx edx,word[.col2r] |
shl edx,ROUND |
mov .c2r,edx |
movzx edx,word[.col2g] |
shl edx,ROUND |
mov .c2g,edx |
movzx edx,word[.col2b] |
shl edx,ROUND |
mov .c2b,edx |
.gt_loop2: |
pushad |
; macro .debug |
mov edx,.c2r ; c2r,c2g,c2b,c1r,c1g,c1b - current colors |
sar edx,ROUND |
push dx |
mov edx,.c2g |
sar edx,ROUND |
push dx |
mov edx,.c2b |
sar edx,ROUND |
push dx |
sar ebx,ROUND ; x2 |
push bx |
mov edx,.c1r |
sar edx,ROUND |
push dx |
mov edx,.c1g |
sar edx,ROUND |
push dx |
mov edx,.c1b |
sar edx,ROUND |
push dx |
sar eax,ROUND |
push ax ; x1 |
push cx ; y |
push .zz2 |
push .zz1 |
call gouraud_line_z |
popad |
if Ext >= MMX |
movq mm0,.c1bM |
paddd mm0,qword .dc13bM |
movq .c1bM,mm0 |
movq mm1,.c2bM |
paddd mm1,qword .dc23bM |
movq .c2bM,mm1 |
movq mm0,.c1rM |
paddd mm0,qword .dc13rM |
movq .c1rM,mm0 |
movq mm1,.c2rM |
paddd mm1,qword .dc23rM |
movq .c2rM,mm1 |
else |
mov edx,.dc13r |
add .c1r,edx |
mov edx,.dc13g |
add .c1g,edx |
mov edx,.dc13b |
add .c1b,edx |
mov edx,.dc23r |
add .c2r,edx |
mov edx,.dc23g |
add .c2g,edx |
mov edx,.dc23b |
add .c2b,edx |
mov edx,.dz13 |
add .zz1,edx |
mov edx,.dz23 |
add .zz2,edx |
end if |
add eax,.dx13 |
add ebx,.dx23 |
inc cx |
cmp cx,.y3 |
jl .gt_loop2 |
.gt_loop2_end: |
mov esp,ebp |
ret 24 |
gouraud_line_z: |
;----------------- procedure drawing gouraud line |
;----------------- with z coordinate interpolation |
;----------------- esi - pointer to Z_buffer |
;----------------- edi - pointer to screen buffer |
;----------------- stack: |
.z1 equ dword[ebp+4] ; z coordiunate shifted left CATMULL_SHIFT |
.z2 equ dword[ebp+8] |
.y equ word[ebp+12] |
.x1 equ ebp+14 |
.c1b equ ebp+16 |
.c1g equ ebp+18 |
.c1r equ ebp+20 |
.x2 equ ebp+22 |
.c2b equ ebp+24 |
.c2g equ ebp+26 |
.c2r equ ebp+28 |
.dz equ dword[ebp-4] |
.dc_b equ dword[ebp-8] |
.dc_g equ dword[ebp-12] |
.dc_r equ dword[ebp-16] |
.c_z equ dword[ebp-20] |
.cb equ dword[ebp-24] |
.cg equ dword[ebp-28] |
.cr equ dword[ebp-32] |
;.cg2 equ dword[ebp-36] |
.crM equ ebp-32 |
.cgM equ ebp-28 |
.cbM equ ebp-24 |
.dc_rM equ ebp-16 |
.dc_gM equ ebp-12 |
.dc_bM equ ebp-8 |
mov ebp,esp |
mov ax,.y |
or ax,ax |
jl .gl_quit |
mov bx,[size_y_var] |
dec bx |
cmp ax,bx ;SIZE_Y |
jge .gl_quit |
mov eax,dword[.x1] |
cmp ax,word[.x2] |
je .gl_quit |
jl @f |
xchg eax,dword[.x2] |
mov dword[.x1],eax |
mov eax,dword[.c1g] |
xchg eax,dword[.c2g] |
mov dword[.c1g],eax |
mov eax,.z1 |
xchg eax,.z2 |
mov .z1,eax |
@@: |
mov bx,[size_x_var] |
dec bx |
cmp word[.x1],bx ;SIZE_X |
jge .gl_quit |
cmp word[.x2],0 |
jle .gl_quit |
mov eax,.z2 |
sub eax,.z1 |
cdq |
mov bx,word[.x2] ; dz = z2-z1/x2-x1 |
sub bx,word[.x1] |
movsx ebx,bx |
idiv ebx |
push eax |
mov ax,word[.c2b] |
sub ax,word[.c1b] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
push eax |
mov ax,word[.c2g] |
sub ax,word[.c1g] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
push eax |
mov ax,word[.c2r] |
sub ax,word[.c1r] |
cwde |
shl eax,ROUND ; dc_r = c2r-c1r/x2-x1 |
cdq |
idiv ebx |
push eax |
cmp word[.x1],0 ; clipping on function |
jg @f |
mov eax,.dz |
movsx ebx,word[.x1] |
neg ebx |
imul ebx |
add .z1,eax |
mov word[.x1],0 |
mov eax,.dc_r |
imul ebx |
sar eax,ROUND |
add word[.c1r],ax |
mov eax,.dc_g |
imul ebx |
sar eax,ROUND |
add word[.c1g],ax |
mov eax,.dc_b |
imul ebx |
sar eax,ROUND |
add word[.c1b],ax |
@@: |
mov bx,[size_x_var] |
dec bx |
cmp word[.x2],bx ;SIZE_X |
jl @f |
mov word[.x2],bx ;SIZE_X |
@@: |
sub esp,16 ; calculate memory begin |
movzx edx,word[size_x_var] ;SIZE_X ; in buffers |
movzx eax,.y |
mul edx |
movzx edx,word[.x1] |
add eax,edx |
push eax |
lea eax,[eax*3] |
add edi,eax |
pop eax |
shl eax,2 |
add esi,eax |
mov cx,word[.x2] |
sub cx,word[.x1] |
movzx ecx,cx |
mov ebx,.z1 ; ebx - currrent z shl CATMULL_SIFT |
;if Ext >= SSE |
; mov .cz,edx |
;end if |
mov edx,.dz ; edx - delta z |
movzx eax,word[.c1r] |
shl eax,ROUND |
mov .cr,eax |
movzx eax,word[.c1g] |
shl eax,ROUND |
mov .cg,eax |
movzx eax,word[.c1b] |
shl eax,ROUND |
mov .cb,eax |
if Ext = MMX |
; mov .c_z,edx |
movd mm2,[.dc_bM] ; delta color blue MMX |
movd mm3,[.cbM] ; current blue MMX |
movq mm5,[.dc_rM] |
movq mm4,[.crM] |
pxor mm6,mm6 |
end if |
.ddraw: |
;if Ext = MMX |
; movq mm0,mm3 |
; psrsq mm0,32 |
; movd ebx,mm0 |
;end if |
cmp ebx,dword[esi] ; esi - z_buffer |
jge @f ; edi - Screen buffer |
if Ext = MMX |
movq mm0,mm3 ; mm0, mm1 - temp registers |
psrld mm0,ROUND |
movq mm1,mm4 |
psrld mm1,ROUND |
packssdw mm1,mm0 |
packuswb mm1,mm6 |
; movd [edi],mm1 |
movd eax,mm1 |
stosw |
shr eax,16 |
stosb |
else |
mov eax,.cr |
sar eax,ROUND |
stosb |
mov eax,.cg |
sar eax,ROUND |
stosb |
mov eax,.cb |
sar eax,ROUND |
stosb |
end if |
mov dword[esi],ebx |
;if Ext = NON |
jmp .no_skip |
;end if |
@@: |
add edi,3 |
.no_skip: |
add esi,4 |
;if Ext=NON |
add ebx,edx |
;end if |
if Ext=MMX |
paddd mm3,mm2 |
paddd mm4,mm5 |
else |
mov eax,.dc_g |
add .cg,eax |
mov eax,.dc_b |
add .cb,eax |
mov eax,.dc_r |
add .cr,eax |
end if |
loop .ddraw |
.gl_quit: |
mov esp,ebp |
ret 26 |
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |
/programs/demos/view3ds/grd_line.inc |
---|
0,0 → 1,643 |
;-procedure draws smooth shaded lines (I mean interpolation 24 bit-- |
;-color), with z coord interpolation-------------------------------- |
;-author: Maciej Guba (www.macgub.hekko.pl)------------------------- |
;-in : ------------------------------------------------------------- |
;----- edi - pointer to screen buffer ------------------------------ |
;----- esi - pointer to Z buffer ----------------------------------- |
;------ constans : SIZE_X, SIZE_Y - screen width and height--------- |
;----------------- ROUND - fixed point shift------------------------ |
;------ other parameters via stack---------------------------------- |
smooth_line: |
.x1 equ ebp+4 |
.y1 equ ebp+6 |
.z1 equ ebp+8 |
.r1 equ ebp+10 |
.g1 equ ebp+12 |
.b1 equ ebp+14 |
.x2 equ ebp+16 |
.y2 equ ebp+18 |
.z2 equ ebp+20 |
.r2 equ ebp+22 |
.g2 equ ebp+24 |
.b2 equ ebp+26 |
.line_lenght equ ebp-2 |
.delta equ ebp-6 |
.delta_x equ ebp-10 |
.delta_y equ ebp-14 |
.dr equ ebp-18 |
.dg equ ebp-22 |
.db equ ebp-26 |
.dz equ ebp-30 |
.cr equ ebp-34 |
.cg equ ebp-38 |
.cb equ ebp-42 |
.cz equ ebp-46 |
;.line_lenght equ ebp-48 |
.screen equ ebp-52 |
.zbuffer equ ebp-56 |
.ccoord equ ebp-60 ;current coordinate |
.czbuf equ ebp-64 |
.cscr equ ebp-68 |
.xres equ ebp-72 |
.yres equ ebp-76 |
.xresm1 equ ebp-80 |
.yresm1 equ ebp-84 |
.xresp1 equ ebp-88 |
.yresp1 equ ebp-92 |
.xres3 equ ebp-96 |
.xres4 equ ebp-100 |
macro .update_cur_var |
{ |
if Ext=NON |
mov ebx,[.dz] |
add [.cz],ebx |
mov ebx,[.dr] |
add [.cr],ebx |
mov ebx,[.dg] |
add [.cg],ebx |
mov ebx,[.db] |
add [.cb],ebx |
elseif Ext=MMX |
movq mm0,[.cz] |
movq mm1,[.cg] |
paddd mm0,mm2 ;[.dz] |
paddd mm1,mm3 ;[.dg] |
movq [.cz],mm0 |
movq [.cg],mm1 |
elseif Ext >= SSE2 |
; movups xmm1,[.cz] |
paddd xmm1,xmm0 |
; movups [.cz],xmm1 |
end if |
} |
macro .draw_pixel |
{ |
mov [esi],ebx ; actualize Z buffer |
if Ext>=SSE2 |
movaps xmm7,xmm1 ;[.cb] ;;xmm1 |
shufps xmm7,xmm7,00111001b |
psrld xmm7,ROUND |
packssdw xmm7,xmm7 |
packuswb xmm7,xmm7 |
pand xmm7,xmm6 ;[.mask] |
movd [edi],xmm7 |
else |
mov eax,[.cb] |
sar eax,ROUND |
mov [edi],al |
; and eax,0x000000ff ; clean unused bits |
mov ebx,[.cg] |
sar ebx,ROUND |
mov [edi+1],bl |
; mov ah,bl |
mov edx,[.cr] |
sar edx,ROUND |
mov [edi+2],dl |
end if |
; shl ebx,16 |
; or eax,ebx |
; mov [edi],eax |
} |
macro .sort |
{ |
if Ext >= MMX |
movq mm0,[.x1] |
movq mm1,[.x2] |
movq [.x1],mm1 |
movq [.x2],mm0 |
else |
mov edx,[.x1] |
xchg edx,[.x2] |
mov [.x1],edx |
mov edx,[.z1] |
xchg edx,[.z2] |
mov [.z1],edx |
end if |
mov edx,[.g1] |
xchg edx,[.g2] |
mov [.g1],edx |
} |
emms |
mov ebp,esp |
sub esp,128 |
mov eax,[.x1] ; check if parameters exceedes screen area |
mov ebx,[.x2] |
or eax,ebx |
test eax,80008000h |
jne .end_line |
movzx edx,word [size_x_var] |
mov [.xres],edx |
dec edx |
movzx ecx,word [size_y_var] |
mov [.yres],ecx |
dec ecx |
cmp word[.x1],dx ;SIZE_X |
jg .end_line |
cmp word[.x2],dx ;SIZE_X |
jg .end_line |
cmp word[.y1],cx ;SIZE_Y |
jg .end_line |
cmp word[.y2],cx ;SIZE_Y |
jg .end_line |
mov edx,[.xres] |
shl edx,2 |
mov [.xres4],edx |
shr edx,2 |
lea edx,[edx*3] |
mov [.xres3],edx |
mov edx,[.xres] |
mov ecx,[.yres] |
dec edx |
dec ecx |
mov [.xresm1],edx |
mov [.yresm1],ecx |
add edx,2 |
add ecx,2 |
mov [.xresp1],edx |
mov [.yresp1],ecx |
mov [.screen],edi |
mov cx,[.x1] |
cmp cx,[.x2] |
je .vertical_l |
mov cx,[.y1] |
cmp cx,[.y2] |
je .horizontal_l |
mov ax,[.x1] |
sub ax,[.x2] |
cmp ax,0 |
jg @f |
neg ax ; calc absolute value |
@@: |
mov [.delta_x],ax |
mov bx,[.y1] |
sub bx,[.y2] |
cmp bx,0 |
jg @f |
neg bx |
@@: |
mov [.delta_y],bx |
cmp ax,bx |
je .deg45_l |
jl .more_vertical_l |
jg .more_horizon_l |
jmp .end_line |
; |
.horizontal_l: |
mov ax,[.x1] |
mov bx,[.x2] |
cmp bx,ax |
jge @f |
.sort |
@@: |
mov bx,[.x2] |
sub bx,[.x1] |
movsx ebx,bx |
cmp ebx,0 ;line lenght equql 0 |
je .end_line |
mov [.delta_x],ebx |
call .calc_delta |
mov eax,[.xres] ;SIZE_X |
movsx ebx,word[.y1] |
mul ebx |
add esi,eax |
lea eax,[eax*3] |
add esi,eax |
add edi,eax |
movsx eax,word[.x1] |
add esi,eax |
lea eax,[eax*3] |
add edi,eax |
add esi,eax |
mov ecx,[.delta_x] |
movsx ebx,word[.r1] |
shl ebx,ROUND |
mov [.cr],ebx |
movsx ebx,word[.g1] |
shl ebx,ROUND |
mov [.cg],ebx |
movsx ebx,word[.b1] |
shl ebx,ROUND |
mov [.cb],ebx |
movsx ebx,word[.z1] |
shl ebx,ROUND |
mov [.cz],ebx |
if Ext >= SSE2 |
movups xmm1,[.cz] |
end if |
.hdraw: |
if Ext >= SSE2 |
movd ebx,xmm1 |
else |
mov ebx,[.cz] |
end if |
cmp [esi],ebx |
jle .skip |
.draw_pixel |
.skip: |
add edi,3 |
add esi,4 |
.update_cur_var |
loop .hdraw |
jmp .end_line |
.vertical_l: |
mov ax,[.y1] |
cmp [.y2],ax |
jge @f |
.sort |
@@: |
mov bx,[.y2] |
sub bx,[.y1] |
movsx ebx,bx |
cmp ebx,0 |
je .end_line |
mov [.delta_y],ebx |
call .calc_delta |
mov eax,[.xres] ;SIZE_X |
movsx ebx,word[.y1] |
mul ebx |
add esi,eax |
lea eax,[eax*3] |
add edi,eax |
add esi,eax |
movsx eax,word[.x1] |
add esi,eax |
lea eax,[eax*3] |
add esi,eax |
add edi,eax |
mov ecx,[.delta_y] |
movsx ebx,word[.r1] |
shl ebx,ROUND |
mov [.cr],ebx |
movsx ebx,word[.g1] |
shl ebx,ROUND |
mov [.cg],ebx |
movsx ebx,word[.b1] |
shl ebx,ROUND |
mov [.cb],ebx |
movsx ebx,word[.z1] |
shl ebx,ROUND |
mov [.cz],ebx |
if Ext >= SSE2 |
movups xmm1,[.cz] |
end if |
.v_draw: |
if Ext >= SSE2 |
movd ebx,xmm1 |
else |
mov ebx,[.cz] |
end if |
cmp [esi],ebx |
jle @f |
.draw_pixel |
@@: |
add edi,[.xres3] |
add esi,[.xres4] |
.update_cur_var |
loop .v_draw |
jmp .end_line |
.deg45_l: |
mov word[.line_lenght],ax |
mov ax,[.x1] |
cmp [.x2],ax |
jge @f |
.sort |
@@: |
mov bx,[.y2] |
sub bx,[.y1] |
movsx ebx,bx |
cmp ebx,0 |
je .end_line |
mov [.delta_y],ebx |
mov bx,[.x2] |
sub bx,[.x1] |
movsx ebx,bx |
mov [.delta_x],ebx |
call .calc_delta |
mov eax,[.xres] |
movsx ebx,word[.y1] ;calc begin values in screen and Z buffers |
mul ebx |
lea ebx,[3*eax] |
add edi,ebx |
shl eax,2 |
add esi,eax |
movsx eax,word[.x1] |
lea ebx,[eax*3] |
add edi,ebx |
shl eax,2 |
add esi,eax |
movzx ecx,word[.line_lenght] |
movsx ebx,word[.r1] |
shl ebx,ROUND |
mov [.cr],ebx |
movsx ebx,word[.g1] |
shl ebx,ROUND |
mov [.cg],ebx |
movsx ebx,word[.b1] |
shl ebx,ROUND |
mov [.cb],ebx |
movsx ebx,word[.z1] |
shl ebx,ROUND |
mov [.cz],ebx |
.d45_draw: |
if Ext >= SSE2 |
movd ebx,xmm1 |
else |
mov ebx,[.cz] |
end if |
cmp [esi],ebx |
jle @f |
.draw_pixel |
@@: |
cmp dword[.delta_y],0 |
jl @f |
add edi,[.xres3] ;SIZE_X*3+3 |
add edi,3 |
add esi,[.xres4] ;SIZE_X*4+4 |
add esi,4 |
jmp .d45_1 |
@@: |
sub edi,[.xres3] ;(SIZE_X*3)-3 |
sub edi,3 |
sub esi,[.xres4] ;(SIZE_X*4)-4 |
sub esi,4 |
.d45_1: |
.update_cur_var |
loop .d45_draw |
jmp .end_line |
.more_vertical_l: |
mov word[.line_lenght],bx |
mov ax,[.y1] |
cmp [.y2],ax |
jge @f |
.sort |
@@: |
mov bx,[.y2] |
sub bx,[.y1] |
movsx ebx,bx |
cmp ebx,0 |
je .end_line ;======================= |
mov [.delta_y],ebx |
mov ax,[.x2] |
sub ax,[.x1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
mov [.delta],eax |
call .calc_delta |
mov eax,[.xres] ;SIZE_X |
movsx ebx,word[.y1] ;calc begin values in screen and Z buffers |
mul ebx |
lea ebx,[3*eax] |
add esi,ebx |
add esi,eax |
add edi,ebx |
mov [.cscr],edi |
mov [.czbuf],esi |
movzx ecx,word[.line_lenght] |
movsx ebx,word[.r1] |
shl ebx,ROUND |
mov [.cr],ebx |
movsx ebx,word[.g1] |
shl ebx,ROUND |
mov [.cg],ebx |
movsx ebx,word[.b1] |
shl ebx,ROUND |
mov [.cb],ebx |
movsx ebx,word[.z1] |
shl ebx,ROUND |
mov [.cz],ebx |
if Ext >= SSE2 |
movups xmm1,[.cz] |
end if |
movsx ebx,word[.x1] |
shl ebx,ROUND |
mov [.ccoord],ebx ; .ccoord -> x coordinate |
.draw_m_v: |
mov edi,[.cscr] |
mov esi,[.czbuf] |
mov eax,[.ccoord] |
sar eax,ROUND |
lea ebx,[eax*3] |
add edi,ebx |
add esi,ebx |
add esi,eax |
if Ext >= SSE2 |
movd ebx,xmm1 |
else |
mov ebx,[.cz] |
end if |
cmp [esi],ebx |
jle @f |
.draw_pixel |
@@: |
mov eax,[.delta] |
mov ebx,[.xres3] |
add [.ccoord],eax |
mov eax,[.xres4] |
add dword[.cscr],ebx ;SIZE_X*3 ; |
add dword[.czbuf],eax ;SIZE_X*4 |
.d_m_v1: |
.update_cur_var |
dec ecx |
jnz .draw_m_v |
jmp .end_line |
.more_horizon_l: |
mov word[.line_lenght],ax |
mov ax,[.x1] |
cmp [.x2],ax |
jge @f |
.sort |
@@: |
mov bx,[.x2] |
sub bx,[.x1] |
movsx ebx,bx |
cmp ebx,0;======================= |
je .end_line |
mov [.delta_x],ebx |
mov ax,[.y2] |
sub ax,[.y1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
mov [.delta],eax |
call .calc_delta |
;calc begin values in screen and Z buffers |
movsx ebx,word[.x1] |
mov eax,ebx |
add esi,ebx |
lea ebx,[3*ebx] |
add esi,ebx |
add edi,ebx |
mov [.cscr],edi |
mov [.czbuf],esi |
movzx ecx,word[.line_lenght] |
movsx ebx,word[.r1] |
shl ebx,ROUND |
mov [.cr],ebx |
movsx ebx,word[.g1] |
shl ebx,ROUND |
mov [.cg],ebx |
movsx ebx,word[.b1] |
shl ebx,ROUND |
mov [.cb],ebx |
movsx ebx,word[.z1] |
shl ebx,ROUND |
mov [.cz],ebx |
if Ext >= SSE2 |
movups xmm1,[.cz] |
end if |
movsx ebx,word[.y1] |
shl ebx,ROUND |
mov [.ccoord],ebx ; .ccoord -> y coordinate |
.draw_m_h: |
mov edi,[.cscr] |
mov esi,[.czbuf] |
mov eax,[.ccoord] ; ccoord - cur y coordinate |
sar eax,ROUND |
mov ebx,[.xres] ;SIZE_X |
mul ebx |
add esi,eax |
lea eax,[eax*3] |
add esi,eax |
add edi,eax |
if Ext >= SSE2 |
movd ebx,xmm1 |
else |
mov ebx,[.cz] |
end if |
cmp [esi],ebx |
jle @f |
.draw_pixel |
@@: |
mov eax,[.delta] |
add [.ccoord],eax |
add dword[.cscr],3 ; |
add dword[.czbuf],4 |
.update_cur_var |
dec ecx |
jnz .draw_m_h |
.end_line: |
mov esp,ebp |
ret 24 |
.calc_delta: |
mov ax,[.z2] |
sub ax,[.z1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
mov [.dz],eax |
mov ax,[.r2] |
sub ax,[.r1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
mov [.dr],eax |
mov ax,[.g2] |
sub ax,[.g1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
mov [.dg],eax |
mov ax,[.b2] |
sub ax,[.b1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
mov [.db],eax |
if Ext=MMX | Ext = SSE |
movq mm2,[.dz] |
movq mm3,[.dg] |
else if Ext >= SSE2 |
movups xmm0,[.dz] |
movups xmm6,[.mask] |
end if |
ret |
.mask: |
dq 0xffffffff00ffffff |
dq 0xffffffffffffffff |
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |
/programs/demos/view3ds/grd_tex.inc |
---|
0,0 → 1,1016 |
CATMULL_SHIFT equ 8 |
ROUND equ 8 |
;NON=0 |
;MMX=1 |
;Ext=MMX |
;TEX_SIZE=0x3fff |
;SIZE_X equ 512 |
;SIZE_Y equ 512 |
;ROUND = 8 |
;TEX_SHIFT equ 6 |
; procedure drawing textured triangle with Gouraud shading |
; Z-buffer alghoritm included, Z coord interpolation ---- |
; I set the color by this way -- (col1 * col2)/256 ------ |
;------------------in - eax - x1 shl 16 + y1 ------------ |
;---------------------- ebx - x2 shl 16 + y2 ------------ |
;---------------------- ecx - x3 shl 16 + y3 ------------ |
;---------------------- esi - pointer to Z-buffer-------- |
;---------------------- edx - pointer to texture--------- |
;---------------------- Z-buffer filled with dd variables |
;---------------------- shifted CATMULL_SHIFT------------ |
;---------------------- edi - pointer to screen buffer--- |
;---------------------- stack : colors------------------- |
tex_plus_grd_triangle: |
; parameters : |
.tex_y3 equ [ebp+38] ; 36 bytes through stack |
.tex_x3 equ [ebp+36] |
.tex_y2 equ [ebp+34] |
.tex_x2 equ [ebp+32] |
.tex_y1 equ [ebp+30] |
.tex_x1 equ [ebp+28] |
.z3 equ [ebp+26] |
.col3b equ [ebp+24] |
.col3g equ [ebp+22] |
.col3r equ [ebp+20] |
.z2 equ [ebp+18] |
.col2b equ [ebp+16] |
.col2g equ [ebp+14] |
.col2r equ [ebp+12] |
.z1 equ [ebp+10] |
.col1b equ [ebp+8] |
.col1g equ [ebp+6] |
.col1r equ [ebp+4] |
; local variables: |
.tex_ptr equ dword[ebp-4] |
.z_ptr equ dword[ebp-8] |
.scr_buff equ dword[ebp-12] |
.x1 equ word[ebp-14] ;dw ? ;equ word[ebp-10] |
.y1 equ word[ebp-16] ;dw ? ;equ word[ebp-12] |
.x2 equ word[ebp-18] ;dw ? ;equ word[ebp-14] |
.y2 equ word[ebp-20] ;dw ? ;equ word[ebp-16] |
.x3 equ word[ebp-22] ;dw ? ;equ word[ebp-18] |
.y3 equ word[ebp-24] ;dw ? ;equ word[ebp-20] |
.dx12 equ dword[ebp-28] ;dd ? |
.tex_dx12 equ dword[ebp-32] ;dd ? |
.tex_dy12 equ [ebp-36] ;dd ? |
.dz12 equ dword[ebp-40] ;dd ? |
.dc12r equ [ebp-44] ;dd ? |
.dc12g equ dword[ebp-48] ;dd ? |
.dc12b equ [ebp-52] ;dd ? |
.dx23 equ dword[ebp-56] ;dd ? |
.tex_dx23 equ dword[ebp-60] ;dd ? |
.tex_dy23 equ [ebp-64] ;dd ? |
.dz23 equ dword[ebp-68] ;dd ? |
.dc23r equ [ebp-72] ;dd ? |
.dc23g equ dword[ebp-76] ;dd ? |
.dc23b equ [ebp-80] ;dword[ebp-8]dd ? |
.dx13 equ dword[ebp-84] ;dd ? |
.tex_dx13 equ dword[ebp-88] ;dd ? |
.tex_dy13 equ [ebp-92] ;dd ? |
.dz13 equ dword[ebp-96] ;dd ? |
.dc13r equ [ebp-100] ;dd ? |
.dc13g equ dword[ebp-104] ;dd ? |
.dc13b equ [ebp-108] ;dd ? |
.scan_x1 equ dword[ebp-112] ;dd ? |
.scan_y1 equ [ebp-116] ;dd ? |
.zz1 equ dword[ebp-120] ;dw ? |
.cur1r equ [ebp-124] ;dw ? |
.cur1g equ dword[ebp-128] ;dw ? |
.cur1b equ [ebp-132] ;dw ? |
.scan_x2 equ dword[ebp-136] ;dd ? |
.scan_y2 equ [ebp-140] ;dd ? |
.zz2 equ dword[ebp-144] ;dw ? |
.cur2r equ [ebp-148] ;dw ? |
.cur2g equ dword[ebp-152] ;dw ? |
.cur2b equ [ebp-156] ;dw ? |
mov ebp,esp |
; mov .tex_ptr,edx |
; mov .z_ptr,esi |
; mov .scr_buff,edi |
push edx esi edi |
; push esi |
; push edi |
mov edx,80008000h ; eax,ebx,ecx are ANDd together into edx which means that |
and edx,ebx ; if *all* of them are negative a sign flag is raised |
and edx,ecx |
and edx,eax |
test edx,80008000h ; Check both X&Y at once |
jne .loop2_end |
.sort3: |
cmp ax,bx |
jle .sort1 |
xchg eax,ebx |
if Ext>=MMX |
movq mm0, .col1r ; exchange r, g, b, z |
movq mm1, .col2r |
movq .col1r ,mm1 |
movq .col2r ,mm0 |
else |
mov edx,dword .col1r ; exchange both r and g |
xchg edx,dword .col2r |
mov dword .col1r ,edx |
mov edx,dword .col1b ; b and z |
xchg edx,dword .col2b |
mov dword .col1b ,edx |
end if |
mov edx,dword .tex_x1 |
xchg edx,dword .tex_x2 |
mov dword .tex_x1 ,edx |
.sort1: |
cmp bx,cx |
jle .sort2 |
xchg ebx,ecx |
if Ext>=MMX |
movq mm0, .col2r ; exchange r, g, b, z |
movq mm1, .col3r |
movq .col3r ,mm0 |
movq .col2r ,mm1 |
else |
mov edx,dword .col2r ; r, g |
xchg edx,dword .col3r |
mov dword .col2r,edx |
mov edx,dword .col2b ; b, z |
xchg edx,dword .col3b |
mov dword .col2b,edx |
end if |
mov edx,dword .tex_x2 |
xchg edx,dword .tex_x3 |
mov dword .tex_x2,edx |
jmp .sort3 |
.sort2: |
push eax ebx ecx ; store in variables |
; push ebx |
; push ecx |
;****************** delta computng zone ************** |
;+++++++++ first zone |
mov bx,.y2 ; calc delta12 |
sub bx,.y1 |
jnz .dx12_make |
mov ecx,7 |
@@: |
push dword 0 |
loop @b |
jmp .dx12_done |
.dx12_make: |
mov ax,.x2 |
sub ax,.x1 |
cwde |
movsx ebx,bx |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dx12,eax |
push eax |
if 0 ; Ext=SSE |
movd mm0,.col1r ; 2 words r, g |
pxor mm1,mm1 |
punpcklwd mm0,mm1 |
cvtpi2ps xmm0,mm0 |
movlhps xmm0,xmm0 |
movd mm0,.col1g ; 2 words b, z |
punpcklwd mm0,mm1 |
cvtpi2ps xmm0,mm0 |
; xmm0=four float double words |
divss xmm0,.pack3 |
;convert and insert mm0 to lower xmm1 .. |
end if |
mov ax,word .tex_x2 |
sub ax,word .tex_x1 |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .tex_dx12r,eax |
push eax |
mov ax,word .tex_y2 |
sub ax,word .tex_y1 |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .tex_dx12,eax |
push eax |
mov ax,word .z2 |
sub ax,word .z1 |
cwde |
shl eax,CATMULL_SHIFT |
cdq |
idiv ebx |
; mov .dz12,eax |
push eax ; .dza12 |
mov ax,word .col2r |
sub ax,word .col1r |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dc12r,eax |
push eax |
mov ax,word .col2g |
sub ax,word .col1g |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dc12g,eax |
push eax |
mov ax,word .col2b ;;--- |
sub ax,word .col1b |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dc12b,eax |
push eax |
;+++++++++++++++++ second zone +++++++++++++ |
.dx12_done: |
mov bx,.y3 ; calc delta23 |
sub bx,.y2 |
jnz .dx23_make |
mov ecx,7 |
@@: |
push dword 0 |
loop @b |
jmp .dx23_done |
.dx23_make: |
mov ax,.x3 |
sub ax,.x2 |
cwde |
movsx ebx,bx |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dx23,eax |
push eax |
mov ax,word .tex_x3 |
sub ax,word .tex_x2 |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .tex_dx23,eax |
push eax |
mov ax,word .tex_y3 |
sub ax,word .tex_y2 |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .tex_dy23,eax |
push eax |
mov ax,word .z3 |
sub ax,word .z2 |
cwde ; |
shl eax,CATMULL_SHIFT ; 2222222 |
cdq ; 2 2 |
idiv ebx ; 2 |
; mov .dz23,eax ; 2 |
push eax ; .dza12 ; 2 |
; 2 |
mov ax,word .col3r ; 2 |
sub ax,word .col2r ; 2222222 |
cwde ; second delta |
shl eax,ROUND ; |
cdq ; |
idiv ebx ; |
; mov .dc23r,eax ; |
push eax |
mov ax,word .col3g |
sub ax,word .col2g |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dc23g,eax |
push eax |
mov ax,word .col3b ;;--- |
sub ax,word .col2b |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dc23b,eax |
push eax |
.dx23_done: |
;++++++++++++++++++third zone++++++++++++++++++++++++ |
mov bx,.y3 ; calc delta13 |
sub bx,.y1 |
jnz .dx13_make |
mov ecx,7 |
@@: |
push dword 0 |
loop @b |
jmp .dx13_done |
.dx13_make: |
mov ax,.x3 |
sub ax,.x1 |
cwde |
movsx ebx,bx |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dx13,eax |
push eax |
mov ax,word .tex_x3 ; triangle b |
sub ax,word .tex_x1 |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .tex_dx13r,eax |
push eax |
mov ax,word .tex_y3 |
sub ax,word .tex_y1 |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .tex_dy13,eax |
push eax |
mov ax,word .z3 |
sub ax,word .z1 ; 333333333 |
cwde ; 3 3 |
shl eax,CATMULL_SHIFT ; 3 |
cdq ; 3 |
idiv ebx ; 3 |
; mov .dz13,eax ; 3 |
push eax ; .dza12 ; 3 |
; 3 |
mov ax,word .col3r ; 3333333333 |
sub ax,word .col1r ; 3 |
cwde ; 3 |
shl eax,ROUND ; 3 |
cdq ; 3 |
idiv ebx ; 3 |
; mov .dc13r,eax ; 3 3 |
push eax ; 33333333 |
mov ax,word .col3g |
sub ax,word .col1g |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dc13g,eax |
push eax |
mov ax,word .col3b ;;--- |
sub ax,word .col1b |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dc13b,eax |
push eax |
.dx13_done: |
; <<<<<<< ::delta zone end+++++++++++++++++++++ >>>>>>>> |
sub esp,55 ;(12*4) |
movsx eax,.x1 ; eax - cur x1 |
shl eax,ROUND ; ebx - cur x2 |
mov ebx,eax |
movsx edx,word .z1 |
shl edx,CATMULL_SHIFT |
mov .zz1,edx |
mov .zz2,edx |
movzx edi,word .col1r |
shl edi,ROUND |
mov .cur1r,edi |
mov .cur2r,edi |
movzx esi,word .col1g |
shl esi,ROUND |
mov .cur1g,esi |
mov .cur2g,esi |
movzx edx,word .col1b |
shl edx,ROUND |
mov .cur1b,edx |
mov .cur2b,edx |
movzx edi,word .tex_x1 |
shl edi,ROUND |
mov .scan_x1,edi |
mov .scan_x2,edi |
movzx edx,word .tex_y1 |
shl edx,ROUND |
mov .scan_y1,edx |
mov .scan_y2,edx |
mov cx,.y1 |
cmp cx,.y2 |
jge .loop1_end |
.loop_1: |
; push eax ebx ebp |
pushad |
push .tex_ptr |
push .scr_buff |
push .z_ptr |
push cx |
push .zz2 |
push .scan_x2 |
push dword .scan_y2 |
push dword .cur2r |
push .cur2g |
push dword .cur2b |
push .zz1 |
push .scan_x1 |
push dword .scan_y1 |
push dword .cur1r |
push .cur1g |
push dword .cur1b |
sar eax,ROUND |
sar ebx,ROUND |
call horizontal_tex_grd_line |
; pop ebp ebx eax |
popad |
if (Ext = MMX)|(Ext=SSE) |
movq mm0,.cur1b |
movq mm1,.cur1r |
movq mm2,.scan_y1 |
movq mm3,.cur2b |
movq mm4,.cur2r |
movq mm5,.scan_y2 |
paddd mm0,.dc13b |
paddd mm1,.dc13r |
paddd mm2,.tex_dy13 |
paddd mm3,.dc12b |
paddd mm4,.dc12r |
paddd mm5,.tex_dy12 |
movq .cur1b,mm0 |
movq .cur1r,mm1 |
movq .scan_y1,mm2 |
movq .cur2b,mm3 |
movq .cur2r,mm4 |
movq .scan_y2,mm5 |
end if |
if Ext >= SSE2 |
movups xmm0,.cur1b |
movups xmm1,.dc13b |
movups xmm2,.cur2b |
movups xmm3,.dc12b |
movq mm2,.scan_y1 |
movq mm5,.scan_y2 |
paddd xmm0,xmm1 |
paddd xmm2,xmm3 |
paddd mm2,.tex_dy13 |
paddd mm5,.tex_dy12 |
movq .scan_y1,mm2 |
movq .scan_y2,mm5 |
movups .cur1b,xmm0 |
movups .cur2b,xmm2 |
end if |
if Ext = NON |
mov edx,.dc13b |
add .cur1b,edx |
mov esi,.dc13g |
add .cur1g,esi |
mov edi,.dc13r |
add .cur1r,edi |
mov edx,.dz13 |
add .zz1,edx |
mov edx,.tex_dx13 |
add .scan_x1,edx |
mov esi,.tex_dy13 |
add .scan_y1,esi |
mov edi,.dc12b |
add .cur2b,edi |
mov esi,.dc12g |
add .cur2g,esi |
mov edx,.dc12r |
add .cur2r,edx |
mov edi,.tex_dx12 |
add .scan_x2,edi |
mov esi,.tex_dy12 |
add .scan_y2,esi |
mov edx,.dz12 |
add .zz2,edx |
end if |
add eax,.dx13 |
add ebx,.dx12 |
inc cx |
cmp cx,.y2 |
jl .loop_1 |
.loop1_end: |
movzx ecx,.y2 |
cmp cx,.y3 |
jge .loop2_end |
movsx ebx,.x2 ; eax - cur x1 |
shl ebx,ROUND ; ebx - cur x2 |
movsx edx,word .z2 |
shl edx,CATMULL_SHIFT |
; mov .zz1,edx |
mov .zz2,edx |
movzx edi,word .col2r |
shl edi,ROUND |
; mov .cur1r,edi |
mov .cur2r,edi |
movzx esi,word .col2g |
shl esi,ROUND |
; mov .cur1g,esi |
mov .cur2g,esi |
movzx edx,word .col2b |
shl edx,ROUND |
; mov .cur1b,edx |
mov .cur2b,edx |
movzx edi,word .tex_x2 |
shl edi,ROUND |
; mov .scan_x1,edi |
mov .scan_x2,edi |
movzx edx,word .tex_y2 |
shl edx,ROUND |
; mov .scan_y1,edx |
mov .scan_y2,edx |
.loop_2: |
pushad |
push .tex_ptr |
push .scr_buff |
push .z_ptr |
push cx |
push .zz2 |
push .scan_x2 |
push dword .scan_y2 |
push dword .cur2r |
push .cur2g |
push dword .cur2b |
push .zz1 |
push .scan_x1 |
push dword .scan_y1 |
push dword .cur1r |
push .cur1g |
push dword .cur1b |
sar eax,ROUND |
sar ebx,ROUND |
call horizontal_tex_grd_line |
popad |
if (Ext = MMX)|(Ext=SSE) |
movq mm0,.cur1b |
movq mm1,.cur1r |
movq mm2,.scan_y1 |
movq mm3,.cur2b |
movq mm4,.cur2r |
movq mm5,.scan_y2 |
paddd mm0,.dc13b |
paddd mm1,.dc13r |
paddd mm2,.tex_dy13 |
paddd mm3,.dc23b |
paddd mm4,.dc23r |
paddd mm5,.tex_dy23 |
movq .cur1b,mm0 |
movq .cur1r,mm1 |
movq .scan_y1,mm2 |
movq .cur2b,mm3 |
movq .cur2r,mm4 |
movq .scan_y2,mm5 |
end if |
if Ext >= SSE2 |
movups xmm0,.cur1b |
movups xmm1,.dc13b |
movups xmm2,.cur2b |
movups xmm3,.dc23b |
movq mm2,.scan_y1 |
movq mm5,.scan_y2 |
paddd xmm0,xmm1 |
paddd xmm2,xmm3 |
paddd mm2,.tex_dy13 |
paddd mm5,.tex_dy23 |
movq .scan_y1,mm2 |
movq .scan_y2,mm5 |
movups .cur1b,xmm0 |
movups .cur2b,xmm2 |
end if |
if Ext = NON |
mov edx,.dc13b |
add .cur1b,edx |
mov esi,.dc13g |
add .cur1g,esi |
mov edi,.dc13r |
add .cur1r,edi |
mov edx,.tex_dx13 |
add .scan_x1,edx |
mov esi,.tex_dy13 |
add .scan_y1,esi |
mov edx,.dz13 |
add .zz1,edx |
mov edi,.dc23b |
add .cur2b,edi |
mov esi,.dc23g |
add .cur2g,esi |
mov edx,.dc23r |
add .cur2r,edx |
mov edi,.tex_dx23 |
add .scan_x2,edi |
mov esi,.tex_dy23 |
add .scan_y2,esi |
mov edx,.dz23 |
add .zz2,edx |
end if |
add eax,.dx13 |
add ebx,.dx23 |
inc cx |
cmp cx,.y3 |
jl .loop_2 |
.loop2_end: |
mov esp,ebp |
ret 36 |
horizontal_tex_grd_line: |
;in: |
; eax : x1, ebx : x2 |
.tex_ptr equ [ebp+62] |
.screen equ [ebp+58] |
.z_buffer equ [ebp+54] |
.y equ [ebp+52] |
.z2 equ [ebp+48] |
.tex_x2 equ [ebp+44] |
.tex_y2 equ [ebp+40] |
.r2 equ [ebp+36] |
.g2 equ [ebp+32] |
.b2 equ [ebp+28] |
.z1 equ [ebp+24] |
.tex_x1 equ [ebp+20] |
.tex_y1 equ [ebp+16] |
.r1 equ [ebp+12] |
.g1 equ [ebp+8] |
.b1 equ [ebp+4] |
.x1 equ word[ebp-2] |
.x2 equ word[ebp-4] |
.dz equ dword[ebp-8] |
.db equ dword[ebp-12] |
.dg equ dword[ebp-16] |
.dr equ dword[ebp-20] |
.dtex_x equ dword[ebp-24] |
.dtex_y equ dword[ebp-28] |
.c_ty equ [ebp-32] |
.c_tx equ [ebp-36] |
.cb equ [ebp-40] |
.cg equ [ebp-44] |
.cr equ [ebp-48] |
.t_col equ [ebp-52] |
.dtex_yM equ qword[ebp-28] |
.drM equ qword[ebp-20] |
.dbM equ qword[ebp-12] |
mov ebp,esp |
; sub esp,30 |
mov cx,word .y |
or cx,cx |
jl .quit_l |
cmp cx,word[size_y_var] ;SIZE_Y |
jge .quit_l |
cmp ax,bx |
je .quit_l |
jl @f |
xchg eax,ebx |
if Ext=NON |
mov ecx,dword .r1 |
xchg ecx, .r2 |
mov dword .r1, ecx |
mov ecx,dword .g1 |
xchg ecx, .g2 |
mov dword .g1, ecx |
mov ecx,dword .b1 |
xchg ecx, .b2 |
mov dword .b1, ecx |
mov ecx,dword .tex_x1 |
xchg ecx, .tex_x2 |
mov dword .tex_x1, ecx |
mov ecx,dword .tex_y1 |
xchg ecx, .tex_y2 |
mov dword .tex_y1, ecx |
mov ecx,dword .z1 |
xchg ecx, .z2 |
mov dword .z1, ecx |
end if |
if (Ext=MMX) |
movq mm0,.b1 ; b, g |
movq mm1,.b2 |
movq .b1, mm1 |
movq .b2, mm0 |
movq mm2,.r1 ; r, y |
movq mm3,.r2 |
movq .r1,mm3 |
movq .r2,mm2 |
movq mm4,.tex_x1 ; x, z |
movq mm5,.tex_x2 |
movq .tex_x1,mm5 |
movq .tex_x2,mm4 |
end if |
if Ext>=SSE |
movups xmm0,.b1 |
movups xmm1,.b2 |
movups .b1,xmm1 |
movups .b2,xmm0 |
movq mm4,.tex_x1 ; x, z |
movq mm5,.tex_x2 |
movq .tex_x1,mm5 |
movq .tex_x2,mm4 |
end if |
@@: |
or bx,bx |
jle .quit_l |
cmp ax,word[size_x_var] ;SIZE_X |
jge .quit_l |
push ax |
push bx |
mov eax,.z2 ; delta zone************ |
sub eax,.z1 |
cdq |
mov bx,.x2 |
sub bx,.x1 |
movsx ebx,bx |
idiv ebx |
push eax ; .dz |
mov eax,.b2 |
sub eax,.b1 |
cdq |
idiv ebx |
push eax ; .db |
mov eax,.g2 |
sub eax,.g1 |
cdq |
idiv ebx |
push eax ; .dg |
mov eax,.r2 |
sub eax,.r1 |
cdq |
idiv ebx |
push eax ; .dr |
mov eax,.tex_x2 |
sub eax,.tex_x1 |
cdq |
idiv ebx |
push eax ; .dtex_x |
mov eax,.tex_y2 |
sub eax,.tex_y1 |
cdq |
idiv ebx |
push eax ; .dtey_x |
cmp .x1,0 |
jg @f |
mov eax,.dz ; clipping |
movsx ebx,.x1 |
neg ebx |
imul ebx |
add .z1,eax |
mov .x1,0 |
mov eax,.dr |
imul ebx |
add .r1,eax |
;if Ext=NON |
mov eax,.dg |
imul ebx |
add .g1,eax |
mov eax,.db |
imul ebx |
add .b1,eax |
mov eax,.dtex_x |
imul ebx |
add .tex_x1,eax |
mov eax,.dtex_y |
imul ebx |
add .tex_y1,eax |
@@: |
movsx edx,word[size_x_var] ;SIZE_X |
cmp .x2,dx |
jl @f |
mov .x2,dx |
@@: |
; calc line addres begin in screen and Z buffer |
movsx eax,word .y |
mul edx |
movsx edx,.x1 |
add eax,edx |
mov esi,eax |
shl esi,2 |
add esi,.z_buffer |
lea eax,[eax*3] |
mov edi,.screen |
add edi,eax |
mov cx,.x2 |
sub cx,.x1 |
movzx ecx,cx |
; init current variables |
push dword .tex_y1 |
;if Ext=NON |
push dword .tex_x1 |
push dword .b1 |
push dword .g1 |
push dword .r1 |
if Ext>=MMX |
movq mm4,.cr ; lo -> r,g |
movq mm6,.cb ; hi -> b, tex_x |
pxor mm0,mm0 |
end if |
mov ebx,.z1 |
.ddraw: |
cmp ebx,dword[esi] |
jge @f |
mov eax,.c_ty |
; if ROUND<TEX_SHIFT |
; shl eax,TEX_SHIFT-ROUND |
; end if |
; if ROUND>TEX_SHIFT |
; shr eax,ROUND-TEX_SHIFT |
; end if |
shr eax,ROUND |
shl Eax,TEX_SHIFT |
mov edx,.c_tx ; calc texture pixel mem addres |
shr edx,ROUND |
add eax,edx |
and eax,TEXTURE_SIZE ; cutting |
lea eax,[3*eax] |
add eax,.tex_ptr |
mov dword[esi],ebx |
if Ext = NON |
mov eax,dword[eax] |
; mov .tex_col,eax |
push ax |
shl eax,8 |
pop ax |
mov edx,.cr |
sar edx,ROUND |
mul dl ; al*dl |
shr ax,8 |
stosb |
ror eax,16 |
push ax |
mov edx,.cg |
sar edx,ROUND |
mul dl |
shr ax,8 |
stosb |
pop ax |
shr ax,8 |
mov edx,.cb |
sar edx,ROUND |
mul dl |
shr ax,8 |
stosb |
jmp .no_skip |
else |
movd mm1,[eax] |
punpcklbw mm1,mm0 |
movq mm3,mm4 ;.cr ; lo -> r,g |
movq mm5,mm6 ;.cb ; lo -> b,tex_x |
psrld mm3,ROUND ; |
psrld mm5,ROUND ; |
packssdw mm3,mm5 |
pmullw mm1,mm3 |
psrlw mm1,8 |
packuswb mm1,mm0 |
movd [edi],mm1 |
end if |
mov dword[esi],ebx |
if Ext = NON |
jmp .no_skip |
end if |
@@: |
add edi,3 |
.no_skip: |
add esi,4 |
add ebx,.dz |
mov eax,.dtex_x |
add .c_tx, eax |
mov edx,.dtex_y |
add .c_ty, edx |
if Ext=NON |
mov eax,.dr |
add .cr,eax |
mov edx,.dg |
add .cg,edx |
mov eax,.db |
add .cb,eax |
else |
paddd mm4,.drM |
paddd mm6,.dbM |
;; paddd mm7,.dtex_y ; mm4 - b, g |
;; movq .c_tx,mm7 |
; mm6 - r, x |
end if ; mm7 - y, x |
dec ecx |
jnz .ddraw |
.quit_l: |
mov esp,ebp |
ret 42+20 ; horizontal line |
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |
/programs/demos/view3ds/history.txt |
---|
0,0 → 1,183 |
View3ds 0.071 - VIII 2020 |
1. New displaying model - glass - it's two pass rendering. First pass calculates |
Z position of all front pixels, second render image with adding reflective |
component of light only for front pixels. Transparent effect by adding with saturation. |
2. I removed bug with performing generation object after choosing 'emboss' option. |
----------------------------------------------------------------------------------- |
View3ds 0.070 - VII 2020 |
1. Some keys support by Leency. |
2. New displaying model - real Phong - real not fake normal vector interpolation, |
normalising it and calculating dot product (one for each light). |
It requires SSE3. (by me, Maciej Guba) |
----------------------------------------------------------------------------------- |
View3ds 0.069 - May 2020 |
1. KPacked files support by Leency. |
2. 32bit vertices indexes and ability to load whole RAM limited objects. |
(Above 65535 vertices and triangles), (by me). |
3. I switch off painters algotithm mode (depth sorting). In app impelementetion it has |
limited vertices count and produce less quality image than Z buffer Catmull algo. |
In addition this switch off reduces app size, (by me). |
----------------------------------------------------------------------------------- |
View3ds 0.068 - XI 2016 |
1. Editing option - new 'editor' button. |
2. For now I disable perspective correction, to make implemtation |
of editing option easier. |
----------------------------------------------------------------------------------- |
View3ds 0.067 - XI 2016 |
1. Sizable app window. |
----------------------------------------------------------------------------------- |
View3ds 0,066 - X 2016 |
1. App window size according to current screen resolution. |
2. New emboss procedure. |
----------------------------------------------------------------------------------- |
View3ds 0.065 - Feb 2015 |
1. Asc files support. |
----------------------------------------------------------------------------------- |
View3ds 0.064 - Nov 2012 |
1. Bug fixes. |
----------------------------------------------------------------------------------- |
View3ds 0.063 - X 2012 |
1. Postprocessing effect - wave. Ability to change amplitude and frequency. |
----------------------------------------------------------------------------------- |
View3ds 0.062 - VII 2012. |
1. Counter fix by Mario. |
2. New drawing model - smooth shaded lines (edges only view) by me. |
----------------------------------------------------------------------------------- |
View3ds 0.061 - Nov 2011. |
1. Two new buttons to increase and decrease brightness. |
----------------------------------------------------------------------------------- |
View3ds 0.060 - Aug 2011. |
1. Header fix by Leency. |
2. SSE2 optimizations by me. (Most visable in BUMP_TEX mode.) |
----------------------------------------------------------------------------------- |
View3ds 0.059 - June 2011. |
1. Bump and pararell two texture mapping functions optimizations. |
(files bump_cat.inc & two_tex.inc) |
On my P4 changes are rather non visable, but on dual core in KlbrInWin |
optimizations runs preety nice. |
----------------------------------------------------------------------------------- |
View3ds 0.058 - June 2011. |
1. Blur function optimization on SSE and SSE2 (buttons 'blur' and 'fire'). |
----------------------------------------------------------------------------------- |
View3ds 0.057 - April 2011. |
1. By opening file bigger then ~18 KB, and choosing env mode program terminate. |
I remove this bug |
----------------------------------------------------------------------------------- |
View3ds 0.056 - February 2011. |
1. MMX optimizations in 2tex mode (file two_tex.inc). |
2. Tiny SSE optimizations (file BUMP_CAT.INC). |
3. Bit (two instructions) improved random light generation procedure. |
----------------------------------------------------------------------------------- |
View3ds 0.055 - January 2011. |
1. SSE optimizations (file BUMP_TEX.INC). |
2. Compiles correctly in newest FASM. |
----------------------------------------------------------------------------------- |
View3ds 0.054 - December 2009 (Updated January 2010). |
1. Skinned window by Leency. |
2. Optimizations. |
3. Re map texture, bumps option - allow spherical mapping around each axle (X,Y,Z). |
4. Problem with too small memory to generate object fixed. (Problem ocurred with |
house.3ds object and others objects contains less than 1000 faces and points). |
----------------------------------------------------------------------------------- |
View3ds 0.053 - (?) 2009 |
1. Optimizations. |
----------------------------------------------------------------------------------- |
View3ds 0.052 - November 2007. |
1. Memory for file is allocated dynamically. |
2. Optimizations. |
Note: compiling correct only for KolibriOS. |
----------------------------------------------------------------------------------- |
View3ds 0.051 - October 2007. |
1. More smooth texture mapping in tex and txgr shading model and others based on |
tex3.inc, tex_cat.inc shading models. |
2. Predefined three, I hope, nice lights. |
----------------------------------------------------------------------------------- |
View3ds 0.05 - (?) 2007 |
1. New shading model: cubic environment mapping with 1.5 kb light buffer. |
2. Bumps optionally according to texture. ( It gives so called texture with |
shifts in bumps + texture shading model. ) |
3. Bumps depth button. |
----------------------------------------------------------------------------------- |
View3ds 0.04 - March 2007. |
1. New shading model: bump + texture. Only version with z coordinate |
interpolation. |
2. SSE optimizations ( files: two_tex.inc and bump_tex.inc ) |
----------------------------------------------------------------------------------- |
View3ds 0.03 - March 2007. |
1. Two shading models: smooth + texture, spherical environment mapping + texture. |
Version only with z coordinate interpolation. |
2. Bit changed rotary. I took attempt in SSE instuctions. ( matrix multiplication ) |
3. Color position depend drawing model instead spot light ( I hope,spot light come |
back in future ). |
----------------------------------------------------------------------------------- |
View3ds 0.02 - December 2006. |
1. New shading models - "spot" - spot light (only one, it's very CPU hungry model, |
and there is no easy way to implement buffer) with light attenuation (In my |
implmentation works not perfect); "dots" - app draws only points (with no culling). |
2. Some loseless operations "mirror": according to each axis, rotary 90 degrees. |
3. Postprocesing efects: Emboss (use blur to make edges more visable), fire ( be |
carefull during `fire + embos`parallel using). |
4. "Move" - Changes meaning of 'add vector' buttons: |
used "obj" move object, "camr" move camera (in this option use culling = 'off' |
I must make culling procedure bit advanced). |
5. Generate button. Few objects generating (with bad normals) |
6. Some optimizations on MMX. |
7. I took an attempt to memory managing functions, but it decreased speed (no aligned |
memory in Menuet functions?) |
There is really much work to do and I see disorder in app code. |
Greetings for all, especially Madis Kalme for .3ds files support and good vibrations. ;) |
Merry Christmas and happy new year. |
----------------------------------------------------------------------------------- |
App View3ds ver 0.01 - November 2006. |
1. Object generating (for now only one). When no parameter specified or error occured |
during reading file from disk, app generate object. No teapot.3ds needed on ramdrive, |
but, if this file exist it would be read as default. |
2. Bug in read_from_file procedure fixed. (In May, when I made shading light vector |
depend, I demaged bit Madis' procedure.) |
3. Backface culling on/off option. (Some objects need culling off - they have mismatched |
normal vectors. Example: iron.3ds, sink.3ds, the generated one.) |
4. Random lights procedure. |
5. Spherical (instead old - planar ) bump, texture mapping. |
6. Bit improved menu. |
7. Blur. |
----------------------------------------------------------------------------------- |
App "View3ds" - it's very early, still unfinished version but I want show you it. |
Based on earlier demos. |
1. 3ds object import as a parameter ( for now only short names supported ) |
I updated Kfar app - it can run view3ds with parameter. You must copy it on |
ramdrive. You could do such funny thing: Run updated Kfar in KolbrInWin, |
before them set in KolInWin.ini file path to ramdrive, where yo have "view3ds", |
choose 3ds file ... Emulator will run View3ds with selected file. |
If no parameter specified, app try open tpot.3ds from ramdrive. If tpot.3ds |
don't exist on rd, app hang. |
2. Many lights. Every light - unlinear model ( Phong illumination ). For now |
no light setting option. |
3. Light buffer for grd, flat model. |
/programs/demos/view3ds/readme.txt |
---|
0,0 → 1,46 |
View3ds 0.072 - tiny viewer to .3ds and .asc files with several graphics |
effects implementation. |
What's new? |
1. New displaying model - texturing with bilinear filtering and transparency |
simultanusly. Note that filtering is done only inside polygon. To better |
quality of image there is a need to use floats coordinates of texture to pass |
as arguments to single triangle rendering proc. |
2. Optimizations. |
3. SSE3 version runs correct on SSE2 cpus, but real phong, glass and |
transparented texturing with filtering rendering models are disabled. |
Buttons description: |
1. rotary: choosing rotary axle: x, y, x+y. |
2. shd. model: choosing shading model: flat, grd (smooth), env (spherical |
environment mapping, bump (bump mapping), tex (texture mapping), |
pos (position shading depend), dots (app draws only points - nodes of object), |
txgrd (texture mapping + smooth shading), 2tex (texture mapping + spherical |
environment mapping), bmap (bump + texture mapping), cenv (cubic environment |
mapping), grdl (Gouraud lines - edges only), rphg (real Phong), glas (glass effect), |
ptex (real Phong + texturing + transparency). |
3. speed: idle, full. |
4,5. zoom in, out: no comment. |
6. catmull: disabled |
7. culling: backface culling on/ off. |
8. rand. light: Randomize 3 unlinear lights( so called Phong's illumination). |
9. Blur: blur N times; N=0,1,2,3,4,5 |
10.11,12,13. loseless operations (rotary 90, 180 degrees). |
12. emboss: Do emboss effect( flat bumps ), use 'bumps deep' button to do edges more deep. |
13. fire: do motion blur ( looks like fire ). |
14. move: changes meaning x,y,z +/- buttons -> obj: moving object, camr: moving camera, wave: x,y +/- increase, |
decrease wave effect frequency and amplitude. |
15. generate: Generates some objects: node, Thorn Crown, heart... |
16. bumps: random, according to texture. |
17. bumps deep -> create bumps deeper or lighter. |
18. re-map tex -> re-map texture and bump map coordinates, to change spherical mapping |
around axle use 'xchg' and 'mirror' buttons, then press 're-map tex' button. |
19. bright + -> increase picture brightness. |
20. bright - -> decrease picture brightness. |
21. wav effect -> do effect based sine function. |
22. editor -> setting editing option. If is "on" then red bars are draw according to each vertex, Pressing |
and moving left mouse button (cursor must be on handler)- change vertex position. If left mouse button |
is released apply current position. You may also decrease whole handlers count by enable culling (using |
appropriate button) - some back handlers become hidden. |
Maciej Guba III 2021 |
/programs/demos/view3ds/tex_cat.inc |
---|
0,0 → 1,611 |
;TEX_X = 512 |
;TEX_Y = 512 |
;ROUND equ 8 |
;SIZE_X = 512 |
;SIZE_Y = 512 |
;TEX_SHIFT = 9 |
CATMULL_SHIFT equ 8 |
;------------------------------------------------------------------------ |
;- Procedure drawing textured triangle using Catmull Z-buffer algorithm - |
;------------------------------------------------------------------------ |
tex_triangle_z: |
;----------in - eax - x1 shl 16 + y1 |
;-------------- ebx - x2 shl 16 + y2 |
;---------------ecx - x3 shl 16 + y3 |
;---------------edx - pointer to Z-buffer |
;---------------esi - pointer to texture buffer |
;---------------edi - pointer to screen buffer |
;-------------stack - texture coordinates |
;------------------ - z coordinates |
.tex_x1 equ ebp+4 |
.tex_y1 equ ebp+6 |
.tex_x2 equ ebp+8 |
.tex_y2 equ ebp+10 |
.tex_x3 equ ebp+12 |
.tex_y3 equ ebp+14 |
.z1 equ word[ebp+16] |
.z2 equ word[ebp+18] |
.z3 equ word[ebp+20] |
.tex_ptr equ dword[ebp-4] ; pointer to texture |
.z_ptr equ dword[ebp-8] ; pointer to z-buffer |
.x1 equ word[ebp-10] |
.y1 equ word[ebp-12] |
.x2 equ word[ebp-14] |
.y2 equ word[ebp-16] |
.x3 equ word[ebp-18] |
.y3 equ word[ebp-20] |
.dx12 equ dword[ebp-24] |
.tex_dx12 equ dword[ebp-28] |
.tex_dy12 equ dword[ebp-32] |
.dz12 equ dword[ebp-36] |
.dx13 equ dword[ebp-40] |
.tex_dx13 equ dword[ebp-44] |
.tex_dy13 equ dword[ebp-48] |
.dz13 equ dword[ebp-52] |
.dx23 equ dword[ebp-56] |
.tex_dx23 equ dword[ebp-60] |
.tex_dy23 equ dword[ebp-64] |
.dz23 equ dword[ebp-68] |
.scan_x1 equ dword[ebp-72] |
.scan_x2 equ dword[ebp-76] |
.scan_y1 equ dword[ebp-80] |
.scan_y2 equ dword[ebp-84] |
.cz1 equ dword[ebp-88] |
.cz2 equ dword[ebp-92] |
mov ebp,esp |
push esi ; store memory pointers |
push edx |
.tt_sort3: |
cmp ax,bx ;sort all parameters |
jle .tt_sort1 |
xchg eax,ebx |
mov edx,dword [.tex_x1] |
xchg edx,dword [.tex_x2] |
mov dword[.tex_x1],edx |
mov dx,.z1 |
xchg dx,.z2 |
mov .z1,dx |
.tt_sort1: |
cmp bx,cx |
jle .tt_sort2 |
xchg ebx,ecx |
mov edx,dword [.tex_x2] |
xchg edx,dword [.tex_x3] |
mov dword [.tex_x2],edx |
mov dx,.z2 |
xchg dx,.z3 |
mov .z2,dx |
jmp .tt_sort3 |
.tt_sort2: |
push eax ; and store to user friendly variables |
push ebx |
push ecx |
mov edx,80008000h ; eax,ebx,ecx are ANDd together into edx which means that |
and edx,ebx ; if *all* of them are negative a sign flag is raised |
and edx,ecx |
and edx,eax |
test edx,80008000h ; Check both X&Y at once |
jne .tt_loop2_end |
; cmp ax,SIZE_Y |
; jl @f |
; cmp bx,SIZE_Y |
; jl @f |
; cmp cx,SIZE_Y |
; jl @f |
ror eax,16 |
ror ebx,16 |
ror ecx,16 |
; cmp ax,SIZE_X |
; jl @f |
; cmp bx,SIZE_X |
; jl @f |
; cmp cx,SIZE_X |
; jl @f |
; jmp .tt_loop2_end |
@@: |
mov eax,dword[.tex_x1] ; texture coords must be in [0..TEX_X(Y)] |
mov ebx,dword[.tex_x2] |
mov ecx,dword[.tex_x3] |
mov edx,eax |
or edx,ebx |
or edx,ecx |
test edx,80008000h |
jne .tt_loop2_end |
cmp ax,TEX_X |
jge .tt_loop2_end |
cmp bx,TEX_X |
jge .tt_loop2_end |
cmp cx,TEX_X |
jge .tt_loop2_end |
ror eax,16 |
ror ebx,16 |
ror ecx,16 |
cmp ax,TEX_Y |
jge .tt_loop2_end |
cmp bx,TEX_Y |
jge .tt_loop2_end |
cmp cx,TEX_Y |
jge .tt_loop2_end |
movsx ebx,.y2 ; calc delta |
sub bx,.y1 |
jnz .tt_dx12_make |
xor edx,edx |
mov ecx,4 |
@@: |
push edx |
loop @b |
jmp .tt_dx12_done |
.tt_dx12_make: |
mov ax,.x2 |
sub ax,.x1 |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dx12,eax ; dx12 = (x2-x1)/(y2-y1) |
push eax |
mov ax,word[.tex_x2] |
sub ax,word[.tex_x1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov [.tex_dx12],eax ; tex_dx12 = (tex_x2-tex_x1)/(y2-y1) |
push eax |
mov ax,word[.tex_y2] |
sub ax,word[.tex_y1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov [.tex_dy12],eax ; tex_dy12 = (tex_y2-tex_y1)/(y2-y1) |
push eax |
mov ax,.z2 |
sub ax,.z1 |
cwde |
shl eax,CATMULL_SHIFT |
cdq |
idiv ebx |
push eax |
.tt_dx12_done: |
movsx ebx,.y3 ; calc delta |
sub bx,.y1 |
jnz .tt_dx13_make |
xor edx,edx |
mov ecx,4 |
@@: |
push edx |
loop @b |
jmp .tt_dx13_done |
.tt_dx13_make: |
mov ax,.x3 |
sub ax,.x1 |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dx12,eax ; dx13 = (x3-x1)/(y3-y1) |
push eax |
mov ax,word[.tex_x3] |
sub ax,word[.tex_x1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov [.tex_dx12],eax ; tex_dx13 = (tex_x3-tex_x1)/(y3-y1) |
push eax |
mov ax,word[.tex_y3] |
sub ax,word[.tex_y1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov [.tex_dy12],eax ; tex_dy13 = (tex_y3-tex_y1)/(y3-y1) |
push eax |
mov ax,.z3 |
sub ax,.z1 |
cwde |
shl eax,CATMULL_SHIFT |
cdq |
idiv ebx |
push eax |
.tt_dx13_done: |
mov bx,.y3 ; calc delta |
sub bx,.y2 |
jnz .tt_dx23_make |
xor edx,edx |
mov ecx,4 |
@@: |
push edx |
loop @b |
jmp .tt_dx23_done |
.tt_dx23_make: |
mov ax,.x3 |
sub ax,.x2 |
cwde |
shl eax,ROUND |
cdq |
movzx ebx,bx |
idiv ebx |
; mov .dx23,eax ; dx23 = (x3-x2)/(y3-y2) |
push eax |
mov ax,word[.tex_x3] |
sub ax,word[.tex_x2] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov [.tex_dx23],eax ; tex_dx23 = (tex_x3-tex_x2)/(y3-y2) |
push eax |
mov ax,word[.tex_y3] |
sub ax,word[.tex_y2] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov [.tex_dy23],eax ; tex_dy23 = (tex_y3-tex_y2)/(y3-y2) |
push eax |
mov ax,.z3 |
sub ax,.z2 |
cwde |
shl eax,CATMULL_SHIFT |
cdq |
idiv ebx |
push eax |
.tt_dx23_done: |
movsx eax,.x1 ;eax - cur x1 |
shl eax,ROUND ;ebx - cur x2 |
mov ebx,eax |
movsx edx, word[.tex_x1] |
shl edx,ROUND |
; mov [.scan_x1],edx |
; mov [.scan_x2],edx |
push edx |
push edx |
movsx edx, word[.tex_y1] |
shl edx,ROUND |
; mov [.scan_y1],edx |
; mov [.scan_y2],edx |
push edx |
push edx |
movsx edx,.z1 |
shl edx,CATMULL_SHIFT |
push edx |
push edx |
mov cx,.y1 |
cmp cx,.y2 |
jge .tt_loop1_end |
.tt_loop1: |
pushad |
push .z_ptr |
push .cz1 ; z coords shifted shl catmull_shift |
push .cz2 |
push .scan_y2 |
push .scan_x2 |
push .scan_y1 |
push .scan_x1 |
push esi ;[.tex_ptr] |
push cx |
sar ebx,ROUND |
push bx |
sar eax,ROUND |
push ax |
call textured_line_z |
popad |
mov edx,.dz13 |
add .cz1,edx |
mov edx,.dz12 |
add .cz2,edx |
mov edx, .tex_dx13 |
add .scan_x1, edx |
mov edx, .tex_dx12 |
add .scan_x2, edx |
mov edx, .tex_dy13 |
add .scan_y1, edx |
mov edx, .tex_dy12 |
add .scan_y2, edx |
add eax, .dx13 |
add ebx, .dx12 |
inc cx |
cmp cx,.y2 |
jl .tt_loop1 |
.tt_loop1_end: |
mov cx,.y2 |
cmp cx,.y3 |
jge .tt_loop2_end |
movsx ebx,.x2 |
shl ebx,ROUND |
movsx edx,.z2 |
shl edx,CATMULL_SHIFT |
mov .cz2,edx |
movzx edx, word [.tex_x2] |
shl edx,ROUND |
mov .scan_x2,edx |
movzx edx, word[.tex_y2] |
shl edx,ROUND |
mov .scan_y2,edx |
.tt_loop2: |
pushad |
push .z_ptr |
push .cz1 ; z coords shifted shl catmull_shift |
push .cz2 |
push .scan_y2 |
push .scan_x2 |
push .scan_y1 |
push .scan_x1 |
push esi ;[.tex_ptr] |
push cx |
sar ebx,ROUND |
push bx |
sar eax,ROUND |
push ax |
call textured_line_z |
popad |
mov edx,.dz13 |
add .cz1,edx |
mov edx,.dz23 |
add .cz2,edx |
mov edx, .tex_dx13 |
add .scan_x1, edx |
mov edx, .tex_dx23 |
add .scan_x2, edx |
mov edx, .tex_dy13 |
add .scan_y1, edx |
mov edx, .tex_dy23 |
add .scan_y2, edx |
add eax, .dx13 |
add ebx, .dx23 |
inc cx |
cmp cx,.y3 |
jl .tt_loop2 |
.tt_loop2_end: |
.tt_end: |
mov esp,ebp |
ret 18 |
textured_line_z: |
;-----in -edi screen buffer pointer |
;------------ stack: |
.x1 equ word [ebp+4] |
.x2 equ word [ebp+6] |
.y equ word [ebp+8] |
.tex_ptr equ dword [ebp+10] |
.tex_x1 equ ebp+14 |
.tex_y1 equ ebp+18 |
.tex_x2 equ ebp+22 |
.tex_y2 equ ebp+26 |
.z2 equ dword [ebp+30] ;z1, z2 coords shifted shl CATMULL_SHIFT |
.z1 equ dword [ebp+34] |
.z_ptr equ dword [ebp+38] |
.tex_dy equ dword [ebp-4] |
.tex_dx equ dword [ebp-8] |
.dz equ dword [ebp-12] |
.cz equ dword [ebp-16] |
.c_tex_x equ dword [ebp-20] ; current tex x |
.m_sft1 equ ebp-28 |
.m_sft2 equ ebp-32 |
; .c_tex_xM equ ebp+14 |
.tex_dxM equ ebp-8 |
mov ebp,esp |
mov ax,.y |
or ax,ax |
jl .tl_quit |
mov bx,[size_y_var] |
dec bx |
cmp ax,bx ;SIZE_Y |
jge .tl_quit |
mov ax,.x1 |
cmp ax,.x2 |
je .tl_quit |
jl .tl_ok |
xchg ax,.x2 ; sort params |
mov .x1,ax |
if Ext >= MMX |
movq mm0,[.tex_x1] |
movq mm1,[.tex_x2] |
movq [.tex_x2],mm0 |
movq [.tex_x1],mm1 |
else |
mov eax,dword[.tex_x1] |
xchg eax,dword[.tex_x2] |
mov dword[.tex_x1],eax |
mov eax,dword[.tex_y1] |
xchg eax,dword[.tex_y2] |
mov dword[.tex_y1],eax |
end if |
mov eax,.z1 |
xchg eax,.z2 |
mov .z1,eax |
.tl_ok: |
mov cx,[size_x_var] |
dec cx |
cmp .x1,cx ;SIZE_X |
jge .tl_quit |
cmp .x2,0 |
jle .tl_quit |
mov bx,.x2 |
sub bx,.x1 |
movsx ebx,bx |
mov eax,dword[.tex_y2] ; calc .dty |
sub eax,dword[.tex_y1] |
cdq |
idiv ebx |
push eax |
mov eax,dword[.tex_x2] ; calc .dtx |
sub eax,dword[.tex_x1] |
cdq |
idiv ebx |
push eax |
mov eax,.z2 ; calc .dz |
sub eax,.z1 |
cdq |
idiv ebx |
push eax |
cmp .x1,0 ; clipping |
jg @f |
movsx ebx,.x1 |
neg ebx |
imul ebx ; eax = .dz * abs(.x1) |
add .z1,eax |
mov .x1,0 |
mov eax,.tex_dy |
imul ebx |
add dword[.tex_y1],eax |
mov eax,.tex_dx |
imul ebx |
add dword[.tex_x1],eax |
@@: |
cmp .x2,cx ;SIZE_X |
jl @f |
mov .x2,cx ;SIZE_X |
@@: |
movsx ebx,.y ; calc mem begin in buffers |
movzx eax,word[size_x_var] ;SIZE_X |
mul ebx |
movsx ebx,.x1 |
add eax,ebx |
mov ebx,eax |
lea eax,[eax*3] |
add edi,eax ; edi - scr buff |
shl ebx,2 |
add .z_ptr,ebx ; z buffer pointer |
mov cx,.x2 |
sub cx,.x1 |
movzx ecx,cx |
;if Ext >= MMX |
; movq mm0,[.tex_x1] |
; movq mm4,mm0 |
; movq mm1,qword[.tex_dxM] |
; mov ebx,.z1 |
; mov eax,.dz |
;else |
mov eax,dword[.tex_x1] |
mov ebx,dword[.tex_y1] |
push .z1 ; .cz |
push eax ;.c_tex_x |
;end if |
mov edx,.z_ptr |
.tl_loop: |
;if Ext >= MMX |
; cmp ebx,[edx] ; ebx - current z |
; jge @f |
; movq mm2,mm0 |
; psrad mm2,ROUND |
; movq mm3,mm2 |
; psrlq mm2,32-TEX_SHIFT |
; paddd mm3,mm2 |
; movd esi,mm3 |
; mov dword[edx],ebx ; renew z buffer |
;else |
; eax - temp |
mov eax,.cz ; ebx - cur tex y shl ROUND |
cmp eax,[edx] ; ecx - l.lenght |
jge @f ; ebx - cur tex_y ; edx - temp |
mov esi,ebx ; edi - scr buff |
sar esi,ROUND ; esi - tex_ptr temp |
shl esi,TEX_SHIFT ; .z_ptr - cur pointer to z buff |
mov eax,.c_tex_x ; .cz - cur z coord shl CATMULL_SHIFT |
sar eax,ROUND |
add esi,eax |
mov eax,.cz |
mov dword[edx],eax ; renew z buffer |
;end if |
and esi,TEXTURE_SIZE |
lea esi,[esi*3] |
add esi,.tex_ptr |
movsd |
dec edi |
jmp .no_skip |
@@: |
add edi,3 |
.no_skip: |
add edx,4 |
;if Ext >= MMX |
; add ebx,eax |
; paddd mm0,mm1 |
;else |
mov eax,.dz |
add .cz,eax |
mov eax,.tex_dx |
add .c_tex_x,eax |
add ebx,.tex_dy |
;end if |
loop .tl_loop |
.tl_quit: |
mov esp,ebp |
ret 30+8 |
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |
/programs/demos/view3ds/two_tex.inc |
---|
0,0 → 1,1105 |
;SIZE_X equ 350 |
;SIZE_Y equ 350 |
;ROUND equ 8 |
;TEX_X equ 512 |
;TEX_Y equ 512 |
;TEXTURE_SIZE EQU (512*512)-1 |
;TEX_SHIFT EQU 9 |
;CATMULL_SHIFT equ 8 |
;TEXTURE_SIZE EQU (TEX_X * TEX_Y)-1 |
;Ext = SSE |
;SSE = 3 |
;MMX = 1 |
;NON = 0 |
;use32 |
;------- Big thanks to Majuma (www.majuma.xt.pl) for absolutely great--- |
;------- DOS 13h mode demos -------------------------------------------- |
;------- Procedure draws triangle with two overlapped textures, I use -- |
;--------Catmull Z-buffer algorithm- (Z coordinate interpolation)------- |
;--------I calc texture pixel by this way: col1*col2/256 --------------- |
two_tex_triangle_z: |
;------------------in - eax - x1 shl 16 + y1 ----------- |
;---------------------- ebx - x2 shl 16 + y2 ----------- |
;---------------------- ecx - x3 shl 16 + y3 ----------- |
;---------------------- edx - pointer to b. texture----- |
;---------------------- esi - pointer to e. texture----- |
;---------------------- edi - pointer to screen buffer-- |
;---------------------- stack : b. tex coordinates------ |
;---------------------- e. tex coordinates------ |
;---------------------- Z position coordinates-- |
;---------------------- pointer io Z buffer----- |
;-- Z-buffer - filled with coordinates as dword -------- |
;-- (Z coor. as word) shl CATMULL_SHIFT ---------------- |
.b_x1 equ ebp+4 ; procedure don't save registers !!! |
.b_y1 equ ebp+6 ; each coordinate as word |
.b_x2 equ ebp+8 |
.b_y2 equ ebp+10 ; b - first texture |
.b_x3 equ ebp+12 |
.b_y3 equ ebp+14 ; e - second texture |
.e_x1 equ ebp+16 |
.e_y1 equ ebp+18 |
.e_x2 equ ebp+20 |
.e_y2 equ ebp+22 |
.e_x3 equ ebp+24 |
.e_y3 equ ebp+26 |
.z1 equ word[ebp+28] |
.z2 equ word[ebp+30] |
.z3 equ word[ebp+32] |
.z_buff equ dword[ebp+34] ; pointer to Z-buffer |
.t_bmap equ dword[ebp-4] ; pointer to b. texture |
.t_emap equ dword[ebp-8] ; pointer to e. texture |
.x1 equ word[ebp-10] |
.y1 equ word[ebp-12] |
.x2 equ word[ebp-14] |
.y2 equ word[ebp-16] |
.x3 equ word[ebp-18] |
.y3 equ word[ebp-20] |
.dx12 equ dword[ebp-24] |
.dbx12 equ dword[ebp-28] |
.dby12 equ dword[ebp-32] |
.dby12q equ [ebp-32] |
.dex12 equ dword[ebp-36] |
.dey12 equ dword[ebp-40] |
.dey12q equ [ebp-40] |
.dz12 equ dword[ebp-44] |
.dx13 equ dword[ebp-48] |
.dbx13 equ dword[ebp-52] |
.dby13 equ dword[ebp-56] |
.dby13q equ [ebp-56] |
.dex13 equ dword[ebp-60] |
.dey13 equ dword[ebp-64] |
.dey13q equ [ebp-64] |
.dz13 equ dword[ebp-68] |
.dx23 equ dword[ebp-72] |
.dbx23 equ dword[ebp-76] |
.dby23 equ dword[ebp-80] |
.dby23q equ [ebp-80] |
.dex23 equ dword[ebp-84] |
.dey23 equ dword[ebp-88] |
.dey23q equ [ebp-88] |
.dz23 equ dword[ebp-92] |
.cx1 equ dword[ebp-96] ; current variables |
.cx2 equ dword[ebp-100] |
.cbx1 equ dword[ebp-104] |
.cby1 equ [ebp-108] |
.cex1 equ dword[ebp-112] |
.cey1 equ [ebp-116] |
.cbx2 equ dword[ebp-120] |
.cby2 equ [ebp-124] |
.cex2 equ dword[ebp-128] |
.cey2 equ [ebp-132] |
.cz1 equ dword[ebp-136] |
.cz2 equ dword[ebp-140] |
if Ext >= MMX |
emms |
else |
cld |
end if |
mov ebp,esp |
push edx esi ; store bump map |
; push esi ; store e. map |
; sub esp,120 |
.sort3: ; sort triangle coordinates... |
cmp ax,bx |
jle .sort1 |
xchg eax,ebx |
mov edx,dword[.b_x1] |
xchg edx,dword[.b_x2] |
mov dword[.b_x1],edx |
mov edx,dword[.e_x1] |
xchg edx,dword[.e_x2] |
mov dword[.e_x1],edx |
mov dx,.z1 |
xchg dx,.z2 |
mov .z1,dx |
.sort1: |
cmp bx,cx |
jle .sort2 |
xchg ebx,ecx |
mov edx,dword[.b_x2] |
xchg edx,dword[.b_x3] |
mov dword[.b_x2],edx |
mov edx,dword[.e_x2] |
xchg edx,dword[.e_x3] |
mov dword[.e_x2],edx |
mov dx,.z2 |
xchg dx,.z3 |
mov .z2,dx |
jmp .sort3 |
.sort2: |
push eax ebx ecx ; store triangle coords in variables |
; push ebx |
; push ecx |
mov edx,80008000h ; eax,ebx,ecx are ANDd together into edx which means that |
and edx,ebx ; if *all* of them are negative a sign flag is raised |
and edx,ecx |
and edx,eax |
test edx,80008000h ; Check both X&Y at once |
jne .loop23_done |
; mov edx,eax ; eax,ebx,ecx are ORd together into edx which means that |
; or edx,ebx ; if any *one* of them is negative a sign flag is raised |
; or edx,ecx |
; test edx,80000000h ; Check only X |
; jne .loop23_done |
; cmp .x1,SIZE_X ; { |
; jg .loop23_done |
; cmp .x2,SIZE_X ; This can be optimized with effort |
; jg .loop23_done |
; cmp .x3,SIZE_X |
; jg .loop23_done ; { |
mov bx,.y2 ; calc delta 12 |
sub bx,.y1 |
jnz .bt_dx12_make |
mov ecx,6 |
xor edx,edx |
@@: |
push edx ;dword 0 |
loop @b |
jmp .bt_dx12_done |
.bt_dx12_make: |
mov ax,.x2 |
sub ax,.x1 |
cwde |
movsx ebx,bx |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dx12,eax |
push eax |
if Ext=SSE |
sub esp,16 |
cvtsi2ss xmm3,ebx ;rcps |
; mov eax,255 |
cvtsi2ss xmm4,[i255d] ;eax |
divss xmm3,xmm4 |
rcpss xmm3,xmm3 |
; mulss xmm3,xmm4 |
shufps xmm3,xmm3,0 |
movd mm0,[.b_x1] |
movd mm1,[.b_x2] |
movd mm2,[.e_x1] |
movd mm3,[.e_x2] |
; psubsw mm3,mm2 |
; psubsw mm1,mm0 |
pxor mm4,mm4 |
punpcklwd mm0,mm4 |
punpcklwd mm1,mm4 |
punpcklwd mm2,mm4 |
punpcklwd mm3,mm4 |
; pslld mm0,ROUND |
; pslld mm1,ROUND |
; pslld mm2,ROUND |
; pslld mm3,ROUND |
cvtpi2ps xmm0,mm0 |
movlhps xmm0,xmm0 |
cvtpi2ps xmm0,mm2 |
cvtpi2ps xmm1,mm1 |
movlhps xmm1,xmm1 |
cvtpi2ps xmm1,mm3 |
subps xmm1,xmm0 |
; pxor mm4,mm4 |
; movq mm5,mm1 |
; movq mm6,mm1 |
; pcmpeqb mm5,mm4 |
; psubd mm1,mm0 |
; psubd mm3,mm2 |
; movq mm0,[.b_x1] ; bx1 by1 bx2 by2 |
; movq mm1,[.e_x1] ; ex1 ey1 ex2 ey2 |
; pxor |
; punpcklhd mm0,mm1 ; lwd ; |
; psubw mm1,mm0 ; mm1, mm0 |
; pxor mm2,mm2 |
; pmovmaskb eax,mm1 |
; and eax,10101010b |
; pcmpgtw mm2,mm1 |
; punpcklwd mm1,mm2 |
; psllw mm0,ROUND |
; psllw mm1,ROUND |
; movq mm2,mm0 |
; psrlq mm0,32 |
; cvtpi2ps xmm0,mm1 |
; movlhps xmm0,xmm0 |
; cvtpi2ps xmm0,mm3 |
; divps xmm1,xmm3 |
mulps xmm1,xmm3 |
shufps xmm1,xmm1,10110001b |
cvtps2pi mm0,xmm1 ; mm0 -> 2 delta dwords |
movhlps xmm1,xmm1 |
cvtps2pi mm1,xmm1 |
movq .dey12q,mm0 |
movq .dby12q,mm1 |
; movd .dex12,mm0 |
; psrlq mm0,32 |
; movd .dey12,mm0 |
; movhlps xmm1,xmm1 |
; cvtps2pi mm0,xmm1 |
; movd .dbx12,mm0 |
; psrlq mm0,32 |
; movd .dby12,mm0 |
else |
mov ax,word[.b_x2] |
sub ax,word[.b_x1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dbx12,eax |
push eax |
mov ax,word[.b_y2] |
sub ax,word[.b_y1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dby12,eax |
push eax |
; mov eax,.dbx12 |
; mov ebx,.dby12 |
; int3 |
mov ax,word[.e_x2] |
sub ax,word[.e_x1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dex12,eax |
push eax |
mov ax,word[.e_y2] |
sub ax,word[.e_y1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dey12,eax |
push eax |
end if |
mov ax,.z2 |
sub ax,.z1 |
cwde |
shl eax,CATMULL_SHIFT |
cdq |
idiv ebx |
push eax |
.bt_dx12_done: |
mov bx,.y3 ; calc delta13 |
sub bx,.y1 |
jnz .bt_dx13_make |
mov ecx,6 |
xor edx,edx |
@@: |
push edx ;dword 0 |
loop @b |
jmp .bt_dx13_done |
.bt_dx13_make: |
mov ax,.x3 |
sub ax,.x1 |
cwde |
movsx ebx,bx |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dx13,eax |
push eax |
if Ext=SSE |
cvtsi2ss xmm3,ebx |
; mov eax,255 |
cvtsi2ss xmm4,[i255d] |
divss xmm3,xmm4 |
rcpss xmm3,xmm3 |
; mulss xmm3,xmm4 |
shufps xmm3,xmm3,0 |
sub esp,16 |
movd mm0,[.b_x1] |
movd mm1,[.b_x3] |
movd mm2,[.e_x1] |
movd mm3,[.e_x3] |
pxor mm4,mm4 |
punpcklwd mm0,mm4 |
punpcklwd mm1,mm4 |
punpcklwd mm2,mm4 |
punpcklwd mm3,mm4 |
cvtpi2ps xmm0,mm0 |
movlhps xmm0,xmm0 |
cvtpi2ps xmm0,mm2 |
cvtpi2ps xmm1,mm1 |
movlhps xmm1,xmm1 |
cvtpi2ps xmm1,mm3 |
subps xmm1,xmm0 |
; divps xmm1,xmm3 |
mulps xmm1,xmm3 |
shufps xmm1,xmm1,10110001b |
cvtps2pi mm0,xmm1 ; mm0 -> 2 delta dwords |
movhlps xmm1,xmm1 |
cvtps2pi mm1,xmm1 |
movq .dey13q,mm0 |
movq .dby13q,mm1 |
else |
mov ax,word[.b_x3] |
sub ax,word[.b_x1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dbx13,eax |
push eax |
mov ax,word[.b_y3] |
sub ax,word[.b_y1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dby13,eax |
push eax |
mov ax,word[.e_x3] |
sub ax,word[.e_x1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dex13,eax |
push eax |
mov ax,word[.e_y3] |
sub ax,word[.e_y1] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dey13,eax |
push eax |
end if |
mov ax,.z3 |
sub ax,.z1 |
cwde |
shl eax,CATMULL_SHIFT |
cdq |
idiv ebx |
; mov .dz13,eax |
push eax |
.bt_dx13_done: |
mov bx,.y3 ; calc delta23 |
sub bx,.y2 |
jnz .bt_dx23_make |
mov ecx,6 |
xor edx,edx |
@@: |
push edx ;dword 0 |
loop @b |
jmp .bt_dx23_done |
.bt_dx23_make: |
mov ax,.x3 |
sub ax,.x2 |
cwde |
movsx ebx,bx |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dx23,eax |
push eax |
if Ext=SSE |
cvtsi2ss xmm3,ebx |
; mov eax,255 |
cvtsi2ss xmm4,[i255d] ;eax |
divss xmm3,xmm4 |
shufps xmm3,xmm3,0 |
sub esp,16 |
movd mm0,[.b_x2] |
movd mm1,[.b_x3] |
movd mm2,[.e_x2] |
movd mm3,[.e_x3] |
pxor mm4,mm4 |
punpcklwd mm0,mm4 |
punpcklwd mm1,mm4 |
punpcklwd mm2,mm4 |
punpcklwd mm3,mm4 |
cvtpi2ps xmm0,mm0 |
movlhps xmm0,xmm0 |
cvtpi2ps xmm0,mm2 |
cvtpi2ps xmm1,mm1 |
movlhps xmm1,xmm1 |
cvtpi2ps xmm1,mm3 |
subps xmm1,xmm0 |
divps xmm1,xmm3 |
shufps xmm1,xmm1,10110001b |
cvtps2pi mm0,xmm1 ; mm0 -> 2 delta dwords |
movhlps xmm1,xmm1 |
cvtps2pi mm1,xmm1 |
movq .dey23q,mm0 |
movq .dby23q,mm1 |
else |
mov ax,word[.b_x3] |
sub ax,word[.b_x2] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dbx23,eax |
push eax |
mov ax,word[.b_y3] |
sub ax,word[.b_y2] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dby23,eax |
push eax |
mov ax,word[.e_x3] |
sub ax,word[.e_x2] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dex23,eax |
push eax |
mov ax,word[.e_y3] |
sub ax,word[.e_y2] |
cwde |
shl eax,ROUND |
cdq |
idiv ebx |
; mov .dey23,eax |
push eax |
end if |
mov ax,.z3 |
sub ax,.z2 |
cwde |
shl eax,CATMULL_SHIFT |
cdq |
idiv ebx |
; mov .dz23,eax |
push eax |
; sub esp,40 |
.bt_dx23_done: |
movsx eax,.x1 |
shl eax,ROUND |
; mov .cx1,eax |
; mov .cx2,eax |
push eax eax |
; push eax |
movsx eax,word[.b_x1] |
shl eax,ROUND |
mov .cbx1,eax |
mov .cbx2,eax |
; push eax eax |
; push eax |
movsx eax,word[.b_y1] |
shl eax,ROUND |
mov .cby1,eax |
mov .cby2,eax |
; push eax eax |
; push eax |
movsx eax,word[.e_x1] |
shl eax,ROUND |
mov .cex1,eax |
mov .cex2,eax |
; push eax eax |
;push eax |
movsx eax,word[.e_y1] |
shl eax,ROUND |
mov .cey1,eax |
mov .cey2,eax |
sub esp,32 |
; push eax eax |
;push eax |
movsx eax,.z1 |
shl eax,CATMULL_SHIFT |
; mov .cz1,eax |
; mov .cz2,eax |
push eax eax |
;push eax |
movsx ecx,.y1 |
cmp cx,.y2 |
jge .loop12_done |
.loop12: |
call .call_line |
mov eax,.dx13 |
add .cx1,eax |
mov ebx,.dx12 |
add .cx2,ebx |
if Ext>= SSE2 |
movups xmm0,.cey1 |
movups xmm1,.cey2 |
movups xmm2,.dey12q |
movups xmm3,.dey13q |
paddd xmm0,xmm3 |
paddd xmm1,xmm2 |
movups .cey1,xmm0 |
movups .cey2,xmm1 |
else if (Ext = MMX) | (Ext=SSE) |
movq mm0,.cby2 ; with this optimization object |
movq mm1,.cby1 ; looks bit annoying |
movq mm2,.cey2 |
movq mm3,.cey1 |
paddd mm0,.dby12q |
paddd mm1,.dby13q |
paddd mm2,.dey12q |
paddd mm3,.dey13q |
movq .cby2,mm0 |
movq .cby1,mm1 |
movq .cey1,mm3 |
movq .cey2,mm2 |
else |
mov edx,.dbx13 |
add .cbx1,edx |
mov eax,.dbx12 |
add .cbx2,eax |
mov ebx,.dby13 |
add .cby1,ebx |
mov edx,.dby12 |
add .cby2,edx |
mov eax,.dex13 |
add .cex1,eax |
mov ebx,.dex12 |
add .cex2,ebx |
mov edx,.dey13 |
add .cey1,edx |
mov eax,.dey12 |
add .cey2,eax |
end if |
mov ebx,.dz13 |
add .cz1,ebx |
mov edx,.dz12 |
add .cz2,edx |
inc ecx |
cmp cx,.y2 |
jl .loop12 |
.loop12_done: |
movsx ecx,.y2 |
cmp cx,.y3 |
jge .loop23_done |
movsx eax,.z2 |
shl eax,CATMULL_SHIFT |
mov .cz2,eax |
movsx eax,.x2 |
shl eax,ROUND |
mov .cx2,eax |
movzx eax,word[.b_x2] |
shl eax,ROUND |
mov .cbx2,eax |
movzx eax,word[.b_y2] |
shl eax,ROUND |
mov .cby2,eax |
movzx eax,word[.e_x2] |
shl eax,ROUND |
mov .cex2,eax |
movzx eax,word[.e_y2] |
shl eax,ROUND |
mov .cey2,eax |
.loop23: |
call .call_line |
;if Ext = NON |
mov eax,.dx13 |
add .cx1,eax |
mov ebx,.dx23 |
add .cx2,ebx |
if Ext>= SSE2 |
movups xmm0,.cey1 |
movups xmm1,.cey2 |
movups xmm2,.dey23q |
movups xmm3,.dey13q |
paddd xmm0,xmm3 |
paddd xmm1,xmm2 |
movups .cey1,xmm0 |
movups .cey2,xmm1 |
else if (Ext = MMX) | ( Ext = SSE) |
movq mm0,.cby2 ; with this mmx optimization object looks bit |
movq mm1,.cby1 ; annoying |
movq mm2,.cey2 |
movq mm3,.cey1 |
paddd mm0,.dby23q |
paddd mm1,.dby13q |
paddd mm2,.dey23q |
paddd mm3,.dey13q |
movq .cby2,mm0 |
movq .cby1,mm1 |
movq .cey2,mm2 |
movq .cey1,mm3 |
else |
mov edx,.dbx13 |
add .cbx1,edx |
mov eax,.dbx23 |
add .cbx2,eax |
mov ebx,.dby13 |
add .cby1,ebx |
mov edx,.dby23 |
add .cby2,edx |
mov eax,.dex13 |
add .cex1,eax |
mov ebx,.dex23 |
add .cex2,ebx |
mov edx,.dey13 |
add .cey1,edx |
mov eax,.dey23 |
add .cey2,eax |
end if |
mov ebx,.dz13 |
add .cz1,ebx |
mov edx,.dz23 |
add .cz2,edx |
;else |
; movq mm0,.db13q |
; movq mm1,.cbx1q |
inc ecx |
cmp cx,.y3 |
jl .loop23 |
.loop23_done: |
mov esp,ebp |
ret 34 |
.call_line: |
pushad |
push .cz1 |
push .cz2 |
push .z_buff |
push .t_bmap |
push .t_emap |
push dword .cey2 |
push .cex2 |
push dword .cey1 |
push .cex1 |
push dword .cby2 |
push .cbx2 |
push dword .cby1 |
push .cbx1 |
push ecx |
mov eax,.cx1 |
sar eax,ROUND |
mov ebx,.cx2 |
sar ebx,ROUND |
call two_tex_line_z |
popad |
ret |
two_tex_line_z: |
;--------------in: eax - x1 |
;-------------- ebx - x2 |
;-------------- edi - pointer to screen buffer |
;stack - another parameters : |
.y equ dword [ebp+4] |
.bx1 equ [ebp+8] ; --- |
.by1 equ [ebp+12] ; | |
.bx2 equ [ebp+16] ; | |
.by2 equ [ebp+20] ; |> b. texture and e. texture coords |
.ex1 equ [ebp+24] ; |> shifted shl ROUND |
.ey1 equ [ebp+28] ; | |
.ex2 equ [ebp+32] ; | |
.ey2 equ [ebp+36] ; --- |
.emap equ [ebp+40] ; b texture offset |
.bmap equ [ebp+44] ; e texture offset |
.z_buff equ dword [ebp+48] |
.z2 equ dword [ebp+52] ; -- |> z coords shifted |
.z1 equ dword [ebp+56] ; -- shl CATMULL_SHIFT |
.x1 equ dword [ebp-4] |
.x2 equ dword [ebp-8] |
.dbx equ [ebp-12] |
.dex equ [ebp-16] |
.dby equ [ebp-20] |
.dey equ [ebp-24] |
.dz equ dword [ebp-28] |
.cbx equ [ebp-32] |
.cex equ [ebp-36] |
.cby equ [ebp-40] |
.cey equ [ebp-44] |
.cz equ dword [ebp-48] |
.czbuff equ dword [ebp-52] |
mov ebp,esp |
mov ecx,.y |
or ecx,ecx |
jl .bl_end |
mov dx,word[size_y_var] |
dec dx |
cmp cx,dx ;word[size_y_var] ;SIZE_Y |
jge .bl_end |
cmp eax,ebx |
jl @f |
je .bl_end |
xchg eax,ebx |
if Ext=NON |
mov edx,.bx1 |
xchg edx,.bx2 |
mov .bx1,edx |
mov edx,.by1 |
xchg edx,.by2 |
mov .by1,edx |
mov edx,.ex1 |
xchg edx,.ex2 |
mov .ex1,edx |
mov edx,.ey1 |
xchg edx,.ey2 |
mov .ey1,edx |
else |
movq mm0,.bx1 |
movq mm1,.ex1 |
movq mm2,.bx2 |
movq mm3,.ex2 |
movq .bx2,mm0 |
movq .ex2,mm1 |
movq .bx1,mm2 |
movq .ex1,mm3 |
end if |
mov edx,.z1 |
xchg edx,.z2 |
mov .z1,edx |
@@: |
push eax ebx ;store x1, x2 |
mov ebx,.x1 |
movzx edx,word[size_x_var] |
dec edx |
cmp ebx,edx |
; cmp bx,word[size_x_var] ;SIZE_X |
jg .bl_end |
cmp .x2,0 |
jle .bl_end |
mov ebx,.x2 |
sub ebx,.x1 |
if Ext >= SSE |
sub esp,16 |
cvtsi2ss xmm3,ebx ;rcps |
shufps xmm3,xmm3,0 |
; movq mm0,.bx1q |
; movq mm1,.bx2q |
; movq mm2,.ex1q |
; movq mm3,.ex2q |
; psubd mm1,mm0 |
; psubd mm3,mm2 |
; cvtpi2ps xmm1,mm1 |
; movlhps xmm1,xmm1 |
; cvtpi2ps xmm1,mm3 |
cvtpi2ps xmm0,.bx1 ;mm0 ; bx1; by1 |
movlhps xmm0,xmm0 |
cvtpi2ps xmm0,.ex1 ;mm2 ; ex1; ey1 |
cvtpi2ps xmm1,.bx2 ;mm1 ; bx2; by2 |
movlhps xmm1,xmm1 |
cvtpi2ps xmm1,.ex2 ;mm3 ; ex2; ey2 |
subps xmm1,xmm0 |
; hi lo |
divps xmm1,xmm3 ; xmm1 -> dby; dbx; dey; dex |
shufps xmm1,xmm1,11011000b |
cvtps2pi mm0,xmm1 ; mm0 -> 2 delta dwords |
movhlps xmm1,xmm1 |
cvtps2pi mm1,xmm1 |
movq .dex,mm0 ; hi - lo -> dbx, dex |
movq .dey,mm1 ; hi - lo -> dby, dey |
else |
mov eax,.bx2 ; calc .dbx |
sub eax,.bx1 |
cdq |
idiv ebx |
push eax |
mov eax,.ex2 ; calc .dby |
sub eax,.ex1 |
cdq |
idiv ebx |
push eax |
mov eax,.by2 ; calc .dex |
sub eax,.by1 |
cdq |
idiv ebx |
push eax |
mov eax,.ey2 ; calc .dey |
sub eax,.ey1 |
cdq |
idiv ebx |
push eax |
end if |
mov eax,.z2 ; calc .dz |
sub eax,.z1 |
cdq |
idiv ebx |
push eax |
cmp .x1,0 ; set correctly begin variable |
jge @f ; CLIPPING ON FUNCTION |
; cutting triangle exceedes screen |
mov ebx,.x1 |
neg ebx |
imul ebx ; eax = .dz * abs(.x1) |
add .z1,eax |
mov .x1,0 |
mov eax,.dbx |
imul ebx |
add .bx1,eax |
mov eax,.dby |
imul ebx |
add .by1,eax |
mov eax,.dex |
imul ebx |
add .ex1,eax |
mov eax,.dey |
imul ebx |
add .ey1,eax |
@@: |
movzx eax,word[size_x_var] ;SIZE_X ;word[size_x_var] |
mov ebx,.x2 |
cmp eax,ebx |
jg @f |
mov .x2,eax |
@@: |
; movd mm0,eax |
; movd mm1,.x2 |
; pminsw mm0,mm1 |
; movd .x2,mm0 |
; cmp .x2,SIZE_X ;eax | |
; jl @f |> this dont work idk cause |
; mov .x2,SIZE_X ;eax | |
@@: |
; movzx eax,word[size_x_var] ;calc memory begin in buffers |
mov ebx,.y |
mul ebx |
mov ebx,.x1 |
add eax,ebx |
mov ebx,eax |
lea eax,[eax*3] |
add edi,eax ; edi - screen |
mov esi,.z_buff ; z-buffer filled with dd variables |
shl ebx,2 |
add esi,ebx ; esi - Z buffer |
mov ecx,.x2 |
sub ecx,.x1 |
; init current variables |
push dword .bx1 ;.by1 .ex1 .ey1 .z1 esi |
push dword .ex1 |
push dword .by1 |
push dword .ey1 |
push .z1 ; current z shl CATMULL_SHIFT |
push esi |
if Ext >= MMX |
pxor mm0,mm0 |
movq mm3,.cex ; hi - lo -> cbx; cex |
movq mm4,.cey ; hi - lo -> cby; cey |
; movq mm5,mm3 |
; movq mm6,mm4 |
; psrad mm5,ROUND |
; psrad mm6,ROUND |
; movq .ceyq,mm5 |
; movq .cbyq,mm6 |
mov edx,.czbuff |
else |
cld |
end if |
.draw: |
; if TEX = SHIFTING ;bump drawing only in shifting mode |
if Ext=NON |
mov esi,.czbuff ; .czbuff current address in buffer |
mov ebx,.cz ; .cz - cur z position |
cmp ebx,dword[esi] |
else |
mov ebx,.cz |
cmp ebx,dword[edx] |
end if |
jge .skip |
if Ext=NON |
mov eax,.cby |
mov esi,.cbx |
sar eax,ROUND |
sar esi,ROUND |
shl eax,TEX_SHIFT ;- |
add esi,eax |
lea esi,[esi*3] ;- ; esi - current b. texture addres |
add esi,.bmap |
mov ebx,.cex ;.cex - current env map X |
mov eax,.cey ;.cey - current env map y |
sar ebx,ROUND |
sar eax,ROUND |
shl eax,TEX_SHIFT |
add ebx,eax |
lea ebx,[ebx*3] |
add ebx,.emap |
else |
movq mm5,mm4 ;.cey |
psrad mm5,ROUND |
pslld mm5,TEX_SHIFT |
movq mm6,mm3 ;.cex |
psrad mm6,ROUND |
paddd mm5,mm6 |
movq mm6,mm5 |
paddd mm5,mm5 |
paddd mm5,mm6 |
paddd mm5,.emap |
movd esi,mm5 |
psrlq mm5,32 |
movd ebx,mm5 |
end if |
if Ext>=MMX |
movd mm1,[esi] |
movd mm2,[ebx] |
punpcklbw mm1,mm0 |
punpcklbw mm2,mm0 |
pmullw mm1,mm2 |
psrlw mm1,8 |
packuswb mm1,mm0 |
movd [edi],mm1 |
mov ebx,.cz |
mov dword[edx],ebx |
else |
cld ; esi - tex e. |
lodsb ; ebx - tex b. |
mov dl,[ebx] |
mul dl |
shr ax,8 |
stosb |
inc ebx |
lodsb |
mov dl,[ebx] |
mul dl |
shr ax,8 |
stosb |
inc ebx |
lodsb |
mov dl,[ebx] |
mul dl |
shr ax,8 |
stosb |
mov ebx,.cz |
mov esi,.czbuff |
mov dword[esi],ebx |
jmp .no_skip |
end if |
.skip: |
add edi,3 |
if Ext = NON |
.no_skip: |
add .czbuff,4 |
mov eax,.dbx |
add .cbx,eax |
mov eax,.dby |
add .cby,eax |
mov eax,.dex |
add .cex,eax |
mov eax,.dey |
add .cey,eax |
else |
add edx,4 |
paddd mm3,.dex |
paddd mm4,.dey |
; movq mm5,mm3 |
; movq mm6,mm4 |
; psrad mm5,ROUND |
; psrad mm6,ROUND |
; movq .cex,mm3 |
; movq .cey,mm4 |
end if |
mov eax,.dz |
add .cz,eax |
if Ext = NON |
dec ecx |
jnz .draw |
else |
loop .draw |
end if |
.bl_end: |
mov esp,ebp |
ret 56 |
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |
/programs/demos/view3ds/view3ds.asm |
---|
0,0 → 1,3671 |
; application : View3ds ver. 0.072 - tiny .3ds and .asc files viewer |
; with a few graphics effects demonstration. |
; compiler : FASM |
; system : KolibriOS |
; author : Macgub aka Maciej Guba |
; email : macgub3@wp.pl |
; web : http://macgub.j.pl, http://macgub.co.pl |
; Fell free to use this intro in your own distribution of KolibriOS. |
; Special greetings to KolibriOS team . |
; I hope because my demos Christian Belive will be near to each of You. |
; Some adjustments made by Madis Kalme |
; madis.kalme@mail.ee |
; I tried optimizing it a bit, but don't know if it was successful. The objects |
; can be: |
; 1) Read from a file (*.3DS standard) |
; 2) Written in manually (at the end of the code) ; now not exist |
SIZE_X equ 500 |
SIZE_Y equ 600 ; ///// I want definitely |
TIMEOUT equ 10 ; ------ say: |
ROUND equ 10 ; \ @ @/ keep smiling every |
TEX_X equ 512 ; texture width ; \ ./ / day. |
TEX_Y equ 512 ; height ; \/ / |
TEX_SHIFT equ 9 ; texture width shifting ; __||__ / |
TEXTURE_SIZE EQU (TEX_X * TEX_Y)-1 ; /| | |
TEX equ SHIFTING ; TEX={SHIFTING | FLUENTLY} ; / \ / |
FLUENTLY = 0 ; / | | |
SHIFTING = 1 ; ------ |
CATMULL_SHIFT equ 8 ; | | |
LIGHT_SIZE equ 22 ; | | |
NON = 0 ; -/ \- |
MMX = 1 |
SSE = 2 |
SSE2 = 3 |
SSE3 = 4 |
Ext = SSE3 ;Ext={ NON | MMX | SSE | SSE2 | SSE3 } |
; 0 for short names (Menuet-compatible), 1 for long names (Kolibri features) |
USE_LFN = 1 ; App is Kolibri only now. |
use32 |
org 0x0 |
db 'MENUET01' ; 8 byte id |
dd 0x01 ; header version |
dd START ; start of code |
dd I_END ; size of image |
dd MEM_END ; memory for app |
dd MEM_END ; esp |
dd I_Param ; I_Param |
dd 0x0 ; I_Icon |
START: ; start of execution |
cld |
push dword (SIZE_Y shr 3) * 3 |
fninit |
fild dword[esp] |
fstp [rsscale] |
pop ebx |
mov [x_start],dword 20 shl 16 + 20 ;eax |
call alloc_buffer_mem |
call read_param |
call read_from_disk ; read, if all is ok eax = 0 |
cmp eax,0 |
jne .gen |
mov esi,[fptr] |
cmp [esi],word 4D4Dh |
jne .asc |
call read_tp_variables ; init points and triangles count variables |
cmp eax,0 |
je .gen |
jmp .malloc |
.gen: |
call generate_object |
jmp .opt |
.asc: |
mov [triangles_count_var],10000 ; to do: read asc header |
mov [points_count_var],10000 |
call alloc_mem_for_tp |
call read_asc |
jmp .opt |
.malloc: |
if USE_LFN |
call alloc_mem_for_tp |
end if |
call read_from_file |
.opt: |
call optimize_object1 ; proc in file b_procs.asm |
; set point(0,0,0) in center and calc all coords |
; to be in <-1.0,1.0> |
call normalize_all_light_vectors |
if Ext >= SSE3 |
call copy_lights ; to aligned float |
end if |
call init_triangles_normals2 |
call init_point_normals |
call init_envmap2 |
call init_envmap_cub |
call generate_texture2 |
call init_sincos_tab |
call do_color_buffer ; intit color_map |
mov edi,bumpmap |
call calc_bumpmap |
call calc_bumpmap_coords ; bump and texture mapping |
call draw_window |
;mov [draw_win_at_first],0 |
;mov eax,40 ; set events mask |
;mov ebx,1100000000000000000000000100111b |
;int 0x40 |
if Ext >= SSE3 |
mov eax,1 |
cpuid |
bt ecx,0 ; is sse3 on board? |
jc @f |
mov [max_dr_flg],12 |
@@: |
end if |
still: |
cmp [edit_flag],1 |
jne @f |
mov eax,40 ; set events mask |
mov ebx,1100000000000000000000000100111b |
jmp .int |
@@: |
mov eax,40 ; set events mask |
mov ebx,111b |
.int: |
int 0x40 |
mov eax,23 |
mov ebx,TIMEOUT |
cmp [speed_flag],0 |
je .skip |
mov eax,11 |
.skip: |
cmp [edit_flag],1 |
jne @f |
mov eax,10 |
@@: |
int 0x40 |
cmp eax,1 ; redraw event ? |
je red |
cmp eax,2 ; key event ? |
je key |
cmp eax,3 ; button event ? |
je button |
cmp eax,6 ; mouse event ? |
jne @f |
cmp [edit_flag],1 ; handle mouse only when edit is active |
jne @f |
mov eax,37 |
mov ebx,7 ; get mouse scroll |
int 0x40 |
and eax, 0xFFFF ; check only vertial |
cmp eax, 65535 |
je button.zoom_in |
cmp eax, 1 |
je button.zoom_out |
mov eax,37 |
mov ebx,3 ;read mouse state |
int 0x40 |
mov [mouse_state],eax |
call edit |
@@: |
jmp noclose |
red: ; redraw |
mov eax,9 ; get process info |
mov ebx,procinfo |
mov ecx,-1 |
int 0x40 |
mov eax,[procinfo+42] ; read params of window |
sub eax,115 |
mov [size_x_var],ax |
shr ax,1 |
mov [vect_x],ax |
; |
mov eax,[procinfo+46] |
sub eax,30 |
mov [size_y_var],ax |
shr ax,1 |
mov [vect_y],ax |
mov eax,[procinfo+34] |
mov [x_start],ax |
mov eax,[procinfo+38] |
mov [y_start],ax |
call alloc_buffer_mem ;realloc mem for scr & z buffs |
call draw_window |
jmp noclose |
key: ; key |
mov eax,2 ; just read it and ignore |
int 0x40 |
cmp ah, '+' |
je button.zoom_in |
cmp ah, '=' |
je button.zoom_in |
cmp ah, '-' |
je button.zoom_out |
cmp ah, 176 ;left |
je add_vec_buttons.x_minus |
cmp ah, 179 ;right |
je add_vec_buttons.x_plus |
cmp ah, 178 ;up |
je add_vec_buttons.y_minus |
cmp ah, 177 ;down |
je add_vec_buttons.y_plus |
jmp noclose |
button: ; button |
mov eax,17 ; get id |
int 0x40 |
cmp ah,1 ; button id=1 ? |
jne @f |
mov eax,-1 ; close this program |
int 0x40 |
@@: |
cmp ah,30 |
jge add_vec_buttons |
call update_flags ; update flags and write labels of flags |
; do other operations according to flag |
cmp ah,3 ; ah = 3 -> shading model |
jne .next_m6 |
cmp [dr_flag],2 |
jne @f |
; call init_envmap2 ; <----! this don't works in env mode |
; and more than ~18 kb objects |
; call init_envmap_cub2 |
@@: |
cmp [dr_flag],4 |
jne @f |
call generate_texture2 |
@@: |
.next_m6: |
; ah = 5 -> scale- |
cmp ah,5 |
jne @f |
.zoom_out: |
mov dword[scale],0.7 |
movss xmm0,[rsscale] |
mulss xmm0,[scale] |
movss [rsscale],xmm0 |
; fninit |
; fld [rsscale] |
; fmul [scale] |
; fstp [rsscale] |
@@: |
cmp ah,6 ; ah = 6 -> scale+ |
jne @f |
.zoom_in: |
mov dword[scale],1.3 |
movss xmm0,[rsscale] |
mulss xmm0,[scale] |
movss [rsscale],xmm0 |
; fninit |
; fld [rsscale] |
; fmul [scale] |
; fstp [rsscale] |
@@: |
cmp ah,9 ; lights random ; 'flat' 0 |
jne .next_m5 ; 'grd ' 1 |
call make_random_lights ; 'env ' 2 |
call normalize_all_light_vectors ; 'bump' 3 |
if Ext >= SSE3 |
call copy_lights |
end if |
call do_color_buffer ; intit color_map ; 'tex ' 4 |
; cmp [emboss_flag],1 ; 'pos ' 5 |
; je @f ; 'dots' 6 |
; cmp [dr_flag],8 |
; jge @f |
; cmp [dr_flag],2 ; 'txgr' 7 |
; jl .next_m5 ; '2tex' 8 |
; cmp [dr_flag],3 ; 'btex' 9 |
; jg .next_m5 |
; @@: |
call init_envmap2 ; update env map if shading model = environment or bump |
.next_m5: |
cmp ah,11 |
je @f |
cmp ah,12 |
je @f |
cmp ah,13 |
jne .next_m4 |
@@: |
call mirror |
.next_m4: |
cmp ah,14 |
jne @f |
call exchange |
@@: |
cmp ah,15 |
jne @f |
cmp [emboss_flag],1 |
; call init_envmap2 |
call do_emboss |
@@: |
; cmp ah,17 |
; jne .next_m |
; cmp [move_flag],2 |
; jne @f |
; call draw_window ; redraw other labels to navigation buttons |
; @@: |
; cmp [move_flag],0 |
; jne .next_m |
; call draw_window ; redraw other labels to navigation buttons |
.next_m: |
cmp ah,18 |
jne .next_m2 |
mov [re_alloc_flag],1 ; reallocate memory |
mov [triangles_count_var],20000 |
mov [points_count_var],20000 |
call alloc_mem_for_tp |
mov [re_alloc_flag],0 |
mov bl,[generator_flag] |
; or bl,bl |
; jz .next_m2 |
cmp bl,1 |
jne @f |
call generate_object |
jmp .calc_norm |
@@: |
cmp bl,4 |
jg @f |
movzx eax,bl ; eax < - object number |
call generate_object2 |
jmp .calc_norm |
@@: |
call generate_object3 |
.calc_norm: |
call optimize_object1 |
call init_triangles_normals2 |
call init_point_normals |
call calc_bumpmap_coords ; bump and texture mapping |
.next_m2: |
cmp ah,19 |
je @f |
cmp ah,20 |
jne .next_m3 |
@@: |
mov edi,bumpmap |
call calc_bumpmap |
.next_m3: |
cmp ah,21 ; re map bumps, texture coordinates |
jne @f |
call calc_bumpmap_coords |
@@: |
jmp noclose |
; there are 6 navigation buttons each |
add_vec_buttons: ; can move: object, camera,.. list is open |
; |
cmp ah,30 |
jne .next |
cmp [move_flag],0 |
jne @f |
; cmp [move_flag],2 |
; je .set_light1 |
.y_minus: |
sub [vect_y],10 |
jmp .next |
@@: |
cmp [move_flag],1 |
jne @f |
sub [yobs],10 ; observator = camera position |
jmp .next |
@@: |
sub [sin_amplitude],10 |
;-------------------------------------------------- |
; .set_light1: ; r - |
; movzx ebx,[light_no_flag] ; * 22 |
; mov ecx,ebx |
; shl ebx,4 |
; shl ecx,1 |
; add ebx,ecx |
; shl ecx,1 |
; add ebx,ecx |
; add ebx,lights+6 ; 6 -> light vector size |
; |
; movzx ecx,[light_comp_flag] |
; lea ecx,[ecx*3} |
; add ebx,ecx ; ebx -> color to set |
;--------------------------------------------------- |
.next: |
cmp ah,31 |
jne .next1 |
cmp [move_flag],1 |
je @f |
add [vect_z],10 |
jmp .next1 |
@@: |
add [zobs],10 ; observator = camera position |
.next1: |
cmp ah,33 |
jne .next2 |
cmp [move_flag],0 |
jne @f |
.x_minus: |
sub [vect_x],10 |
jmp .next2 |
@@: |
cmp [move_flag],1 |
jne @f |
sub [xobs],10 ; observator = camera position |
jmp .next2 |
@@: |
fninit |
fld [sin_frq] |
fsub [sin_delta] |
fstp [sin_frq] |
.next2: |
cmp ah,32 |
jne .next3 |
cmp [move_flag],0 |
jne @f |
.x_plus: |
add [vect_x],10 |
jmp .next3 |
@@: |
cmp [move_flag],1 |
jne @f |
add [xobs],10 ; observator = camera position |
jmp .next3 |
@@: |
fninit |
fld [sin_frq] ; change wave effect frequency |
fadd [sin_delta] |
fstp [sin_frq] |
.next3: |
cmp ah,34 |
jne .next4 |
cmp [move_flag],1 |
je @f |
sub [vect_z],10 |
jmp .next4 |
@@: |
sub [zobs],10 ; observator = camera position |
.next4: |
cmp ah,35 |
jne .next5 |
cmp [move_flag],0 |
jne @f |
; call add_vector |
.y_plus: |
add [vect_y],10 |
jmp .next5 |
@@: |
cmp [move_flag],1 |
jne @f |
add [yobs],10 ; observator = camera position |
jmp .next5 |
@@: |
add [sin_amplitude],10 |
.next5: |
noclose: |
cmp [edit_flag],1 |
jz .end_rot |
cmp [r_flag],2 |
jne .no_x |
inc [angle_x] |
and [angle_x],0xff |
mov [angle_z],0 |
jmp .end_rot |
.no_x: |
cmp [r_flag],0 |
jne .no_y |
inc [angle_y] |
and [angle_y],0xff |
mov [angle_z],0 |
jmp .end_rot |
.no_y: |
cmp [r_flag],1 |
jne .end_rot |
mov cx,[angle_x] |
inc cx |
and cx,0xff |
mov [angle_z],0 |
mov [angle_y],cx |
mov [angle_x],cx |
.end_rot: |
mov esi,angle_x |
mov edi,matrix |
call make_rotation_matrix |
RDTSC |
push eax |
mov esi,[points_normals_ptr] |
mov edi,[points_normals_rot_ptr] |
mov ebx,matrix |
mov ecx,[points_count_var] |
call rotary |
mov esi,matrix |
call add_scale_to_matrix |
mov esi,[points_ptr] |
mov edi,[points_rotated_ptr] |
mov ebx,matrix |
mov ecx,[points_count_var] |
call rotary |
mov esi,[points_rotated_ptr] |
mov edi,[points_translated_ptr] |
mov ecx,[points_count_var] |
call translate_points |
cmp [fire_flag],0 |
jne @f |
call clrscr ; clear the screen |
@@: |
cmp [dr_flag],7 ; fill if 2tex and texgrd |
jge @f |
cmp [catmull_flag],0 ;non fill if Catmull = off |
je .non_f |
cmp [dr_flag],6 ; non fill if dots |
je .non_f |
@@: |
call fill_Z_buffer ; make background |
.non_f: |
cmp [dr_flag],6 |
jne @f |
call draw_dots |
jmp .blurrr |
@@: |
call draw_triangles ; draw all triangles from the list |
cmp [edit_flag],0 |
jz .no_edit |
call clear_vertices_index |
call draw_handlers |
; call edit |
.no_edit: |
.blurrr: |
cmp [sinus_flag],0 |
je @f |
call do_sinus |
@@: |
cmp [fire_flag],0 |
jne @f |
cmp [blur_flag],0 |
je .no_blur ; no blur, no fire |
movzx ecx,[blur_flag] |
call blur_screen ; blur and fire |
jmp .no_blur |
@@: |
cmp [emboss_flag],0 |
jne .emb ; if emboss=true -> no fire |
movzx ecx,[fire_flag] |
call blur_screen ; blur and fire |
.no_blur: ; no blur, no fire |
cmp [emboss_flag],0 |
je @f |
.emb: |
call do_emboss |
@@: |
cmp [inc_bright_flag],0 ; increase brightness |
je .no_inc_bright |
movzx ebx,[inc_bright_flag] |
shl ebx,4 |
mov esi,[screen_ptr] |
movzx ecx,word[size_y_var] |
movzx eax,word[size_x_var] |
mul ecx |
lea ecx,[eax*4] |
if (Ext = MMX)|(Ext = SSE) |
mov bh,bl |
push bx |
shl ebx,16 |
pop bx |
push ebx |
push ebx |
movq mm0,[esp] |
add esp,8 |
else if Ext >= SSE2 |
mov bh,bl |
push bx |
shl ebx,16 |
pop bx |
movd xmm0,ebx |
shufps xmm0,xmm0,0 |
end if |
.oop: |
if Ext=NON |
lodsb |
add al,bl |
jnc @f |
mov byte[esi-1],255 |
loop .oop |
@@: |
mov [esi-1],al |
loop .oop |
else if (Ext=MMX)|(Ext=SSE) |
movq mm1,[esi] |
movq mm2,[esi+8] |
paddusb mm1,mm0 |
paddusb mm2,mm0 |
movq [esi],mm1 |
movq [esi+8],mm2 |
add esi,16 |
sub ecx,16 |
jnz .oop |
else |
movaps xmm1,[esi] |
paddusb xmm1,xmm0 |
movaps [esi],xmm1 |
add esi,16 |
sub ecx,16 |
jnc .oop |
end if |
.no_inc_bright: |
cmp [dec_bright_flag],0 |
je .no_dec_bright |
movzx ebx,[dec_bright_flag] |
shl ebx,4 |
mov esi,[screen_ptr] |
movzx eax,word[size_x_var] |
movzx ecx,word[size_y_var] |
mul ecx |
lea ecx,[eax*4] |
if (Ext = MMX)|(Ext = SSE) |
mov bh,bl |
push bx |
shl ebx,16 |
pop bx |
push ebx |
push ebx |
movq mm0,[esp] |
add esp,8 |
else if Ext >=SSE2 |
mov bh,bl |
push bx |
shl ebx,16 |
pop bx |
movd xmm0,ebx |
shufps xmm0,xmm0,0 |
end if |
.oop1: |
if Ext=NON |
lodsb |
sub al,bl |
jb @f |
mov [esi-1],al |
loop .oop1 |
@@: |
mov byte[esi-1],0 |
loop .oop1 |
else if (Ext = MMX)|(Ext=SSE) |
movq mm1,[esi] |
psubusb mm1,mm0 |
movq [esi],mm1 |
add esi,8 |
sub ecx,8 |
jnz .oop1 |
else |
movaps xmm1,[esi] |
psubusb xmm1,xmm0 |
movaps [esi],xmm1 |
add esi,16 |
sub ecx,16 |
jnc .oop1 |
end if |
.no_dec_bright: |
RDTSC |
sub eax,[esp] |
sub eax,41 |
; pop eax |
mov ecx,10 |
.dc: |
xor edx,edx |
mov edi,10 |
div edi |
add dl,30h |
mov [STRdata+ecx-1],dl |
loop .dc |
pop eax |
mov eax,7 ; put image |
mov ebx,[screen_ptr] |
mov ecx,[size_y_var] |
; mov ecx,SIZE_X shl 16 + SIZE_Y |
mov edx,[offset_y] ;5 shl 16 + 25 |
cmp [dr_flag],12 |
jge .ff |
int 0x40 |
jmp .f |
.ff: |
mov eax,65 |
mov esi,32 |
xor ebp,ebp |
int 0x40 |
.f: |
mov eax,13 |
mov bx,[size_x_var] |
add ebx,18 |
shl ebx,16 |
mov bx,60 |
mov cx,[size_y_var] |
sub cx,2 |
shl ecx,16 |
mov cx,9 |
xor edx,edx |
int 40h |
mov eax,4 ; function 4 : write text to window |
mov bx,[size_x_var] |
add ebx,18 |
shl ebx,16 |
mov bx,[size_y_var] |
sub bx,2 ; [x start] *65536 + [y start] |
mov ecx,0x00888888 |
mov edx,STRdata ; pointer to text beginning |
mov esi,10 ; text length |
int 40h |
jmp still |
;-------------------------------------------------------------------------------- |
;-------------------------PROCEDURES--------------------------------------------- |
;-------------------------------------------------------------------------------- |
include "flat_cat.inc" |
include "tex_cat.inc" |
include "bump_cat.inc" |
include "3dmath.inc" |
include "grd_line.inc" |
include "b_procs.inc" |
include "a_procs.inc" |
include "grd_cat.inc" |
include "bump_tex.inc" |
include "grd_tex.inc" |
include "two_tex.inc" |
include "asc.inc" |
if Ext >= SSE3 |
include "3r_phg.inc" |
include '3stencil.inc' |
include '3glass.inc' |
include '3glass_tex.inc' |
end if |
clear_vertices_index: |
mov edi,[vertices_index_ptr] |
movzx eax,word[size_x_var] |
movzx ecx,word[size_y_var] |
imul ecx,eax |
xor eax,eax |
shr ecx,1 |
rep stosd |
ret |
edit: ; mmx required, edit mesh by vertex |
push ebp |
mov ebp,esp |
sub esp,128 |
.y_coord equ ebp-2 |
.x_coord equ ebp-4 |
.points_translated equ ebp-10 |
.points equ ebp-22 |
.points_rotated equ ebp-34 |
.mx equ ebp-70 |
macro check_bar |
{ |
movzx ebx,word[.x_coord] |
movzx ecx,word[.y_coord] |
movzx edx,word[size_x_var] |
imul edx,ecx |
add ebx,edx |
push ebx |
lea ecx,[ebx*2] |
lea ebx,[ebx*3] |
cmp [dr_flag],12 |
jl @f |
add ebx,[esp] |
@@: |
add esp,4 |
add ebx,[screen_ptr] |
mov ebx,[ebx] |
and ebx,0x00ffffff |
cmp ebx,0x00ff0000 ; is handle bar ? |
} |
emms |
mov eax,37 ; get mouse state |
mov ebx,1 ; x = 5, y = 25 - offsets |
int 0x40 |
mov ebx,[offset_y] ;5 shl 16 + 25 |
movd mm0,ebx |
movd mm1,eax |
movd mm3,[size_y_var] |
pcmpgtw mm0,mm1 |
pcmpgtw mm3,mm1 |
pxor mm3,mm0 |
movd eax,mm3 |
mov cx,ax |
shr eax,16 |
and ax,cx |
or ax,ax |
jz .no_edit |
movd mm0,ebx |
psubw mm1,mm0 |
movd eax,mm1 |
; store both x and y coordinates |
ror eax,16 |
; push eax |
; sub esp,256 |
mov [.x_coord],eax |
test word[mouse_state],100000000b |
jz .not_press ; check if left mouse button press |
; left button pressed |
check_bar |
jne .no_edit |
add ecx,[vertices_index_ptr] |
mov cx,word[ecx] |
inc cx |
mov [vertex_edit_no],cx ;if vert_edit_no = 0, no vertex selected |
mov eax,dword[.x_coord] |
mov dword[edit_end_x],eax |
mov dword[edit_start_x],eax |
jmp .end |
.not_press: |
test byte[mouse_state],1b ; check if left button is held |
jz .not_held |
; check_bar |
; jne .no_edit |
; add ecx,[vertices_index_ptr] |
; mov cx,[ecx] |
; inc cx |
cmp [vertex_edit_no],0 ; cx ; vertex number |
je .end |
push dword[.x_coord] |
pop dword[edit_end_x] |
jmp .end |
.not_held: |
shr [mouse_state],16 |
test byte[mouse_state],1b ; test if left button released |
jz .end |
check_bar |
jne .end |
movzx esi,[vertex_edit_no] |
dec esi |
lea esi,[esi*3] |
add esi,esi |
add esi,[points_translated_ptr] |
emms |
movd mm1,dword[esi] |
paddw mm1,mm0 |
psubw mm1,qword[vect_x] |
movd dword[esi],mm1 |
lea edi,[.points] |
; detranslate |
fninit |
fild word[esi+4] |
fstp dword[edi+8] |
fild word[esi+2] |
fisub word[offset_x] |
fstp dword[edi+4] |
fild word[esi] |
fisub word[offset_y] ; proteza |
fstp dword[edi] |
mov esi,matrix |
lea edi,[.mx] |
call reverse_mx_3x3 |
lea esi,[.points] |
lea edi,[.points_rotated] |
lea ebx,[.mx] |
mov ecx,1 |
call rotary |
; inject into vertex list |
movzx edi,[vertex_edit_no] |
dec edi |
lea edi,[edi*3] |
shl edi,2 |
add edi,[points_ptr] |
lea esi,[.points_rotated] |
cld |
movsd |
movsd |
movsd |
; mov ecx,3 |
; cld |
; rep movsd |
mov dword[edit_end_x],0 |
mov [vertex_edit_no],0 |
.no_edit: |
.end: |
mov esp,ebp |
pop ebp |
ret |
alloc_buffer_mem: |
push ebp |
mov ebp,esp |
.temp equ ebp-4 |
push dword 0 |
mov eax, 68 |
mov ebx, 11 |
int 0x40 ; -> create heap, to be sure |
movzx ecx,word[size_x_var] |
movzx eax,word[size_y_var] |
mul ecx |
mov [.temp],eax |
lea ecx,[eax*4] ; more mem for r_phg cause |
add ecx,256 |
mov eax,68 |
mov ebx,20 |
mov edx,[screen_ptr] |
int 0x40 |
mov [screen_ptr],eax |
mov ecx,[.temp] |
shl ecx,2 |
add ecx,256 |
mov eax,68 |
mov ebx,20 |
mov edx,[Zbuffer_ptr] |
int 0x40 |
mov [Zbuffer_ptr],eax |
mov ecx,[.temp] |
add ecx,ecx |
add ecx,256 |
mov eax,68 |
mov ebx,20 |
mov edx,[vertices_index_ptr] |
int 0x40 |
mov [vertices_index_ptr],eax |
mov esp,ebp |
pop ebp |
update_flags: |
; updates flags and writing flag description |
; in ah - button number |
push ax |
mov edi,menu |
.ch_another: |
cmp ah,byte[edi] ; ah = button id |
jne @f |
mov bl,byte[edi+11] ; max_flag + 1 |
cmp bl,255 |
je .no_write |
inc byte[edi+12] ; flag |
cmp byte[edi+12],bl |
jne .write |
mov byte[edi+12],0 |
jmp .write |
@@: |
add edi,17 |
cmp byte[edi],-1 |
jne .ch_another |
jmp .no_write |
.write: |
; clreol {pascal never dies} |
; * eax = 13 - function number |
; * ebx = [coordinate on axis x]*65536 + [size on axis x] |
; * ecx = [coordinate on axis y]*65536 + [size on axis y] |
; * edx = color 0xRRGGBB or 0x80RRGGBB for gradient fill |
mov eax,13 ; function 13 write rectangle |
movzx ecx,byte[edi] |
sub cl,2 |
lea ecx,[ecx*3] |
lea ecx,[ecx*5] |
add ecx,28 |
shl ecx,16 |
add ecx,14 ; ecx = [coord y]*65536 + [size y] |
mov bx,[size_x_var] |
shl ebx,16 |
add ebx,(12+70)*65536+25 ; [x start] *65536 + [size x] |
mov edx,0x00000000 ; color 0x00RRGGBB |
int 0x40 |
mov eax,4 ; function 4 : write text to window |
movzx ebx,byte[edi] |
sub bl,2 |
lea ebx,[ebx*3] |
lea ebx,[ebx*5] |
mov cx,[size_x_var] |
shl ecx,16 |
add ebx,ecx |
add ebx,(12+70)*65536+28 ; [x start] *65536 + [y start] |
mov ecx,0x00ddeeff ; font 1 & color ( 0xF0RRGGBB ) |
movzx edx,byte[edi+12] ; current flag |
shl edx,2 ; * 4 = text length |
add edx,dword[edi+13] ; pointer to text beginning |
mov esi,4 ; text length - |
; flag description 4 characters |
int 0x40 |
.no_write: |
pop ax |
ret |
normalize_all_light_vectors: |
mov edi,lights |
@@: |
call normalize_vector ; 3dmath.inc |
add edi,LIGHT_SIZE |
cmp edi,lightsend ;ecx |
jl @b |
ret |
calc_bumpmap_coords: ; map texture, bump |
;macro .comment222 |
; ; planar mapping |
; mov esi,points |
; mov edi,tex_points |
; @@: |
; add esi,2 |
; movsd |
; cmp dword[esi],dword -1 |
; jne @b |
; .Pi2 equ dword[ebp-4] |
; mov ebp,esp |
; sub esp,4 |
fninit |
fldpi |
fadd st,st |
mov esi,[points_ptr] |
mov edi,tex_points |
mov ecx,[points_count_var] |
inc ecx |
; cmp [map_tex_flag],1 |
; jne .cylindric |
; spherical mapping around y axle |
@@: |
fld dword[esi] ; x coord |
fld dword[esi+8] ; z coord |
fpatan ; arctg(st1/st) |
; fdiv .Pi2 |
fdiv st0,st1 |
fimul [tex_x_div2] |
fiadd [tex_x_div2] |
fistp word[edi] ; x |
fld dword[esi+4] ; y coord |
fld dword[esi] ; x |
fmul st,st0 |
fld dword[esi+4] ; y |
fmul st,st0 |
fld dword[esi+8] ; z |
fmul st,st0 |
faddp |
faddp |
fsqrt |
fpatan |
fldpi |
fdivp |
fimul [tex_y_div2] |
fiadd [tex_y_div2] |
fistp word[edi+2] ; y |
add esi,12 |
add edi,4 |
loop @b |
ffree st0 |
; jmp .end_map |
; .cylindric: |
; fld dword[esi] ; around y axle |
; fld dword[esi+8] |
; fpatan |
; fdiv st0,st1 |
; fimul [tex_x_div2] |
; fiadd [tex_x_div2] |
; fistp word[edi] |
; fld dword[esi+4] |
; fimul [tex_y_div2] |
; fiadd [tex_y_div2] |
; fistp word[edi+2] |
; add esi,12 |
; add edi,4 |
; loop .cylindric |
; ffree st0 |
;; mov esp,ebp |
; .end_map: |
ret |
init_envmap2: ; do env_map using many light sources |
;env_map 512 x 512 x 3 bytes |
.temp equ word [ebp-2] |
.nEy equ word [ebp-4] |
.nEx equ word [ebp-6] |
.col_r equ [ebp-8] |
.col_g equ [ebp-9] |
.col_b equ [ebp-10] |
push ebp |
mov ebp,esp |
sub esp,20 |
mov edi,envmap |
fninit |
mov dx,- TEX_Y / 2 ;256 ; dx - vertical coordinate = y |
.ie_ver: |
mov cx,- TEX_X / 2 ;256 ; cx - horizontal coord = x |
.ie_hor: |
xor ebx,ebx |
mov dword .col_b, 0 |
.light: |
lea esi,[lights+ebx] |
fld dword[esi] ; light vector x cooficient |
fimul [tex_x_div2] ;[i256] |
mov .temp,cx |
fisubr .temp |
fistp .nEx |
fld dword[esi+4] ; light vector y cooficient |
fimul [tex_y_div2] ;[i256] |
mov .temp,dx |
fisubr .temp |
fistp .nEy |
cmp .nEx,- TEX_X / 2 ;256 |
jl .update_counters |
cmp .nEy,- TEX_Y / 2 ;256 |
jl .update_counters |
cmp .nEx,TEX_X / 2 ;256 |
jg .update_counters |
cmp .nEy,TEX_Y / 2 ;256 |
jg .update_counters |
fild .nEx |
fmul st,st0 |
fild .nEy |
fmul st,st0 |
faddp |
fsqrt |
fisubr [i256] |
fmul [env_const] |
fidiv [i256] ; st - 'virtual' dot product |
fcom [dot_max] |
fstsw ax |
sahf |
jb @f |
ffree st |
fld1 ;[dot_max] |
@@: |
fcom [dot_min] |
fstsw ax |
sahf |
ja @f |
ffree st |
fldz ;[dot_min] |
@@: |
push ebp |
movzx ax,byte[esi+21] |
push ax ;- shines |
mov al,byte[esi+14] ; b orginal color |
push ax |
mov al,byte[esi+13] ; g |
push ax |
mov al,byte[esi+12] ; r |
push ax |
; pxor xmm1,xmm1 |
; movd xmm0,[esi+12] |
; punpckhbw xmm0,xmm1 |
; sub esp,8 |
; movq [esp],xmm0 |
mov al,byte[esi+20] ; b max color |
push ax |
mov al,byte[esi+19] ; g |
push ax |
mov al,byte[esi+18] ; r |
push ax |
mov al,byte[esi+17] ; b min col |
push ax |
mov al,byte[esi+16] ; g |
push ax |
mov al,byte[esi+15] ; r |
push ax |
push eax ; earlier - dot pr |
; fstp .dot_product |
; push .dot_product |
call calc_one_col |
pop ebp |
; eax-0x00rrggbb |
cmp al,.col_b |
jbe @f |
mov .col_b,al |
@@: ; eax - ggbb00rr |
shr ax,8 |
cmp al,.col_g |
jbe @f |
mov .col_g,al |
@@: ; eax - bb0000gg |
shr eax,16 |
cmp al,.col_r |
jbe @f |
mov .col_r,al |
@@: |
.update_counters: ; update and jump when neccesery |
add ebx,LIGHT_SIZE |
cmp bx,[all_lights_size] |
jl .light ; next_light |
mov eax,dword .col_b |
stosd |
dec edi |
inc cx |
cmp cx,TEX_X / 2 ;256 |
jne .ie_hor |
inc dx |
cmp dx,TEX_Y / 2 ;256 |
jne .ie_ver |
mov esp,ebp |
pop ebp |
ret |
do_color_buffer: ; do color buffer for Gouraud, flat shading |
;env_map 512 x 512 x 3 bytes ; many lights using |
.temp equ word [ebp-2] |
.nz equ dword [ebp-6] ; dword |
.ny equ dword [ebp-10] |
.nx equ dword [ebp-14] |
.col_r equ [ebp-16] |
.col_g equ [ebp-17] |
.col_b equ [ebp-18] |
push ebp |
mov ebp,esp |
sub esp,20 |
mov edi,color_map |
fninit |
mov dx,- TEX_Y / 2 ;-256 ; dx - vertical coordinate = y |
.ie_ver: |
mov cx,- TEX_X / 2 ;256 ; cx - horizontal coord = x |
.ie_hor: |
mov .temp,cx |
fild .temp |
fidiv [i256] ;st = Nx - vector normal x cooficient |
fst .nx |
fmul st,st0 |
mov .temp,dx |
fild .temp |
fidiv [i256] ; st = Ny - vector normal y coeficient |
fst .ny |
fmul st,st0 |
faddp |
fld1 |
fchs |
faddp |
fabs |
fsqrt |
fchs |
fstp .nz ; st - Nz - vect normal z coeficient |
xor ebx,ebx |
mov dword .col_b, 0 |
.light: |
push edi ;env_map |
lea esi,[lights+ebx] |
lea edi,.nx |
call dot_product |
pop edi |
fcom [dot_min] |
fstsw ax |
sahf |
ja .env_ok1 ;compare with dot_max |
ffree st |
jmp .update_counters |
.env_ok1: |
fcom [dot_max] |
fstsw ax |
sahf |
jb .env_ok2 ; calc col |
ffree st |
jmp .update_counters |
.env_ok2: ;calc col |
push ebp |
movzx ax,byte[esi+21] |
push ax ;- shines |
mov al,byte[esi+14] ; b orginal color |
push ax |
mov al,byte[esi+13] ; g |
push ax |
mov al,byte[esi+12] ; r |
push ax |
mov al,byte[esi+20] ; b max color |
push ax |
mov al,byte[esi+19] ; g |
push ax |
mov al,byte[esi+18] ; r |
push ax |
mov al,byte[esi+17] ; b min col |
push ax |
mov al,byte[esi+16] ; g |
push ax |
mov al,byte[esi+15] ; r |
push ax |
push eax ; earlier - dot pr |
; fstp .dot_product |
; push .dot_product |
call calc_one_col |
pop ebp |
; eax-0x00rrggbb |
cmp al,.col_b |
jbe @f |
mov .col_b,al |
@@: |
shr ax,8 |
cmp al,.col_g |
jbe @f |
mov .col_g,al |
@@: |
shr eax,16 |
cmp al,.col_r |
jbe @f |
mov .col_r,al |
@@: |
.update_counters: ; update and jump when neccesery |
add ebx,LIGHT_SIZE |
cmp bx,[all_lights_size] |
jl .light ; next_light |
mov eax,dword .col_b |
stosd |
dec edi |
inc cx |
cmp cx,TEX_X / 2 ;256 |
jne .ie_hor |
inc dx |
cmp dx,TEX_X / 2 ;256 |
jne .ie_ver |
.env_done: |
mov esp,ebp |
pop ebp |
ret |
if Ext >= SSE2 |
init_point_normals: |
.z equ dword [ebp-8] |
.y equ dword [ebp-12] |
.x equ [ebp-16] |
.point_number equ dword [ebp-28] |
.hit_faces equ dword [ebp-32] |
push ebp |
mov ebp,esp |
sub esp,64 |
and ebp,-16 |
mov edi,[points_normals_ptr] |
mov .point_number,0 |
.ipn_loop: |
movd xmm0,.point_number |
pshufd xmm0,xmm0,0 |
mov .hit_faces,0 |
mov .x,dword 0 |
mov .y,0 |
mov .z,0 |
mov esi,[triangles_ptr] |
xor ecx,ecx ; ecx - triangle number |
.ipn_check_face: |
movdqu xmm1,[esi] |
pcmpeqd xmm1,xmm0 |
pmovmskb eax,xmm1 |
and eax,0xfff |
or eax,eax |
jz .ipn_next_face |
push esi |
mov esi,ecx |
lea esi,[esi*3] |
shl esi,2 |
add esi,[triangles_normals_ptr] |
movups xmm7,[esi] |
addps xmm7,.x |
movaps .x,xmm7 |
pop esi |
inc .hit_faces |
.ipn_next_face: |
add esi,12 |
inc ecx |
cmp ecx,[triangles_count_var] |
jne .ipn_check_face |
cvtsi2ss xmm6,.hit_faces |
movaps xmm7,.x |
rcpss xmm6,xmm6 |
shufps xmm6,xmm6,11000000b |
mulps xmm7,xmm6 |
movlps [edi],xmm7 |
movhlps xmm7,xmm7 |
movss [edi+8],xmm7 |
call normalize_vector |
; movaps xmm6,xmm7 |
; mulps xmm6,xmm6 |
; andps xmm6,[zero_hgst_dd] |
; haddps xmm6,xmm6 |
; haddps xmm6,xmm6 |
; rsqrtps xmm6,xmm6 |
; mulps xmm7,xmm6 |
; movlps [edi],xmm7 |
; movhlps xmm7,xmm7 |
; movss [edi+8],xmm7 |
add edi,12 |
inc .point_number |
mov edx,.point_number |
cmp edx,[points_count_var] |
jne .ipn_loop |
add esp,64 |
pop ebp |
ret |
else |
init_point_normals: |
.x equ dword [ebp-4] |
.y equ dword [ebp-8] |
.z equ dword [ebp-12] |
.point_number equ dword [ebp-28] |
.hit_faces equ dword [ebp-32] |
fninit |
mov ebp,esp |
sub esp,32 |
mov edi,[points_normals_ptr] |
mov .point_number,0 |
.ipn_loop: |
mov .hit_faces,0 |
mov .x,0 |
mov .y,0 |
mov .z,0 |
mov esi,[triangles_ptr] |
xor ecx,ecx ; ecx - triangle number |
.ipn_check_face: |
xor ebx,ebx ; ebx - 'position' in one triangle |
.ipn_check_vertex: |
mov eax,dword[esi+ebx] ; eax - point_number |
cmp eax,.point_number |
jne .ipn_next_vertex |
push esi |
mov esi,ecx |
lea esi,[esi*3] |
; lea esi,[triangles_normals+esi*4] |
shl esi,2 |
add esi,[triangles_normals_ptr] |
fld .x |
fadd dword[esi+vec_x] ; vec_x this defined in 3dmath.asm - x cooficient |
fstp .x ; of normal vactor |
fld .y |
fadd dword[esi+vec_y] |
fstp .y |
fld .z |
fadd dword[esi+vec_z] |
fstp .z |
pop esi |
inc .hit_faces |
jmp .ipn_next_face |
.ipn_next_vertex: |
add ebx,4 |
cmp ebx,12 |
jne .ipn_check_vertex |
.ipn_next_face: |
add esi,12 |
inc ecx |
cmp ecx,[triangles_count_var] |
jne .ipn_check_face |
fld .x |
fidiv .hit_faces |
fstp dword[edi+vec_x] |
fld .y |
fidiv .hit_faces |
fstp dword[edi+vec_y] |
fld .z |
fidiv .hit_faces |
fstp dword[edi+vec_z] |
call normalize_vector |
add edi,12 ;type vector 3d |
inc .point_number |
mov edx,.point_number |
cmp edx,[points_count_var] |
jne .ipn_loop |
mov esp,ebp |
ret |
;=============================================================== |
end if |
init_triangles_normals2: |
mov ebx,[triangles_normals_ptr] |
mov ebp,[triangles_ptr] |
mov ecx,[triangles_count_var] |
@@: |
push ecx |
push ebx |
mov ebx,vectors |
mov esi,dword[ebp] ; first point index |
lea esi,[esi*3] |
; lea esi,[points+esi*2] ; esi - pointer to 1st 3d point |
shl esi,2 |
add esi,[points_ptr] |
mov edi,dword[ebp+4] ; first point index |
lea edi,[edi*3] |
shl edi,2 |
add edi,[points_ptr] |
; movzx edi,word[ebp+2] ; second point index |
; lea edi,[edi*3] |
; lea edi,[points+edi*2] ; edi - pointer to 2nd 3d point |
call make_vector_r |
add ebx,12 |
mov esi,edi |
mov edi,dword[ebp+8] ; third point index |
lea edi,[edi*3] |
shl edi,2 |
add edi,[points_ptr] |
; lea edi,[points+edi*2] |
call make_vector_r |
mov edi,ebx ; edi - pointer to 2nd vector |
mov esi,ebx |
sub esi,12 ; esi - pointer to 1st vector |
pop ebx |
call cross_product |
mov edi,ebx |
call normalize_vector |
add ebp,12 |
add ebx,12 |
pop ecx |
sub ecx,1 |
jnz @b |
; cmp dword[ebp],-1 |
; jne @b |
ret |
if Ext >= SSE3 |
copy_lights: ; after normalising ! |
mov esi,lights |
mov edi,lights_aligned |
mov ecx,3 |
.again: |
push ecx |
mov ecx,3 |
cld |
rep movsd |
xor eax,eax |
stosd |
mov ecx,3 |
.b: |
push ecx |
mov ecx,3 |
@@: |
movzx ebx,byte[esi] |
cvtsi2ss xmm0,ebx |
movss [edi],xmm0 |
inc esi |
add edi,4 |
loop @b |
stosd |
pop ecx |
loop .b |
inc esi ; skip shiness |
pop ecx |
loop .again |
ret |
end if |
clrscr: |
mov edi,[screen_ptr] |
movzx ecx,word[size_x_var] |
movzx eax,word[size_y_var] |
imul ecx,eax |
xor eax,eax |
if Ext=NON |
rep stosd |
else if Ext = MMX |
pxor mm0,mm0 |
@@: |
movq [edi+00],mm0 |
movq [edi+08],mm0 |
movq [edi+16],mm0 |
movq [edi+24],mm0 |
add edi,32 |
sub ecx,8 |
jnc @b |
else |
push ecx |
mov ecx,edi |
and ecx,0x0000000f |
rep stosb |
pop ecx |
and ecx,0xfffffff0 |
xorps xmm0,xmm0 |
@@: |
movaps [edi],xmm0 |
movaps [edi+16],xmm0 |
movaps [edi+32],xmm0 |
movaps [edi+48],xmm0 |
add edi,64 |
sub ecx,16 |
jnz @b |
end if |
ret |
draw_triangles: |
emms |
; update translated list MMX required |
cmp [vertex_edit_no],0 |
je @f |
movzx eax,[vertex_edit_no] |
dec eax |
movd mm0,[edit_end_x] |
psubw mm0,[edit_start_x] |
lea eax,[eax*3] |
add eax,eax |
add eax,[points_translated_ptr] |
movd mm1,dword[eax] |
paddw mm1,mm0 |
movd dword[eax],mm1 |
@@: |
if Ext >= SSE3 |
cmp [dr_flag],13 |
jnge .no_stencil |
mov esi,[triangles_ptr] |
mov ecx,[triangles_count_var] |
@@: |
push esi |
push ecx |
mov eax,[esi] |
mov ebx,[esi+4] |
mov ecx,[esi+8] |
imul eax,[i12] |
imul ebx,[i12] |
imul ecx,[i12] |
add eax,[points_rotated_ptr] |
add ebx,[points_rotated_ptr] |
add ecx,[points_rotated_ptr] |
push dword[ecx+8] |
push dword[ebx+8] |
push dword[eax+8] |
movups xmm0,[esp] |
add esp,12 |
andps xmm0,[zero_hgst_dd] |
mov eax,[esi] |
mov ebx,[esi+4] |
mov ecx,[esi+8] |
shl eax,1 |
shl ebx,1 |
shl ecx,1 |
lea eax,[eax*3] |
lea ebx,[ebx*3] |
lea ecx,[ecx*3] |
add eax,[points_translated_ptr] |
add ebx,[points_translated_ptr] |
add ecx,[points_translated_ptr] |
mov eax,[eax] |
mov ebx,[ebx] |
mov ecx,[ecx] |
ror eax,16 |
ror ebx,16 |
ror ecx,16 |
mov esi,[Zbuffer_ptr] |
call stencil_tri |
pop ecx |
pop esi |
add esi,12 |
dec ecx |
jnz @b |
.no_stencil: |
end if |
mov esi,[triangles_ptr] |
mov ecx,[triangles_count_var] |
.again_dts: |
push ecx |
mov ebp,[points_translated_ptr] |
if Ext = NON |
mov eax,dword[esi] |
mov [point_index1],eax |
lea eax,[eax*3] |
add eax,eax |
push ebp |
add ebp,eax |
mov eax,[ebp] |
; cmp [vertex_edit_no],0 |
; jne @f |
; |
; @@: |
mov dword[xx1],eax |
mov eax,[ebp+4] |
mov [zz1],ax |
pop ebp |
mov eax,dword[esi+4] |
mov [point_index2],eax |
lea eax,[eax*3] |
add eax,eax |
push ebp |
add ebp,eax |
mov eax,[ebp] |
mov dword[xx2],eax |
mov eax,[ebp+4] |
mov [zz2],ax |
pop ebp |
mov eax,dword[esi+8] ; xyz3 = [ebp+[esi+4]*6] |
mov [point_index3],eax |
lea eax,[eax*3] |
add eax,eax |
; push ebp |
add ebp,eax |
mov eax,[ebp] |
mov dword[xx3],eax |
mov eax,[ebp+4] |
mov [zz3],ax |
else |
movq mm0,[esi] ; don't know MMX |
movq qword[point_index1],mm0 |
; shr eax,16 |
; mov [point_index2],ax |
mov eax,dword[esi+8] |
mov [point_index3],eax |
movdqu xmm0,[esi] |
paddd xmm0,xmm0 |
movdqa xmm1,xmm0 |
paddd xmm0,xmm0 |
paddd xmm0,xmm1 |
movd eax,xmm0 |
psrldq xmm0,4 |
movd ebx,xmm0 |
psrldq xmm0,4 |
movd ecx,xmm0 |
and eax,0FFFFh |
and ebx,0FFFFh |
and ecx,0FFFFh |
movq mm0,[ebp+eax] |
movq mm1,[ebp+ebx] |
movq mm2,[ebp+ecx] |
movq qword[xx1],mm0 |
movq qword[xx2],mm1 |
movq qword[xx3],mm2 |
; emms |
end if ; ********************************* |
if 0 |
cmp [vertex_edit_no],0 |
jne .no_edit |
mov ax,[vertex_edit_no] |
dec ax |
cmp ax,[point_index1] |
jne @f |
movd mm0,[edit_start_x] |
psubw mm0,[edit_end_x] |
movd mm1,dword[xx1] |
paddw mm1,mm0 |
movd dword[xx1],mm1 |
jmp .no_edit |
@@: |
cmp ax,[point_index2] |
jne @f |
movd mm0,[edit_start_x] |
psubw mm0,[edit_end_x] |
movd mm1,dword[xx2] |
paddw mm1,mm0 |
movd dword[xx2],mm1 |
jmp .no_edit |
@@: |
cmp ax,[point_index3] |
jne @f |
movd mm0,[edit_start_x] |
psubw mm0,[edit_end_x] |
movd mm1,dword[xx3] |
paddw mm1,mm0 |
movd dword[xx3],mm1 |
jmp .no_edit |
@@: |
.no_edit: |
end if |
push esi ; |
fninit ; DO culling AT FIRST |
cmp [culling_flag],1 ; (if culling_flag = 1) |
jne .no_culling |
mov esi,point_index1 ; ********************************* |
mov ecx,3 ; |
@@: |
mov eax,dword[esi] |
lea eax,[eax*3] |
shl eax,2 |
add eax,[points_normals_rot_ptr] |
bt dword[eax+8],+31 |
jc .no_culling |
; lea eax,[eax+point_normals_rotated] |
; fld dword[eax+8] ; ***************************** |
; ftst ; CHECKING OF Z COOFICIENT OF |
; fstsw ax ; NORMAL VECTOR |
; sahf |
; jb @f |
; ffree st |
loop @b |
jmp .end_draw ; non visable |
; @@: |
; ffree st ;is visable |
.no_culling: |
cmp [dr_flag],0 ; draw type flag |
je .flat_draw |
cmp [dr_flag],2 |
je .env_mapping |
cmp [dr_flag],3 |
je .bump_mapping |
cmp [dr_flag],4 |
je .tex_mapping |
cmp [dr_flag],5 |
je .rainbow |
cmp [dr_flag],7 |
je .grd_tex |
cmp [dr_flag],8 |
je .two_tex |
cmp [dr_flag],9 |
je .bump_tex |
cmp [dr_flag],10 |
je .cubic_env_mapping |
cmp [dr_flag],11 |
je .draw_smooth_line |
if Ext >= SSE3 |
cmp [dr_flag],12 |
je .r_phg |
cmp [dr_flag],13 |
je .glass |
cmp [dr_flag],14 |
je .glass_tex |
end if ; **************** |
mov esi,point_index3 ; do Gouraud shading |
mov ecx,3 |
.again_grd_draw: |
mov eax,dword[esi] |
shl eax,2 |
lea eax,[eax*3] |
add eax,[points_normals_rot_ptr] |
if Ext < SSE |
; texture x=(rotated point normal -> x * 255)+255 |
fld dword[eax] ; x cooficient of normal vector |
fmul dword[correct_texf] |
fadd dword[correct_texf] |
fistp [temp1] |
; texture y=(rotated point normal -> y * 255)+255 |
fld dword[eax+4] ; y cooficient |
fmul dword[correct_texf] |
fadd dword[correct_texf] |
fistp [temp2] |
mov eax,[temp2] |
mov ebx,[temp1] |
else |
movlps xmm0,[eax] |
mulps xmm0,[correct_texf] |
addps xmm0,[correct_texf] |
cvtps2dq xmm0,xmm0 |
movd eax,xmm0 |
psrldq xmm0,4 |
movd ebx,xmm0 |
end if |
and ebx,0xfffffff |
shl eax,TEX_SHIFT |
add eax,ebx |
lea eax,[eax*3+color_map] |
mov eax,dword[eax] |
; cmp [catmull_flag],1 ; put on stack z coordinate if necessary |
; jne @f |
lea edx,[ecx*3] |
push word[edx*2+xx1-2] ; zz1 ,2 ,3 |
; @@: |
ror eax,16 ; eax -0xxxrrggbb -> 0xggbbxxrr |
xor ah,ah |
push ax ;r |
rol eax,8 ; eax-0xggbb00rr -> 0xbb00rrgg |
xor ah,ah |
push ax ;g |
shr eax,24 |
push ax ;b |
sub esi,4 |
dec cx |
jnz .again_grd_draw |
jmp .both_draw |
; movzx edi,[point_index3] ;gouraud shading according to light vector |
; lea edi,[edi*3] |
; lea edi,[4*edi+point_normals_rotated] ; edi - normal |
; mov esi,light_vector |
; call dot_product |
; fabs |
; fimul [orginal_color_r] |
; fistp [temp_col] |
; and [temp_col],0x00ff |
; push [temp_col] |
; push [temp_col] |
; push [temp_col] |
; movzx edi,[point_index2] |
; lea edi,[edi*3] |
; lea edi,[4*edi+point_normals_rotated] ; edi - normal |
; mov esi,light_vector |
; call dot_product |
; fabs |
; fimul [orginal_color_r] |
; fistp [temp_col] |
; and [temp_col],0x00ff |
; push [temp_col] |
; push [temp_col] |
; push [temp_col] |
; movzx edi,[point_index1] |
; lea edi,[edi*3] |
; lea edi,[4*edi+point_normals_rotated] ; edi - normal |
; mov esi,light_vector |
; call dot_product |
; fabs |
; fimul [orginal_color_r] |
; fistp [temp_col] |
; and [temp_col],0x00ff |
; push [temp_col] |
; push [temp_col] |
; push [temp_col] |
.rainbow: |
; cmp [catmull_flag],1 ; put on stack z coordinate if necessary |
; jne @f |
push [zz3] |
@@: |
mov eax,dword[yy3] |
mov ebx,0x00ff00ff |
and eax,ebx |
push eax |
neg al |
push ax |
push [zz2] |
mov eax,dword[yy2] |
and eax,ebx |
push eax |
neg al |
push ax |
push [zz1] |
mov eax,dword[yy1] |
and eax,ebx |
push eax |
neg al |
push ax |
.both_draw: |
mov eax,dword[xx1] |
ror eax,16 |
mov ebx,dword[xx2] |
ror ebx,16 |
mov ecx,dword[xx3] |
ror ecx,16 |
mov edi,[screen_ptr] |
mov esi,[Zbuffer_ptr] |
call gouraud_triangle_z |
jmp .end_draw |
.flat_draw: ;************************** |
fninit ; FLAT DRAWING |
mov eax,[point_index1] |
mov ebx,[point_index2] |
mov ecx,[point_index3] |
; shl eax,2 |
imul eax,[i12] |
imul ebx,[i12] |
imul ecx,[i12] |
; shl ebx,2 |
; shl ecx,2 |
; lea eax,[eax*3] ;+point_normals_rotated] |
add eax,[points_normals_rot_ptr] |
; lea ebx,[ebx*3] ;+point_normals_rotated] |
add ebx,[points_normals_rot_ptr] |
; lea ecx,[ecx*3] ;+point_normals_rotated] |
add ecx,[points_normals_rot_ptr] |
fld dword[eax] ; x cooficient of normal vector |
fadd dword[ebx] |
fadd dword[ecx] |
fidiv [i3] |
fmul dword[correct_texf] |
fadd dword[correct_texf] |
fistp [temp1] ;dword[esp-4] ; x temp variables |
fld dword[eax+4] ; y cooficient of normal vector |
fadd dword[ebx+4] |
fadd dword[ecx+4] |
fidiv [i3] |
fmul dword[correct_texf] |
fadd dword[correct_texf] |
fistp [temp2] ;dword[esp-8] ; y |
mov edx,[temp2] ;dword[esp-8] |
and edx,0xfffffff |
and [temp1],0xfffffff |
shl edx,TEX_SHIFT |
add edx,[temp1] ;dword[esp-4] |
lea eax,[3*edx] |
add eax,color_map |
mov edx,dword[eax] |
and edx,0x00ffffff ; edx = 0x00rrggbb |
; mov ax,[zz1] ; z position depend draw |
; add ax,[zz2] |
; add ax,[zz3] |
; cwd |
; idiv [i3] ; = -((a+b+c)/3+130) |
; add ax,130 |
; neg al |
; xor edx,edx |
; mov ah,al ;set color according to z position |
; shl eax,8 |
; mov edx,eax |
mov eax,dword[xx1] |
ror eax,16 |
mov ebx,dword[xx2] |
ror ebx,16 |
mov ecx,dword[xx3] |
ror ecx,16 |
mov edi,[screen_ptr] |
mov esi,[Zbuffer_ptr] |
push word[zz3] |
push word[zz2] |
push word[zz1] |
call flat_triangle_z |
jmp .end_draw |
.env_mapping: |
push [zz3] |
push [zz2] |
push [zz1] |
mov esi,point_index1 |
sub esp,12 |
mov edi,esp |
mov ecx,3 |
@@: |
mov eax,dword[esi] |
lea eax,[eax*3] |
shl eax,2 |
add eax,[points_normals_rot_ptr] ;point_normals_rotated |
movlps xmm0,[eax] |
mulps xmm0,[correct_texf] |
addps xmm0,[correct_texf] |
cvtps2dq xmm0,xmm0 |
packssdw xmm0,xmm0 |
movd [edi],xmm0 |
add edi,4 |
add esi,4 |
loop @b |
mov eax,dword[xx1] |
ror eax,16 |
mov ebx,dword[xx2] |
ror ebx,16 |
mov ecx,dword[xx3] |
ror ecx,16 |
mov edi,[screen_ptr] |
mov esi,envmap |
mov edx,[Zbuffer_ptr] |
call tex_triangle_z |
jmp .end_draw |
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
.cubic_env_mapping: |
push [zz3] |
push [zz2] |
push [zz1] |
mov esi,point_index1 |
sub esp,12 |
mov edi,esp |
mov ecx,3 |
@@: |
mov eax,dword[esi] |
lea eax,[eax*3] |
shl eax,2 |
add eax,[points_normals_rot_ptr] |
fld dword[eax] |
fmul dword[eax+4] |
fld1 |
fld1 |
faddp |
fmulp |
fmul dword[correct_texf] |
fadd dword[correct_texf] |
fistp word[edi] |
mov word[edi+2],0 |
; fistp word[edi+2] |
; # last change |
; ; texture x=(rotated point normal -> x * 255)+255 |
; fld dword[eax] |
; fimul [correct_tex] |
; fiadd [correct_tex] |
; fistp word[edi] |
; ; texture y=(rotated point normal -> y * 255)+255 |
; fld dword[eax+4] |
; fimul [correct_tex] |
; fiadd [correct_tex] |
; fistp word[edi+2] |
; # end of last ch. |
add edi,4 |
add esi,4 |
loop @b |
mov eax,dword[xx1] |
ror eax,16 |
mov ebx,dword[xx2] |
ror ebx,16 |
mov ecx,dword[xx3] |
ror ecx,16 |
mov edi,[screen_ptr] |
mov esi,envmap_cub |
mov edx,[Zbuffer_ptr] |
call tex_triangle_z |
jmp .end_draw |
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
.bump_mapping: |
push [Zbuffer_ptr] |
push [zz3] |
push [zz2] |
push [zz1] |
mov esi,point_index1 |
sub esp,12 |
mov edi,esp |
mov ecx,3 |
@@: |
mov eax,dword[esi] |
lea eax,[eax*3] |
shl eax,2 |
; imul eax,[i12] |
add eax,[points_normals_rot_ptr] ;point_normals_rotated |
; texture x=(rotated point normal -> x * 255)+255 |
movlps xmm0,[eax] |
mulps xmm0,[correct_texf] |
addps xmm0,[correct_texf] |
cvtps2dq xmm0,xmm0 |
packssdw xmm0,xmm0 |
movd [edi],xmm0 |
add edi,4 |
add esi,4 |
loop @b |
mov esi,[point_index3] ; bump map coords |
shl esi,2 |
add esi,tex_points |
push dword[esi] |
mov esi,[point_index2] |
shl esi,2 |
add esi,tex_points |
push dword[esi] |
mov esi,[point_index1] |
shl esi,2 |
add esi,tex_points |
push dword[esi] |
mov eax,dword[xx1] |
ror eax,16 |
mov ebx,dword[xx2] |
ror ebx,16 |
mov ecx,dword[xx3] |
ror ecx,16 |
mov edi,[screen_ptr] |
mov esi,envmap |
mov edx,bumpmap ;BUMP_MAPPING |
call bump_triangle_z |
jmp .end_draw |
.tex_mapping: |
push [zz3] |
push [zz2] |
push [zz1] |
; @@: |
mov esi,[point_index3] ; tex map coords |
shl esi,2 |
add esi,tex_points |
push dword[esi] |
mov esi,[point_index2] |
shl esi,2 |
add esi,tex_points |
push dword[esi] |
mov esi,[point_index1] |
shl esi,2 |
add esi,tex_points |
push dword[esi] |
mov eax,dword[xx1] |
ror eax,16 |
mov ebx,dword[xx2] |
ror ebx,16 |
mov ecx,dword[xx3] |
ror ecx,16 |
mov edi,[screen_ptr] |
mov esi,texmap |
mov edx,[Zbuffer_ptr] |
call tex_triangle_z |
jmp .end_draw |
; .ray: |
; grd_triangle according to points index |
; cmp [catmull_flag],0 |
; je @f |
; push [zz3] ; spot light with attenuation |
; @@: |
; movzx eax,[point_index3] ; env_map - points color list |
; shl eax,1 ; each color as word, 0x00rr00gg00bb.. |
; lea eax,[3*eax+bumpmap] |
; push word[eax] |
; push word[eax+2] |
; push word[eax+4] |
; cmp [catmull_flag],0 |
; je @f |
; push [zz2] |
; @@: |
; movzx eax,[point_index2] ; env_map - points color list |
; shl eax,1 ; each color as word, 0x00rr00gg00bb.. |
; lea eax,[eax*3+bumpmap] |
; push word[eax] |
; push word[eax+2] |
; push word[eax+4] |
; cmp [catmull_flag],0 |
; je @f |
; push [zz1] |
; @@: |
; movzx eax,[point_index1] ; env_map - points color list |
; shl eax,1 ; each color as word, 0xrr00gg00bb00.. |
; lea eax,[eax*3+bumpmap] |
; push word[eax] |
; push word[eax+2] |
; push word[eax+4] |
; jmp .both_draw |
.grd_tex: ; smooth shading + texture |
push ebp |
mov ebp,esp |
sub esp,4 |
push ebp |
mov esi,[point_index3] ; tex map coords |
shl esi,2 |
add esi,tex_points |
push dword[esi] ; texture coords as first |
mov esi,[point_index2] ; group of parameters |
shl esi,2 |
add esi,tex_points |
push dword[esi] |
mov esi,[point_index1] |
shl esi,2 |
add esi,tex_points |
push dword[esi] |
mov esi,point_index3 |
mov ecx,3 |
.aagain_grd_draw: |
lea edx,[ecx*3] |
push word[edx*2+xx1-2] ; zz1 ,2 ,3 |
; fninit |
mov eax,dword[esi] |
shl eax,2 |
lea eax,[eax*3] ;+point_normals_rotated] |
add eax,[points_normals_rot_ptr] |
if Ext < SSE |
; texture x=(rotated point normal -> x * 255)+255 |
fld dword[eax] ; x cooficient of normal vector |
fmul dword[correct_texf] |
fadd dword[correct_texf] |
fistp [temp1] ;word[ebp-2] |
; texture y=(rotated point normal -> y * 255)+255 |
fld dword[eax+4] ; y cooficient |
fmul dword[correct_texf] |
fadd dword[correct_texf] |
fistp [temp2] ;word[ebp-4] |
mov eax,[temp2] |
mov ebx,[temp1] |
else |
movlps xmm0,[eax] |
mulps xmm0,[correct_texf] |
addps xmm0,[correct_texf] |
cvtps2dq xmm0,xmm0 |
movd eax,xmm0 |
psrldq xmm0,4 |
movd ebx,xmm0 |
end if |
and ebx,0xfffffff ; some onjects need thid 'and' |
shl eax,TEX_SHIFT |
add eax,ebx |
lea eax,[eax*3] |
add eax,color_map |
mov eax,dword[eax] |
ror eax,16 ; eax -0xxxrrggbb -> 0xggbbxxrr |
xor ah,ah |
push ax ;r |
rol eax,8 ; eax-0xggbb00rr -> 0xbb00rrgg |
xor ah,ah |
push ax ;g |
shr eax,24 |
push ax ;b |
sub esi,4 |
dec cx |
jnz .aagain_grd_draw |
mov eax,dword[xx1] |
ror eax,16 |
mov ebx,dword[xx2] |
ror ebx,16 |
mov ecx,dword[xx3] |
ror ecx,16 |
mov edi,[screen_ptr] |
mov edx,texmap |
mov esi,[Zbuffer_ptr] |
call tex_plus_grd_triangle |
pop ebp |
mov esp,ebp |
pop ebp |
jmp .end_draw |
.two_tex: |
push [Zbuffer_ptr] |
push word[zz3] |
push word[zz2] |
push word[zz1] |
mov esi,[point_index3] ; tex map coords |
shl esi,2 |
add esi,tex_points |
push dword[esi] |
mov esi,[point_index2] |
shl esi,2 |
add esi,tex_points |
push dword[esi] |
mov esi,[point_index1] |
shl esi,2 |
add esi,tex_points |
push dword[esi] |
mov esi,point_index1 ; env coords |
sub esp,12 |
mov edi,esp |
mov ecx,3 |
@@: |
mov eax,dword[esi] |
lea eax,[eax*3] |
shl eax,2 |
add eax,[points_normals_rot_ptr] |
; texture x=(rotated point normal -> x * 255)+255 |
movlps xmm0,[eax] |
mulps xmm0,[correct_texf] |
addps xmm0,[correct_texf] |
cvtps2dq xmm0,xmm0 |
packssdw xmm0,xmm0 |
movd [edi],xmm0 |
; fld dword[eax] |
; fmul dword[correct_texf] |
; fadd dword[correct_texf] |
; fistp word[edi] |
; texture y=(rotated point normal -> y * 255)+255 |
; fld dword[eax+4] |
; fmul dword[correct_texf] |
; fadd dword[correct_texf] |
; fistp word[edi+2] |
and word[edi+2],0x7fff ; some objects need it |
add edi,4 |
add esi,4 |
loop @b |
mov eax,dword[xx1] |
ror eax,16 |
mov ebx,dword[xx2] |
ror ebx,16 |
mov ecx,dword[xx3] |
ror ecx,16 |
mov edi,[screen_ptr] |
mov esi,texmap |
mov edx,envmap |
call two_tex_triangle_z |
jmp .end_draw |
.bump_tex: |
mov esi,[point_index3] ; tex map coords |
shl esi,2 |
add esi,tex_points |
push dword[esi] |
mov esi,[point_index2] |
shl esi,2 |
add esi,tex_points |
push dword[esi] |
mov esi,[point_index1] |
shl esi,2 |
add esi,tex_points |
push dword[esi] |
push dword texmap |
push [Zbuffer_ptr] |
xor edi,edi |
push word[zz3] |
push word[zz2] |
push word[zz1] |
mov esi,point_index1 ; env coords |
sub esp,12 |
mov edi,esp |
mov ecx,3 |
@@: |
mov eax,dword[esi] |
lea eax,[eax*3] |
shl eax,2 |
add eax,[points_normals_rot_ptr] |
if Ext >= SSE |
; texture x=(rotated point normal -> x * 255)+255 |
movlps xmm0,[eax] |
mulps xmm0,[correct_texf] |
addps xmm0,[correct_texf] |
cvtps2dq xmm0,xmm0 |
packssdw xmm0,xmm0 |
movd [edi],xmm0 |
else |
fld dword[eax] |
fimul [correct_tex] |
fiadd [correct_tex] |
fistp word[edi] |
; texture y=(rotated point normal -> y * 255)+255 |
fld dword[eax+4] |
fimul [correct_tex] |
fiadd [correct_tex] |
fistp word[edi+2] |
end if |
add edi,4 |
add esi,4 |
loop @b |
; push dword 1 shl 16 + 1 ; emap coords |
; push dword 127 shl 16 + 1 |
; push dword 127 shl 16 + 127 |
mov esi,[point_index3] ; bump map coords |
shl esi,2 |
add esi,tex_points |
push dword[esi] |
mov esi,[point_index2] |
shl esi,2 |
add esi,tex_points |
push dword[esi] |
mov esi,[point_index1] |
shl esi,2 |
add esi,tex_points |
push dword[esi] |
; push dword 1 shl 16 + 127 |
; push dword 127 shl 16 + 127 |
; push dword 1 shl 16 + 1 ; bump coords |
mov eax,dword[xx1] |
ror eax,16 |
mov ebx,dword[xx2] |
ror ebx,16 |
mov ecx,dword[xx3] |
ror ecx,16 |
mov edi,[screen_ptr] |
mov esi,envmap |
mov edx,bumpmap |
call bump_tex_triangle_z |
jmp .end_draw |
.draw_smooth_line: |
mov esi,point_index3 |
mov ecx,3 |
.again_line_param: |
mov eax,dword[esi] |
shl eax,2 |
lea eax,[eax*3] |
add eax,[points_normals_rot_ptr] |
if Ext>=SSE2 |
movlps xmm0,[eax] |
mulps xmm0,[correct_texf] |
addps xmm0,[correct_texf] |
cvtps2dq xmm0,xmm0 |
movd eax,xmm0 |
psrldq xmm0,4 |
movd ebx,xmm0 |
else if |
; texture ;x=(rotated point normal -> x * 255)+255 |
fld dword[eax] ; x cooficient of normal vector |
fmul dword[correct_texf] |
fadd dword[correct_texf] |
fistp [temp1] ;word[esp-2] |
; texture y=(rotated point normal -> y * 255)+255 |
fld dword[eax+4] ; y cooficient |
fmul dword[correct_texf] |
fadd dword[correct_texf] |
fistp [temp2] ;word[esp-4] |
mov eax,[temp2] ;word[esp-4] |
mov ebx,[temp1] ;word[esp-2] |
end if |
and ebx,0xfffffff |
shl eax,TEX_SHIFT |
add eax,ebx |
lea eax,[eax*3+color_map] |
mov eax,dword[eax] |
lea ebx,[ecx-1] |
shl ebx,2 |
mov [ebx+col1],eax |
sub esi,4 |
dec ecx |
jnz .again_line_param |
mov edi,[screen_ptr] |
mov esi,[Zbuffer_ptr] |
mov eax,[col1] |
movzx bx,al |
push bx ; b |
movzx bx,ah |
push bx |
rol eax,16 |
xor ah,ah |
push ax |
push [zz1] |
push [yy1] |
push [xx1] |
mov eax,[col2] |
movzx bx,al |
push bx ; b |
movzx bx,ah |
push bx |
rol eax,16 |
xor ah,ah |
push ax |
push [zz2] |
push [yy2] |
push [xx2] |
call smooth_line |
@@: |
mov edi,[screen_ptr] |
mov esi,[Zbuffer_ptr] |
mov eax,[col1] |
movzx bx,al |
push bx ; b |
movzx bx,ah |
push bx |
rol eax,16 |
xor ah,ah |
push ax |
push [zz1] |
push [yy1] |
push [xx1] |
mov eax,[col3] |
movzx bx,al |
push bx ; b |
movzx bx,ah |
push bx |
rol eax,16 |
xor ah,ah |
push ax |
push [zz3] |
push [yy3] |
push [xx3] |
call smooth_line |
@@: |
mov edi,[screen_ptr] |
mov esi,[Zbuffer_ptr] |
mov eax,[col3] |
movzx bx,al |
push bx ; b |
movzx bx,ah |
push bx |
rol eax,16 |
xor ah,ah |
push ax |
push [zz3] |
push [yy3] |
push [xx3] |
mov eax,[col2] |
movzx bx,al |
push bx ; b |
movzx bx,ah |
push bx |
rol eax,16 |
xor ah,ah |
push ax |
push [zz2] |
push [yy2] |
push [xx2] |
call smooth_line |
jmp .end_draw |
@@: |
if Ext >= SSE3 |
.r_phg: |
movd xmm5,[size_y_var] |
punpcklwd xmm5,[the_zero] |
pshufd xmm5,xmm5,01110011b |
mov eax,[point_index1] |
mov ebx,[point_index2] |
mov ecx,[point_index3] |
imul eax,[i12] |
imul ebx,[i12] |
imul ecx,[i12] |
add eax,[points_normals_rot_ptr] |
add ebx,[points_normals_rot_ptr] |
add ecx,[points_normals_rot_ptr] |
movups xmm0,[eax] |
movups xmm1,[ebx] |
movups xmm2,[ecx] |
andps xmm0,[zero_hgst_dd] |
andps xmm1,[zero_hgst_dd] |
andps xmm2,[zero_hgst_dd] |
xorps xmm3,xmm3 |
mov eax,[point_index1] |
mov ebx,[point_index2] |
mov ecx,[point_index3] |
imul eax,[i12] |
imul ebx,[i12] |
imul ecx,[i12] |
add eax,[points_rotated_ptr] |
add ebx,[points_rotated_ptr] |
add ecx,[points_rotated_ptr] |
push dword[ecx+8] |
push dword[ebx+8] |
push dword[eax+8] |
movups xmm4,[esp] |
add esp,12 |
andps xmm4,[zero_hgst_dd] |
mov eax,dword[xx1] |
ror eax,16 |
mov ebx,dword[xx2] |
ror ebx,16 |
mov ecx,dword[xx3] |
ror ecx,16 |
mov edi,[screen_ptr] |
mov esi,[Zbuffer_ptr] |
call real_phong_tri_z |
jmp .end_draw |
.glass: |
movd xmm5,[size_y_var] |
punpcklwd xmm5,[the_zero] |
pshufd xmm5,xmm5,01110011b |
mov eax,[point_index1] |
mov ebx,[point_index2] |
mov ecx,[point_index3] |
imul eax,[i12] |
imul ebx,[i12] |
imul ecx,[i12] |
add eax,[points_normals_rot_ptr] |
add ebx,[points_normals_rot_ptr] |
add ecx,[points_normals_rot_ptr] |
movups xmm0,[eax] |
movups xmm1,[ebx] |
movups xmm2,[ecx] |
andps xmm0,[zero_hgst_dd] |
andps xmm1,[zero_hgst_dd] |
andps xmm2,[zero_hgst_dd] |
xorps xmm3,xmm3 |
mov eax,[point_index1] |
mov ebx,[point_index2] |
mov ecx,[point_index3] |
imul eax,[i12] |
imul ebx,[i12] |
imul ecx,[i12] |
add eax,[points_rotated_ptr] |
add ebx,[points_rotated_ptr] |
add ecx,[points_rotated_ptr] |
push dword[ecx+8] |
push dword[ebx+8] |
push dword[eax+8] |
movups xmm4,[esp] |
add esp,12 |
andps xmm4,[zero_hgst_dd] |
mov eax,dword[xx1] |
ror eax,16 |
mov ebx,dword[xx2] |
ror ebx,16 |
mov ecx,dword[xx3] |
ror ecx,16 |
mov edi,[screen_ptr] |
mov edx,[Zbuffer_ptr] |
mov esi,[Zbuffer_ptr] |
call glass_tri |
jmp .end_draw |
.glass_tex: |
movd xmm5,[size_y_var] |
punpcklwd xmm5,[the_zero] |
pshufd xmm5,xmm5,01110011b |
mov eax,[point_index1] |
mov ebx,[point_index2] |
mov ecx,[point_index3] |
imul eax,[i12] |
imul ebx,[i12] |
imul ecx,[i12] |
add eax,[points_normals_rot_ptr] |
add ebx,[points_normals_rot_ptr] |
add ecx,[points_normals_rot_ptr] |
movups xmm0,[eax] |
movups xmm1,[ebx] |
movups xmm2,[ecx] |
andps xmm0,[zero_hgst_dd] |
andps xmm1,[zero_hgst_dd] |
andps xmm2,[zero_hgst_dd] |
xorps xmm3,xmm3 |
mov eax,[point_index1] |
mov ebx,[point_index2] |
mov ecx,[point_index3] |
imul eax,[i12] |
imul ebx,[i12] |
imul ecx,[i12] |
add eax,[points_rotated_ptr] |
add ebx,[points_rotated_ptr] |
add ecx,[points_rotated_ptr] |
push dword[ecx+8] |
push dword[ebx+8] |
push dword[eax+8] |
movups xmm4,[esp] |
add esp,12 |
andps xmm4,[zero_hgst_dd] |
mov esi,[point_index3] ; tex map coords |
shl esi,2 |
add esi,tex_points |
push dword[esi] |
mov esi,[point_index2] |
shl esi,2 |
add esi,tex_points |
push dword[esi] |
mov esi,[point_index1] |
shl esi,2 |
add esi,tex_points |
push dword[esi] |
movups xmm6,[esp] |
add esp,12 |
; pshuflw xmm6,xmm6,10110001b |
; pshufhw xmm6,xmm6,10110001b |
movzx eax,word[size_x_var] |
andps xmm6,[zero_hgst_dd] |
movd xmm7,eax |
pslldq xmm7,12 |
por xmm6,xmm7 |
mov eax,dword[xx1] |
ror eax,16 |
mov ebx,dword[xx2] |
ror ebx,16 |
mov ecx,dword[xx3] |
ror ecx,16 |
mov edx,texmap |
mov edi,[screen_ptr] |
mov esi,[Zbuffer_ptr] |
call glass_tex_tri |
jmp .end_draw |
end if |
.end_draw: |
pop esi |
add esi,12 |
pop ecx |
sub ecx,1 |
jnz .again_dts |
ret |
draw_handlers: |
push ebp |
mov ebp,esp |
.counter equ ebp-16 |
.xres3m18 equ ebp-8 |
.xres2m12 equ ebp-12 |
; init counter |
sub esp,12 |
push dword 0 |
movzx eax,word[size_x_var] |
cmp [dr_flag],12 |
jge @f |
lea ebx,[eax*3] |
sub ebx,18 |
add eax,eax |
sub eax,12 |
mov [.xres3m18],ebx |
mov [.xres2m12],eax |
jmp .f |
@@: |
lea ebx,[eax*4] |
sub ebx,4*6 |
add eax,eax |
sub eax,3*4 |
mov [.xres3m18],ebx |
mov [.xres2m12],eax |
.f: |
mov esi,[points_translated_ptr] |
.loop: |
push esi |
; DO culling AT FIRST |
cmp [culling_flag],1 ; (if culling_flag = 1) |
jne .no_culling |
mov edi,[.counter] ; ********************************* |
lea edi,[edi*3] |
shl edi,2 |
add edi,[points_normals_rot_ptr] |
mov eax,[edi+8] ; check sign of z coof |
shr eax,31 |
cmp eax,1 |
jnz .skip |
.no_culling: |
mov eax,[esi] |
movzx ebx,ax ; ebx - x |
shr eax,16 ; eax - y |
cmp eax,4 ; check if markers not exceedes screen |
jle .skip |
cmp ebx,4 |
jle .skip |
movzx edx,word[size_x_var] |
sub edx,4 |
movzx ecx,word[size_y_var] |
sub ecx,4 |
cmp ebx,edx |
jge .skip |
cmp eax,ecx |
jge .skip |
movzx edx,word[size_x_var] |
; sub ebx,3 |
; sub eax,3 |
imul eax,edx |
add eax,ebx |
push eax |
lea edi,[eax*3] |
cmp [dr_flag],12 |
jl @f |
add edi,[esp] |
@@: |
add esp,4 |
lea eax,[eax*2] |
; draw bar 6x6 |
add edi,[screen_ptr] |
add eax,dword[vertices_index_ptr] |
mov edx,[.counter] |
mov ecx,6 |
.oop: |
push ecx |
mov ecx,6 |
.do: |
mov word[edi],0x0000 ;ax |
mov byte[edi+2],0xff ;al |
mov word[eax],dx |
add eax,2 |
cmp [dr_flag],12 |
jl @f |
add edi,4 |
loop .do |
jmp .ad |
@@: |
add edi,3 |
loop .do |
.ad: |
add edi,[.xres3m18] |
add eax,[.xres2m12] |
pop ecx |
loop .oop |
.skip: |
pop esi |
add esi,6 |
inc dword[.counter] |
mov ecx,[.counter] |
cmp ecx,[points_count_var] |
jng .loop |
mov esp,ebp |
pop ebp |
ret |
fill_Z_buffer: |
mov eax,0x70000000 |
cmp [dr_flag],12 |
jne @f |
mov eax,60000.1 |
@@: |
mov edi,[Zbuffer_ptr] |
movzx ecx,word[size_x_var] |
movzx ebx,word[size_y_var] |
imul ecx,ebx |
if Ext>=SSE2 |
movd xmm0,eax |
shufps xmm0,xmm0,0 |
push ecx |
mov ecx,edi |
and edi,0xffffff00 |
and ecx,0x000000ff |
mov edx,ecx |
rep stosd |
pop ecx |
sub ecx,edx |
@@: |
movaps [edi],xmm0 |
movaps [edi+16],xmm0 |
movaps [edi+32],xmm0 |
movaps [edi+48],xmm0 |
add edi,64 |
sub ecx,16 |
jnc @b |
else |
rep stosd |
end if |
ret |
read_tp_variables: ; read [triangles_count_var] and [points_count_var] |
; and allocate memory |
xor ebx,ebx |
xor ebp,ebp |
mov [points_count_var],ebx |
mov [triangles_count_var],ebx |
if USE_LFN = 0 |
mov esi,SourceFile |
else |
mov esi,[fptr] |
end if |
cmp [esi],word 4D4Dh |
je @f ;Must be legal .3DS file |
xor eax,eax |
ret |
@@: |
mov eax,dword[esi+2] |
cmp eax,[fsize] ;This must tell the length |
je @f |
xor eax,eax |
ret |
@@: |
add eax,esi |
mov [EndFile],eax ; |
add esi,6 |
@@: |
cmp [esi],word 3D3Dh |
je @f |
add esi,[esi+2] |
jmp @b |
@@: |
add esi,6 |
.find4k: |
cmp [esi],word 4000h |
je @f |
add esi,[esi+2] |
cmp esi,[EndFile] |
jc .find4k |
jmp .exit |
@@: |
add esi,6 |
@@: |
cmp [esi],byte 0 |
je @f |
inc esi |
jmp @b |
@@: |
inc esi |
@@: |
cmp [esi],word 4100h |
je @f |
add esi,[esi+2] |
jmp @b |
@@: |
add esi,6 |
@@: |
cmp [esi],word 4110h |
je @f |
add esi,[esi+2] |
jmp @b |
@@: |
movzx ecx,word[esi+6] |
add [points_count_var],ecx |
mov edx,ecx |
add esi,8 |
@@: |
add ebx,6 |
add esi,12 |
; dec ecx |
loop @b |
@@: |
@@: |
cmp [esi],word 4120h |
je @f |
add esi,[esi+2] |
jmp @b |
@@: |
movzx ecx,word[esi+6] |
add [triangles_count_var],ecx |
add esi,8 |
@@: |
add esi,8 |
dec ecx |
jnz @b |
; xor ecx,ecx |
add ebp,edx |
jmp .find4k |
mov eax,-1 ;<---mark if OK |
.exit: |
ret |
read_from_file: |
fninit |
mov edi,[triangles_ptr] |
xor ebx,ebx |
xor ebp,ebp |
mov [points_count_var],0 |
mov [triangles_count_var],0 |
if USE_LFN = 0 |
mov esi,SourceFile |
else |
mov esi,[fptr] |
end if |
cmp [esi],word 4D4Dh |
jne .exit ;Must be legal .3DS file |
; cmp dword[esi+2],EndFile-SourceFile |
; jne .exit ;This must tell the length |
mov eax,dword[esi+2] |
; cmp eax,[fsize] |
; jne .exit |
add eax,esi |
mov [EndFile],eax ; |
add esi,6 |
@@: |
cmp [esi],word 3D3Dh |
je @f |
add esi,[esi+2] |
jmp @b |
@@: |
add esi,6 |
.find4k: |
cmp [esi],word 4000h |
je @f |
add esi,[esi+2] |
cmp esi,[EndFile] |
jc .find4k |
jmp .exit |
@@: |
add esi,6 |
@@: |
cmp [esi],byte 0 |
je @f |
inc esi |
jmp @b |
@@: |
inc esi |
@@: |
cmp [esi],word 4100h |
je @f |
add esi,[esi+2] |
jmp @b |
@@: |
add esi,6 |
@@: |
cmp [esi],word 4110h |
je @f |
add esi,[esi+2] |
jmp @b |
@@: |
movzx ecx,word[esi+6] |
add [points_count_var],ecx |
mov edx,ecx |
add esi,8 |
@@: |
push edi |
mov edi,[points_ptr] |
push dword[esi+0] |
pop dword[edi+ebx*2+0] |
push dword[esi+4] |
pop dword[edi+ebx*2+4] |
push dword[esi+8] |
pop dword[edi+ebx*2+8] |
pop edi |
add ebx,6 |
add esi,12 |
dec ecx |
jnz @b |
@@: |
; mov dword[points+ebx],-1 |
push edi |
mov edi,[points_ptr] |
mov dword[edi+ebx*2],-1 ; end mark (not always in use) |
pop edi |
@@: |
cmp [esi],word 4120h |
je @f |
add esi,[esi+2] |
jmp @b |
@@: |
movzx ecx,word[esi+6] |
add [triangles_count_var],ecx |
add esi,8 |
;mov edi,triangles |
@@: |
movzx eax,word[esi] |
add eax,ebp |
stosd |
movzx eax,word[esi+2] |
add eax,ebp |
stosd |
movzx eax,word[esi+4] |
add eax,ebp |
stosd |
; add dword[edi-12],ebp |
; add dword[edi-8],ebp |
; add dword[edi-4],ebp |
add esi,8 |
dec ecx |
jnz @b |
add ebp,edx |
jmp .find4k |
mov eax,-1 ;<---mark if OK |
.exit: |
mov dword[edi],-1 |
ret |
alloc_mem_for_tp: |
mov eax, 68 |
cmp [re_alloc_flag],1 |
jz @f |
mov ebx, 12 |
jmp .alloc |
@@: |
mov ebx,20 |
.alloc: |
mov ecx,[triangles_count_var] |
add ecx,20 |
lea ecx, [ecx*3] |
shl ecx,2 |
mov edx,[triangles_ptr] |
int 0x40 ; -> allocate memory to triangles |
mov [triangles_ptr], eax ; -> eax = pointer to allocated mem |
; ststic memory |
mov eax, 68 |
mov ecx, [triangles_count_var] |
lea ecx, [3+ecx*3] |
shl ecx, 2 |
mov edx,[triangles_normals_ptr] |
int 0x40 ; -> allocate memory for triangles normals |
mov [triangles_normals_ptr], eax ; -> eax = pointer to allocated mem |
mov eax, 68 |
mov ecx, [points_count_var] |
lea ecx,[3+ecx*3] |
shl ecx, 2 |
mov edx,[points_normals_ptr] |
int 0x40 |
mov [points_normals_ptr], eax |
mov eax, 68 |
; mov ebx, 12 |
mov ecx, [points_count_var] |
lea ecx,[3+ecx*3] |
shl ecx, 2 |
mov edx,[points_normals_rot_ptr] |
int 0x40 |
mov [points_normals_rot_ptr], eax |
mov eax, 68 |
mov edx,[points_ptr] |
int 0x40 |
mov [points_ptr], eax |
mov eax, 68 |
mov edx,[points_rotated_ptr] |
int 0x40 |
mov [points_rotated_ptr], eax |
mov eax, 68 |
mov ecx, [points_count_var] |
inc ecx |
shl ecx, 3 |
mov edx,[points_translated_ptr] |
int 0x40 |
mov [points_translated_ptr], eax |
ret |
read_from_disk: |
mov eax, 68 |
mov ebx, 11 |
int 0x40 ; -> create heap |
;load kpacked files by Leency |
mov eax,68 |
mov ebx,27 |
mov ecx,file_name |
int 0x40 |
mov [fsize],edx |
mov [file_info+16],eax |
test eax,eax |
jnz .open_opened_well |
mov eax,6 ;otherwise => failed |
jmp @f |
.open_opened_well: |
xor eax,eax |
@@: |
; eax = 0 -> ok file loaded |
ret |
read_param: |
mov esi,I_Param |
cmp dword[esi],0 |
je .end |
cmp byte[esi],'/' |
je .copy |
mov edi,esi |
mov ecx,25 ; 25 - would be enought |
repe scasb |
jne .end |
dec edi |
mov esi,edi |
.copy: |
mov edi,file_name |
mov ecx,50 |
rep movsd |
.end: |
ret |
buttons: ; draw some buttons (all but navigation and close ) |
mov edi,menu |
.again: |
mov eax,8 ; function 8 : define and draw button |
mov bx,[size_x_var] |
shl ebx,16 |
add ebx,(10)*65536+62 ; [x start] *65536 + [x size] |
movzx ecx,byte[edi] ; button id = position+2 |
sub cl,2 |
lea ecx,[ecx*5] |
lea ecx,[ecx*3] |
add ecx,25 |
shl ecx,16 |
add ecx,12 |
movzx edx,byte[edi] ; button id |
mov esi,0x6688dd ; button color RRGGBB |
int 0x40 |
; BUTTON LABEL |
mov eax,4 ; function 4 : write text to window |
movzx ebx,byte[edi] |
sub bl,2 ; button id, according to position |
lea ebx,[ebx*3] |
lea ebx,[ebx*5] |
mov cx,[size_x_var] |
shl ecx,16 |
add ebx,ecx |
add ebx,(12)*65536+28 ; [x start] *65536 + [y start] |
mov ecx,0x00ddeeff ; font 1 & color ( 0xF0RRGGBB ) |
lea edx,[edi+1] ; pointer to text beginning |
mov esi,10 ; text length |
int 0x40 |
cmp byte[edi+11],255 ; if max_flag=255 |
je @f ; skip |
; flag description |
; mov eax,4 ; function 4 : write text to window |
; movzx ebx,byte[edi] |
; sub bl,2 |
; lea ebx,[ebx*3] |
; lea ebx,[ebx*5] |
; add ebx,(SIZE_X+12+70)*65536+28 ; [x start] *65536 + [y start] |
add ebx,70*65536 |
; mov ecx,0x00ddeeff ; font 1 & color ( 0xF0RRGGBB ) |
movzx edx,byte[edi+12] ; current flag |
shl edx,2 ; * 4 = text length |
add edx,dword[edi+13] ; pointer to text beginning |
mov esi,4 ; text length |
int 0x40 |
@@: |
add edi,17 |
cmp byte[edi],-1 |
jnz .again |
ret |
; ********************************************* |
; ******* WINDOW DEFINITIONS AND DRAW ******** |
; ********************************************* |
draw_window: |
mov eax,12 ; function 12:tell os about windowdraw |
mov ebx,1 ; 1, start of draw |
int 0x40 |
; DRAW WINDOW |
mov eax,0 ; function 0 : define and draw window |
mov bx,[x_start] |
shl ebx,16 |
mov cx,[y_start] |
shl ecx,16 |
;ebx - [x start] *65536 + [x size] |
;ecx - [y start] *65536 + [y size] |
mov bx,[size_x_var] |
add bx,115 |
mov cx,[size_y_var] |
add cx,30 |
; @@: |
mov edx,0x13000000 ; color of work area RRGGBB,8->color gl |
mov edi,labelt ; WINDOW LABEL |
int 0x40 |
call buttons ; more buttons |
.Y_ADD equ 2 ;-> offset of 'add vector' buttons |
; ADD VECTOR LABEL ; add vector buttons - 30 ++ |
mov eax,4 ; function 4 : write text to window |
movzx ebx,word[size_x_var] |
shl ebx,16 |
add ebx,(12)*65536+(168+15*(13+.Y_ADD)) ; [x start] *65536 + [y start] |
mov ecx,0x00ddeeff ; font 1 & color ( 0xF0RRGGBB ) |
mov edx,labelvector ; pointer to text beginning |
mov esi,labelvectorend-labelvector ; text length |
; cmp [move_flag],2 |
; jne @f |
; add edx,navigation_size |
; @@: |
int 0x40 |
; VECTOR Y- BUTTON |
mov eax,8 ; function 8 : define and draw button |
movzx ebx,word[size_x_var] |
shl ebx,16 |
add ebx,30*65536+20 ; [x start] *65536 + [x size] |
mov ecx,(165+15*(14+.Y_ADD))*65536+12 ; [y start] *65536 + [y size] |
mov edx,30 ; button id |
mov esi,0x6688dd ; button color RRGGBB |
int 0x40 |
;VECTOR Y- LABEL |
mov eax,4 ; function 4 : write text to window |
movzx ebx,word[size_x_var] |
shl ebx,16 |
add ebx,(32)*65536+(168+15*(14+.Y_ADD)) ; [x start] *65536 + [y start] |
mov ecx,0x00ddeeff ; font 1 & color ( 0xF0RRGGBB ) |
mov edx,labelyminus ; pointer to text beginning |
mov esi,labelyminusend-labelyminus ; text length |
cmp [move_flag],2 |
; jne @f |
; add edx,navigation_size |
; @@: |
int 0x40 |
; VECTOR Z+ BUTTON |
mov eax,8 ; function 8 : define and draw button |
movzx ebx,word[size_x_var] |
shl ebx,16 |
add ebx,(51)*65536+21 ; [x start] *65536 + [x size] |
mov ecx,(165+15*(14+.Y_ADD))*65536+12 ; [y start] *65536 + [y size] |
mov edx,31 ; button id |
mov esi,0x6688dd ; button color RRGGBB |
int 0x40 |
;VECTOR Z+ LABEL |
mov eax,4 ; function 4 : write text to window |
movzx ebx,word[size_x_var] |
shl ebx,16 |
add ebx,(53)*65536+(168+15*(14+.Y_ADD)) ; [x start] *65536 + [y start] |
mov ecx,0x00ddeeff ; font 1 & color ( 0xF0RRGGBB ) |
mov edx,labelzplus ; pointer to text beginning |
mov esi,labelzplusend-labelzplus ; text length |
; cmp [move_flag],2 |
; jne @f |
; add edx,navigation_size |
; @@: |
int 0x40 |
; VECTOR x- BUTTON |
mov eax,8 ; function 8 : define and draw button |
movzx ebx,word[size_x_var] |
shl ebx,16 |
add ebx,(10)*65536+21 ; [x start] *65536 + [x size] |
mov ecx,(165+15*(15+.Y_ADD))*65536+12 ; [y start] *65536 + [y size] |
mov edx,32 ; button id |
mov esi,0x6688dd ; button color RRGGBB |
int 0x40 |
;VECTOR x- LABEL |
mov eax,4 ; function 4 : write text to window |
movzx ebx,word[size_x_var] |
shl ebx,16 |
add ebx,(12)*65536+(168+15*(15+.Y_ADD)) ; [x start] *65536 + [y start] |
mov ecx,0x00ddeeff ; font 1 & color ( 0xF0RRGGBB ) |
mov edx,labelxminus ; pointer to text beginning |
mov esi,labelxminusend-labelxminus ; text length |
; cmp [move_flag],2 |
; jne @f |
; add edx,navigation_size |
; @@: |
int 0x40 |
; VECTOR x+ BUTTON |
mov eax,8 ; function 8 : define and draw button |
movzx ebx,word[size_x_var] |
shl ebx,16 |
add ebx,(51)*65536+21 ; [x start] *65536 + [x size] |
mov ecx,(165+15*(15+.Y_ADD))*65536+12 ; [y start] *65536 + [y size] |
mov edx,33 ; button id |
mov esi,0x6688dd ; button color RRGGBB |
int 0x40 |
;VECTOR x+ LABEL |
mov eax,4 ; function 4 : write text to window |
movzx ebx,word[size_x_var] |
shl ebx,16 |
add ebx,(53)*65536+(168+15*(15+.Y_ADD)) ; [x start] *65536 + [y start] |
mov ecx,0x00ddeeff ; font 1 & color ( 0xF0RRGGBB ) |
mov edx,labelxplus ; pointer to text beginning |
mov esi,labelxplusend-labelxplus ; text length |
; cmp [move_flag],2 |
; jne @f |
; add edx,navigation_size |
; @@: |
int 0x40 |
; VECTOR z- BUTTON |
mov eax,8 ; function 8 : define and draw button |
movzx ebx,word[size_x_var] |
shl ebx,16 |
add ebx,(10)*65536+62-41 ; [x start] *65536 + [x size] |
mov ecx,(25+140+15*(16+.Y_ADD))*65536+12 ; [y start] *65536 + [y size] |
mov edx,34 ; button id |
mov esi,0x6688dd ; button color RRGGBB |
int 0x40 |
;VECTOR z- LABEL |
mov eax,4 ; function 4 : write text to window |
movzx ebx,word[size_x_var] |
shl ebx,16 |
add ebx,(12)*65536+(168+15*(16+.Y_ADD)) ; [x start] *65536 + [y start] |
mov ecx,0x00ddeeff ; font 1 & color ( 0xF0RRGGBB ) |
mov edx,labelzminus ; pointer to text beginning |
mov esi,labelzminusend-labelzminus ; text length |
; cmp [move_flag],2 |
; jne @f |
; add edx,navigation_size |
; @@: |
int 0x40 |
;VECTOR Y+ BUTTON |
mov eax,8 ; function 8 : define and draw button |
movzx ebx,word[size_x_var] |
shl ebx,16 |
add ebx,(10+20)*65536+20 ; [x start] *65536 + [x size] |
mov ecx,(165+15*(16+.Y_ADD))*65536+12 ; [y start] *65536 + [y size] |
mov edx,35 ; button id |
mov esi,0x6688dd ; button color RRGGBB |
int 0x40 |
;VECTOR Y+ LABEL |
mov eax,4 ; function 4 : write text to window |
movzx ebx,word[size_x_var] |
shl ebx,16 |
add ebx,(32)*65536+(168+15*(16+.Y_ADD)) ; [x start] *65536 + [y start] |
mov ecx,0x00ddeeff ; font 1 & color ( 0xF0RRGGBB ) |
mov edx,labelyplus ; pointer to text beginning |
mov esi,labelyplusend-labelyplus ; text length |
; cmp [move_flag],2 |
; jne @f |
; add edx,navigation_size |
; @@: |
int 0x40 |
mov eax,12 ; function 12:tell os about windowdraw |
mov ebx,2 ; 2, end of draw |
int 0x40 |
ret |
; DATA AREA ************************************ |
include 'data.inc' |
align 16 |
MEM_END: |
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |