mirror of
https://github.com/KolibriOS/kolibrios.git
synced 2024-12-23 23:26:49 +03:00
update voxel tinygl viewer, use mouse to rotate model
git-svn-id: svn://kolibrios.org@5949 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
bee21cb588
commit
2edaae3ebe
79
programs/media/voxel_editor/docs/vox_tgl.htm
Normal file
79
programs/media/voxel_editor/docs/vox_tgl.htm
Normal file
@ -0,0 +1,79 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Оглавление</title>
|
||||
<meta http-equiv="content-type" content="text/html; charset=WINDOWS-1251">
|
||||
<style>
|
||||
body
|
||||
{
|
||||
font-size: 15px;
|
||||
font-family: "Bookman Old Style";
|
||||
color: black;
|
||||
text-align: justify;
|
||||
}
|
||||
h1 { color: green; font-size: 23px; }
|
||||
h2 { color: green; font-size: 21px; }
|
||||
h3 { color: green; font-size: 19px; }
|
||||
h4 { color: #803f00; font-size: 17px; }
|
||||
i { color: #0099cc; }
|
||||
b { color: #0099cc; }
|
||||
p {
|
||||
text-indent: 1em;
|
||||
margin-top: 3px;
|
||||
margin-bottom: 2px;
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
}
|
||||
ol, ul, dl{
|
||||
margin-top: 3px;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
pre
|
||||
{
|
||||
padding: 2px;
|
||||
padding-left: 20px;
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
font-family: "Courier New";
|
||||
font-size: 15px;
|
||||
color: #004000;
|
||||
background-color: #ffd0ff;
|
||||
}
|
||||
table
|
||||
{
|
||||
font-size: 15px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>Вспомогательная программа для редактора воксельной графики версия от 07.12.2015</h1>
|
||||
<p>Оглавление</p>
|
||||
<ul>
|
||||
<li><a href="#about">О программе</a></li>
|
||||
<li><a href="#algor">Работа с программой</a>
|
||||
</li>
|
||||
<li>Автор</li>
|
||||
</ul>
|
||||
|
||||
<h2><a name="about">О программе</a></h2>
|
||||
<p>Программа для просмотра 3-х мерной воксельной графики с использованием библиотеки tinygl.</p>
|
||||
<p><img src="vox_tgl/about.png"></p>
|
||||
<p>Внешний вид программы.</p>
|
||||
<p>Для просмотра 3-х мерного объекта необходимо открыть воксельное изображение из файла с расширением <b>*.vox</b>. Эти изображения можно создавать в программе воксельного редактора, но он позволяет рассматривать созданную модель только под фиксированными углами. С помощью данной утилиты можно видеть воксельный объект под разными углами обзора.</p>
|
||||
|
||||
<h2><a name="algor">Работа с программой</a></h2>
|
||||
<p>В окне программы есть панель инструментов, окно для просмотра объекта воксельной графики и окно для показа 8-ми уменьшенных кадров объекта под фиксированными углами. Для просмотра объекта в главном окне под разными углами можно нажимать курсоры на клавиатуре или же нажимать и водить курсором мыши по окну с 3-х мерной графикой. На панели инструментов можно менять режимы обзора модели, смотреть статистику по модели и обновлять окно с миниатюрами.</p>
|
||||
|
||||
<h3>Описание панели инструментов</h3>
|
||||
<p><img src="tb_new.png"> - создание нового файла.</p>
|
||||
<p><img src="tb_open.png"> - открытие файлов.</p>
|
||||
<p><img src="tb_save.png"> - сохранение файлов. Данная программа не редактирует саму модель, единственное что она может менять это уровень детализации модели который будет использоваться при открытии модели. Потому эта команда редко используется.</p>
|
||||
|
||||
<h2>Автор</h2>
|
||||
<p>Игорь А. (IgorA) - разработка программы.</p>
|
||||
<p>Лицензия свободная.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
BIN
programs/media/voxel_editor/docs/vox_tgl/about.png
Normal file
BIN
programs/media/voxel_editor/docs/vox_tgl/about.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 59 KiB |
@ -1,13 +1,7 @@
|
||||
use32
|
||||
org 0x0
|
||||
db 'MENUET01' ;¨¤¥â¨ä. ¨á¯®«ï¥¬®£® ä ©« ¢á¥£¤ 8 ¡ ©â
|
||||
dd 0x1
|
||||
dd start
|
||||
dd i_end ;à §¬¥à ¯à¨«®¦¥¨ï
|
||||
dd mem
|
||||
dd stacktop
|
||||
dd 0
|
||||
dd sys_path
|
||||
dd 1, start, i_end, mem, stacktop, 0, sys_path
|
||||
|
||||
include '../../../../programs/macros.inc'
|
||||
include '../../../../programs/proc32.inc'
|
||||
@ -18,7 +12,7 @@ include 'vox_3d.inc'
|
||||
include '../trunk/str.inc'
|
||||
|
||||
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
|
||||
caption db 'Voxel viewer 17.02.15',0 ;¯®¤¯¨áì ®ª
|
||||
caption db 'Voxel viewer 07.12.15',0 ;¯®¤¯¨áì ®ª
|
||||
|
||||
struct FileInfoBlock
|
||||
Function dd ?
|
||||
@ -30,7 +24,11 @@ struct FileInfoBlock
|
||||
FileName dd ?
|
||||
ends
|
||||
|
||||
run_file_70 FileInfoBlock
|
||||
3d_wnd_l equ 5 ;®âáâ㯠¤«ï tinygl ¡ãä¥à á«¥¢
|
||||
3d_wnd_t equ 30 ;®âáâ㯠¤«ï tinygl ¡ãä¥à ᢥàåã
|
||||
3d_wnd_w equ 512
|
||||
3d_wnd_h equ 512
|
||||
|
||||
image_data dd 0 ;㪠§ â¥«ì ¢à¥¬¥ãî ¯ ¬ïâì. ¤«ï 㦥 ¯à¥®¡à §®¢ ¨ï ¨§®¡à ¦¥¨ï
|
||||
|
||||
IMAGE_TOOLBAR_ICON_SIZE equ 16*16*3
|
||||
@ -48,24 +46,22 @@ macro load_image_file path,buf,size { ;
|
||||
db 0
|
||||
@@:
|
||||
;32 - áâ ¤ àâë© ¤à¥á ¯® ª®â®à®¬ã ¤®«¦¥ ¡ëâì ¡ãä¥à á á¨áâ¥¬ë¬ ¯ã⥬
|
||||
copy_path .path_str,[32],file_name,0x0
|
||||
copy_path .path_str,[32],file_name,0
|
||||
else
|
||||
copy_path path,[32],file_name,0x0 ;ä®à¬¨à㥬 ¯®«ë© ¯ãâì ª ä ©«ã ¨§®¡à ¦¥¨ï, ¯®¤à §ã¬¥¢ ¥¬ çâ® ® ¢ ®¤®© ¯ ¯ª¥ á ¯à®£à ¬¬®©
|
||||
copy_path path,[32],file_name,0 ;ä®à¬¨à㥬 ¯®«ë© ¯ãâì ª ä ©«ã ¨§®¡à ¦¥¨ï, ¯®¤à §ã¬¥¢ ¥¬ çâ® ® ¢ ®¤®© ¯ ¯ª¥ á ¯à®£à ¬¬®©
|
||||
end if
|
||||
|
||||
stdcall mem.Alloc, dword size ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¨§®¡à ¦¥¨ï
|
||||
mov [buf],eax
|
||||
|
||||
mov eax,70 ;70-ï äãªæ¨ï à ¡®â á ä ©« ¬¨
|
||||
mov [run_file_70.Function], 0
|
||||
mov [run_file_70.Position], 0
|
||||
mov [run_file_70.Flags], 0
|
||||
mov [run_file_70.Count], dword size
|
||||
m2m [run_file_70.Buffer], [buf]
|
||||
mov [run_file_70.Buffer], eax
|
||||
mov byte[run_file_70+20], 0
|
||||
mov [run_file_70.FileName], file_name
|
||||
mov ebx,run_file_70
|
||||
int 0x40 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥¨ï
|
||||
mcall 70,run_file_70 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥¨ï
|
||||
cmp ebx,0xffffffff
|
||||
je @f
|
||||
;®¯à¥¤¥«ï¥¬ ¢¨¤ ¨§®¡à ¦¥¨ï ¨ ¯¥à¥¢®¤¨¬ ¥£® ¢® ¢à¥¬¥ë© ¡ãä¥à image_data
|
||||
@ -103,7 +99,7 @@ start:
|
||||
mcall 26,9
|
||||
mov [last_time],eax
|
||||
|
||||
stdcall [kosglMakeCurrent], 5,30,512,512,ctx1
|
||||
stdcall [kosglMakeCurrent], 3d_wnd_l,3d_wnd_t,3d_wnd_w,3d_wnd_h,ctx1
|
||||
stdcall [glEnable], GL_DEPTH_TEST
|
||||
stdcall [glEnable], GL_NORMALIZE ;¤¥« ¬ ®à¬ «¨ ®¤¨ ª®¢®© ¢¥«¨ç¨ë ¢® ¨§¡¥¦ ¨¥ àâ¥ä ªâ®¢
|
||||
stdcall [glClearColor], 0.0,0.0,0.0,0.0
|
||||
@ -139,6 +135,10 @@ still:
|
||||
jz key
|
||||
cmp al,3
|
||||
jz button
|
||||
cmp al,6
|
||||
jne @f
|
||||
call mouse
|
||||
@@:
|
||||
|
||||
jmp still
|
||||
|
||||
@ -316,6 +316,88 @@ key:
|
||||
jmp still
|
||||
|
||||
|
||||
align 4
|
||||
mouse:
|
||||
push eax ebx
|
||||
mcall 37,3
|
||||
bt eax,0
|
||||
jnc .end_m
|
||||
;mouse l. but. move
|
||||
cmp dword[mouse_drag],1
|
||||
jne .end_m
|
||||
mcall 37,1 ;get mouse coords
|
||||
mov ebx,eax
|
||||
shr ebx,16 ;mouse.x
|
||||
cmp ebx,3d_wnd_l
|
||||
jg @f
|
||||
mov ebx,3d_wnd_l
|
||||
@@:
|
||||
sub ebx,3d_wnd_l
|
||||
cmp ebx,3d_wnd_w
|
||||
jle @f
|
||||
mov ebx,3d_wnd_w
|
||||
@@:
|
||||
and eax,0xffff ;mouse.y
|
||||
cmp eax,3d_wnd_t
|
||||
jg @f
|
||||
mov eax,3d_wnd_t
|
||||
@@:
|
||||
sub eax,3d_wnd_t
|
||||
cmp eax,3d_wnd_h
|
||||
jle @f
|
||||
mov eax,3d_wnd_h
|
||||
@@:
|
||||
finit
|
||||
fild dword[mouse_y]
|
||||
mov [mouse_y],eax
|
||||
fisub dword[mouse_y]
|
||||
fdiv dword[angle_dxm] ;¥á«¨ ªãàá®à ¤¢¨¦¥âáï ¯® ®á¨ y (¢¢¥àå ¨«¨ ¢¨§) â® ¯®¢®à®â ¤¥« ¥¬ ¢®ªà㣠®á¨ x
|
||||
fadd dword[angle_x]
|
||||
fstp dword[angle_x]
|
||||
|
||||
fild dword[mouse_x]
|
||||
mov [mouse_x],ebx
|
||||
fisub dword[mouse_x]
|
||||
fdiv dword[angle_dym] ;¥á«¨ ªãàá®à ¤¢¨¦¥âáï ¯® ®á¨ x (¢¢¥àå ¨«¨ ¢¨§) â® ¯®¢®à®â ¤¥« ¥¬ ¢®ªà㣠®á¨ y
|
||||
fadd dword[angle_y]
|
||||
fstp dword[angle_y]
|
||||
|
||||
call draw_3d
|
||||
stdcall [kosglSwapBuffers]
|
||||
jmp .end_d
|
||||
.end_m:
|
||||
bt eax,16
|
||||
jnc @f
|
||||
;mouse l. but. up
|
||||
mov dword[mouse_drag],0
|
||||
jmp .end_d
|
||||
@@:
|
||||
bt eax,8
|
||||
jnc .end_d
|
||||
;mouse l. but. press
|
||||
mcall 37,1 ;get mouse coords
|
||||
mov ebx,eax
|
||||
shr ebx,16 ;mouse.x
|
||||
cmp ebx,3d_wnd_l
|
||||
jl .end_d
|
||||
sub ebx,3d_wnd_l
|
||||
cmp ebx,3d_wnd_w
|
||||
jg .end_d
|
||||
and eax,0xffff ;mouse.y
|
||||
cmp eax,3d_wnd_t
|
||||
jl .end_d
|
||||
sub eax,3d_wnd_t
|
||||
cmp eax,3d_wnd_h
|
||||
jg .end_d
|
||||
mov dword[mouse_drag],1
|
||||
mov dword[mouse_x],ebx
|
||||
mov dword[mouse_y],eax
|
||||
.end_d:
|
||||
|
||||
;stdcall [kmainmenu_dispatch_cursorevent], [main_menu]
|
||||
pop ebx eax
|
||||
ret
|
||||
|
||||
align 4
|
||||
button:
|
||||
mcall 17
|
||||
@ -668,11 +750,11 @@ align 4
|
||||
mov edi,txt_stat_m1.v
|
||||
stdcall convert_int_to_str,20
|
||||
|
||||
;mov eax,ebx
|
||||
;mov edi,txt_stat_m2.v
|
||||
;stdcall convert_int_to_str,20
|
||||
mov eax,ebx
|
||||
mov edi,txt_stat_m2.v
|
||||
stdcall convert_int_to_str,20
|
||||
|
||||
;stdcall str_n_cat,txt_stat_m1.v,txt_stat_m2,50
|
||||
stdcall str_n_cat,txt_stat_m1.v,txt_stat_m2,50
|
||||
notify_window_run txt_stat_m1
|
||||
.end_stat:
|
||||
ret
|
||||
@ -681,7 +763,7 @@ endp
|
||||
align 4
|
||||
txt_stat_m1:
|
||||
db '‘â â¨á⨪ ',13,10,'‚®ªá¥«¥©: '
|
||||
.v: rb 50
|
||||
.v: rb 70
|
||||
txt_stat_m2:
|
||||
db 13,10,'Žâ®¡à ¦ ¥¬ëå £à ¥©: '
|
||||
.v: rb 20
|
||||
@ -717,6 +799,7 @@ draw_3d:
|
||||
;® ¢á¥ ¦¥ ¯à¨ ¯®¢®à®â å ¡ã¤ãâ ®âᥪ âáï ªà ï, ª®â®àë¥ ¢ë«¥§ãâ § ¯à¥¤¥«ë ¯«®áª®á⥩ ®âá¥ç¥¨ï
|
||||
;¢ ¢¥àᨨ opengl ¯®¤ Win ª®®à¤¨ âë ¨¤ãâ ®â -1.0 ¤® 1.0 ¯®â®¬ã â ¬ í⮣® ¤¥« âì ¥ 㦮
|
||||
stdcall [glScalef], [scale], [scale], [scale] ;㢥«¨ç¨¢ ¥¬ ¢®ªá¥«ìë© ®¡ê¥ªâ, çâ®-¡ë ¥ ¡ë« ®ç¥ì ¬ «¥ìª¨¬
|
||||
stdcall [glScalef], 1.0, 1.0, 0.5 ;çâ®-¡ë ªà ï ®¡ê¥ªâ ¥ ¢ë« §¨«¨ § £à ¨ ®âá¥ç¥¨ï
|
||||
stdcall [glRotatef], [angle_x],1.0,0.0,0.0
|
||||
stdcall [glRotatef], [angle_y],0.0,1.0,0.0
|
||||
stdcall [glRotatef], [angle_z],0.0,0.0,1.0
|
||||
@ -973,12 +1056,8 @@ err_msg_found_lib_3 db '
|
||||
err_msg_import_3 db 'Žè¨¡ª ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'tinygl',39,0
|
||||
;--------------------------------------------------
|
||||
|
||||
sc system_colors
|
||||
last_time dd 0
|
||||
|
||||
align 16
|
||||
procinfo process_information
|
||||
|
||||
align 4
|
||||
buf_0: dd 0 ;㪠§ â¥«ì ¡ãä¥à ¨§®¡à ¦¥¨ï
|
||||
dw 530 ;+4 left
|
||||
@ -1006,6 +1085,11 @@ angle_x dd 0.0
|
||||
angle_y dd 0.0
|
||||
angle_z dd 0.0
|
||||
delt_size dd 3.0
|
||||
mouse_drag dd 0 ;०¨¬ ¯®¢®à®â áæ¥ë ®â ¯¥à¥¬¥é¥¨¨ ªãàá®à ¬ëè¨
|
||||
mouse_x dd 0
|
||||
mouse_y dd 0
|
||||
angle_dxm dd 2.8444 ;~ 3d_wnd_w/180 - ¯à¨¡ ¢«¥¨¥ 㣫®¢ ¯®¢®à®â áæ¥ë ¯à¨ ¢à 饨¨ ¬ë襩
|
||||
angle_dym dd 2.8444 ;~ 3d_wnd_h/180
|
||||
|
||||
opt_light dw 0 ;®¯æ¨ï ¤«ï ¢ª«î票ï/¢ëª«î票ï ᢥâ
|
||||
opt_cube_box dw 1 ;®¯æ¨ï ¤«ï à¨á®¢ ¨ï à ¬ª¨ ¢®ªà㣠®¡ê¥ªâ
|
||||
@ -1026,10 +1110,12 @@ i_end:
|
||||
rb 4096
|
||||
stacktop:
|
||||
sys_path rb 1024
|
||||
file_name:
|
||||
rb 1024 ;4096
|
||||
file_name rb 2048
|
||||
library_path rb 1024
|
||||
plugin_path rb 4096
|
||||
openfile_path rb 4096
|
||||
filename_area rb 256
|
||||
sc system_colors
|
||||
procinfo process_information
|
||||
run_file_70 FileInfoBlock
|
||||
mem:
|
||||
|
Loading…
Reference in New Issue
Block a user