diff -urN rt_v8/cg.py rt_v9/cg.py --- rt_v8/cg.py 2018-03-22 13:58:02.000000000 +0900 +++ rt_v9/cg.py 2018-03-23 11:46:23.000000000 +0900 @@ -54,21 +54,19 @@ copen = 'copen-090419.jpg' beat = 'beat.jpg' - rtd = { 'base': 1.0, 'diff': 0 } - maps = [ { 'fn': 'IMG_3999_3.mov', 'fn_r': 'IMG_3999_4.mov', 't2m': [ ax.zoom_all(3) ] }, ] data = [ { 'kind': 'square', - 'rtd': rtd, + 'rtd': { 'base': 0.1, 'diff': 1.0, 'reflect': 0.9 }, 'l2m': [], 'maps': maps, 'm2g': [ ax.zoom_all(50) ], },{ 'kind': 'ball', - 'rtd': { 'base':0.1, 'diff': 0, 'reflact': 0.5, 'density': 2 }, + 'rtd': { 'base':0.1, 'diff': 0, 'reflect': 0.5, 'reflact': 0.5, 'density': 2 }, 'def_col': [128,0,0], 'l2m': [ ax.zoom_all(20.0/50) ], 'm2g': [ ax.zoom_all(50) ], @@ -77,7 +75,8 @@ data = sum( map( d_setup, data ), [] ) lights = [ - { 'v': [0,0,-1], 'e': 1.0 }, + { 'p': v.op1( '*', [1,-1,-1], 30 ), 'e': 2.5 }, + { 'p': v.op1( '*', [-1,1,1], 30 ), 'e': 2.5 }, ] (w, h) = ( ut.arg_i('w', 640) , ut.arg_i('h', 480) ) diff -urN rt_v8/rt.py rt_v9/rt.py --- rt_v8/rt.py 2018-03-21 21:20:02.000000000 +0900 +++ rt_v9/rt.py 2018-03-23 11:23:36.000000000 +0900 @@ -69,15 +69,14 @@ return 0 def f(ltd): - ltv = [0,0,1] - if 'v' in ltd: - ltv = v.nega( ltd.get('v') ) - elif 'p' in ltd: - ltv = v.sub_unit( ltd.get('p'), crsp ) + ltv = ltd.get( 'v', [0,0,-1] ) + if 'p' in ltd: + ltv = v.sub_unit( crsp, ltd.get('p') ) ang_nv_lt = v.dot_product( nv, ltv ) - if ang_nv_eyev_nega * ang_nv_lt < 0: + ang_nv_lt_nega = -ang_nv_lt + if ang_nv_eyev_nega * ang_nv_lt_nega < 0: return 0 - return max( ang_nv_lt, 0 ) * ltd.get('e', 1.0) + return abs( ang_nv_lt ) * ltd.get('e', 1.0) return sum( map( f, lights ) ) * diff @@ -88,6 +87,8 @@ reflect = rtd.get('reflect', 0) if not reflect: return [] + if ang_nv_eyev_nega < 0 and not rtd.get('reflect_backside', False): + return [] ref_v = v.op2( '+', v.op1( '*', nv, 2 * ang_nv_eyev_nega ), eyev ) ref_l = line.new( crsp, ref_v ) col = get_col( data, lights, ref_l, video, nest_rate * reflect, crst ) diff -urN rt_v8/ut.py rt_v9/ut.py --- rt_v8/ut.py 2018-03-16 20:38:43.000000000 +0900 +++ rt_v9/ut.py 2018-03-23 11:00:56.000000000 +0900 @@ -4,6 +4,7 @@ import os import time import subprocess +from decimal import * arg_s = lambda k, def_val='': next( ( s[ len(k)+1: ] for s in sys.argv if s.startswith(k+'=') ), def_val ) arg_v = lambda fs, k, def_val: ( lambda s: fs(s) if s else def_val )( arg_s(k) ) @@ -54,6 +55,7 @@ si = int(sec) m = si / 60 s = si % 60 + int( (sec - si) * 100 ) * 0.01 + s = Decimal(s).quantize( Decimal('1.00') ) h = m / 60 m %= 60 lst = [ (s, 's') ]