Oto świeżutki pachnący jeszcze skrypcik do zoomu i focusa w trybie wideo :grin: Wersja nr 2.0. Pisany na G7. CHDK allbest.
Nowości:
- obsługa przycisku exp_cor w G7
- nie psuje samodzielnie ustawionej pierwotnej ostrości
- lepsza informacja w okienku
- display i menu - klawisze konfigurowalne, mogą obsługiwać zoom i focusa jednocześnie. Można też wyłaczyć zooma albo focusa dla tych klawiszy (ustawić parametr na 0 lub liczbę ujemną)
- poprawionych kilka drobiazgów
wady:
- brak ostrości podczas zmiany ogniskowej zoomu (tak działa polecenie get_zoom, nic tu się chyba nie da obecnie zrobić)
- tańczenie ostrości przy zmianie z dużego zoomu do małego i krótkiej ostrości (tak być musi, skrypt ostrzy, zmienia zoom, ostrzy bo na dużym zoomie nie złapiesz makro ale dopiero na szerokim kącie. Ostrzy przed zoomem bo lepiej wygląda przybliżanie i szybciej po tym łapie ostrość.)
- brak AF (chyba wszystko wypróbowałem co daje chdk
)
11 stopniowy focus bywa wadą jeśli zależy nam na precyzji, zaletą jest jednak przy ręcznym ustawianiu ostrości. Jeśli ktoś uważa że 15 stopniowy byłby lepszy (albo podawanie precyzyjnej odległości w parametrach auto focusa) to nie ma problemu, mogę to zmienić.
Piszcie jak działa, czy się wiesza na starcie, czy działa w pełnym zakresie ostrości (od 1cm do nieskończoności). Generalnie wydaje mi się że powinien na każdym sprzęcie się odpalić tyle że może wymagać kosmetycznych zmian. Jeśli n.p. ktoś ma mniejszego zooma to nie będzie miał 13 standardowych skoków ale n.p. 7 i mimo że skrypt będzie działał to może zachowywać się dziwnie, lepiej to ująć w skrypcie. Zakres zooma ustawia się nadając wartość zmiennej k w linii 31 skryptu. Skoki podaje chdk, trzeba właczyć miscelaneous values > show misc values [o], show zoom [o]. Numer skoku to parametr z. Z dostosowaniem focusa jest gorzej, trzeba zmienić równanie.
Kod:
rem Author kamil, script ver. 2.0, allbuild, works on g7,a710is,...
@title zoom and focus in video
@param a auto focus /erase/
@default a 3
@param b auto focus /expo_corr/
@default b 10
@param c step zoom /left/
@default c 4
@param d step zoom /set/ - at start
@default d 7
@param e step zoom /right/
@default e 13
@param f auto zoom /display/
@default f 1
@param g auto focus /display/
@default g 2
@param h auto zoom /menu/
@default h 11
@param i auto focus /menu/
@default i 10
@param j help (1-on)
if j=1 then gosub "help"
get_prop 12 q
if q=0 then set_prop 12 1
z=d
rem zoom range, change this value if your zoom is different
k=13
get_focus u
o=0
do
o=o+1
p=o*o*(o+1)*(o+1)+90
until u<p
v=o
press "shoot_half"
sleep 800
click "shoot_full"
print "HALF SHOOT - stop record"
:loop
wait_click
if is_key "zoom_in" then goto "in"
if is_key "zoom_out" then goto "out"
if is_key "up" then goto "add_focus"
if is_key "down" then goto "min_focus"
if is_key "left" then z=c
if is_key "set" then z=d
if is_key "right" then z=e
if is_key "erase" then goto "focus_1"
if is_key "expo_corr" then goto "focus_2"
if is_key "display" then goto "zoom_focus_1"
if is_key "menu" then goto "zoom_focus_2"
if is_key "shoot_half" then goto "end"
goto "loop"
:in
if z<0 then let z=1
if z>k then let z=k
set_zoom_rel z
get_zoom t
print "zoom", t; "/" k
goto "loop"
:out
if z<0 then let z=1
if z>k then let z=k
set_zoom_rel -z
get_zoom t
print "zoom", t; "/" k
goto "loop"
:focus_1
v=a
gosub "focus_dance"
goto "loop"
:focus_2
v=b
gosub "focus_dance"
goto "loop"
:zoom_focus_1
if g>0 then gosub "focus_zoom_focus_1"
if f>0 then gosub "zoom_zoom_focus_1"
if g>0 then gosub "focus_zoom_focus_1"
goto "loop"
:focus_zoom_focus_1
v=g
gosub "focus_dance"
return
:zoom_zoom_focus_1
set_zoom f
print "zoom", f; "/" k
return
:zoom_focus_2
if i>0 then gosub "focus_zoom_focus_2"
if h>0 then gosub "zoom_zoom_focus_2"
if g>0 then gosub "focus_zoom_focus_2"
goto "loop"
:focus_zoom_focus_2
v=i
gosub "focus_dance"
return
:zoom_zoom_focus_2
set_zoom h
print "zoom", h; "/" k
return
:add_focus
v=v+1
gosub "focus_dance"
goto "loop"
:min_focus
v=v-1
gosub "focus_dance"
goto "loop"
:focus_dance
u=(v*v*v*v)+90
if v>=11 then u=65535
if v<1 then let v=1
if v>11 then let v=11
set_focus u
get_focus t
print "focus", v; "/11 ("t; " mm)"
return
:end
click "shoot_full"
end
end
:help
print "Use with CAUTION"
print "working on G7,A710is"
print "maybe others too"
print "or you need modify this"
print " - [ click ANY KEY ] - "
wait_click
print "script. Zoom and focus"
print "values could be different"
print "lines to modify:"
print "31,132,133"
print " - [ click ANY KEY ] - "
wait_click
print "keys:"
print "UP/DOWN - focusing"
print "ZOOM IN/ZOOM OUT -zooming"
print "LEFT/SET/RIGHT - zoom set"
print " - [ click ANY KEY ] - "
wait_click
print "ERASE/EXP - focus set"
print "DISPL/MENU - zoom & focus"
print "You can disable focus"
print "or zoom setting by enter"
print " - [ click ANY KEY ] - "
wait_click
print "0 parameter"
print "focus has 11 steps"
print "zoom has 15 steps"
print "Use DISPLAY & MENU"
print " - [ click ANY KEY ] - "
wait_click
print "for best & fast results."
print "Press SHOOT HALF"
print "to stop recording"
print "Because of zoom and"
print " - [ click ANY KEY ] - "
wait_click
print "focusing noises"
print "i suggest record the"
print "sound with another"
print "recorder and join with"
print " - [ click ANY KEY ] - "
wait_click
print "nandub for example"
print "enter 0 in help param"
print "and play the game :)"
print " - [ click ANY KEY ] - "
wait_click
cls
return