From 1d96cb1f45d35ef8a5c2677fbd4900b7c5ac8821 Mon Sep 17 00:00:00 2001 From: Benjamin Koltes <benjamin.koltes@student.ecp.fr> Date: Mon, 21 Mar 2016 03:45:24 +0100 Subject: [PATCH] avec les shadow --- __pycache__/operation_vector.cpython-33.pyc | Bin 7404 -> 6254 bytes __pycache__/raytracer.cpython-33.pyc | Bin 2603 -> 3000 bytes raytracer.py | 15 ++++++++++++++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/__pycache__/operation_vector.cpython-33.pyc b/__pycache__/operation_vector.cpython-33.pyc index 200dee8539d5beca61dbe0c0a5cc3b84ef2dcba1..6985a18e0b64f2524fb9bd0aa6ba3ed8b3334944 100644 GIT binary patch delta 418 zcmaE3`ObiS9uF_qHHG&Z*)y2f#26SD^z<fg6ce4y$HO*xAJbYSq0L*ERTvR`>B;J> zuMu334))1OY~^S|n>E=5P;_;0)FCVJ=iGwKtrKON9K<yVAtXK7m>Y=;vgSIH>}C^Q zb`;~g_>f#6Jvo3s6`@*oGn;@El4{Y(nS!$s(jc?hHU|rtp(v>nW!rp1I2KLpKSJ9~ l1XFbLWbt|wmC=$YVbm|xjHG&Uv~)c(S6L<*nR{MF765k<V3q&? delta 1576 zcmaE7@WzsT9uF_qzpL*yvS%=vxG*p<I9tVp7N-^!$2g_tWhLfj=Eb<=Czs}?=9M4` zxo4Kdq@<R`=j5kPZV(lnoXgKXc_PyqvJKcA!K}haw(iOOoNSZlvb-kWfW@qJWNY4R z!zNCl+e_HVw|+7&#}=~PKKTyE4DvPib5fw$iR(HgHnVTG=4PWX*pqn5DRBbZ<X=3g z6dAC&fmeoXKS)mA%{QHF>o@1}+mLOw=;k8=$>i&v>?HJ`Y=?t0dy+8u8D{fu;d=7i hzPLe@JdNNoa<*7A`JT2EuP0ygW$|S4H3v$_0s#FuHX8r{ diff --git a/__pycache__/raytracer.cpython-33.pyc b/__pycache__/raytracer.cpython-33.pyc index d438c668c55e9e716dd620b8256fd685dab4b5db..30618db9ed94af2cbefc1ffb44ebb596ab27ebfc 100644 GIT binary patch delta 972 zcmZ22vO`>X9uF_qpP2VyA2}Epk{OTyGXn#I0|Ns?ar;E&TK*Ish86~fC|-sXUWQ-| zzKx567}@w47#Q^QCTlWHhcUk}nR0P4FfcfS^d(L<X5Le8$xy?{kj2g56065h%f(Q` z$xy<>P{Rcht>IuO;b2H%f}(V0hGs^FW)=qXT26+-Lk!_H91K}p3|YJkS$qt&+#s!4 z{0z+u3^B|MwLA>9ybQH`AOlJS7)sa~YIqn@m>HVEhBY%Wln8)KEn(+psNsc5fJG;F zvKTW8PTtG1NRXF-fgw3Rx1h8nH9jXZJ)>lD9qR*_PbRV1GcoCGzRWfo?$1RWN{sT8 zk8<eOC$m7q3FKEcn14?&Fff!bFw`(GWHB<-Fo8)hTOx}I<m_f9hFTUh31*N)Eh|F} zD?<t+gGenKLq!TGXtG!sTw)^`YS|e|SQ%>A8ERNSUaRF`sNrBpsb^rwW@aez0dYW9 zu`pz@Ge~4X%;E%vQw<wKHUmS^Qc&=qg>P`74@033LwE@%$fZzcGJygb#O7wGVP<G% zWeC;)MZaJAI`@ZFBJ1AUXM#Me!Nb77P|D1p#lR4hSXs)!z`#(DUz}NznV(k*3W>b@ zqTIxs%&OFsQcwVaxRXz@Xvp$`QbS2%QAuWAdVE2CW?o4tDA2-ElS}f8CT<X`2k}6v z6LY{4`AJ!+$t4;fBTHEs7#P5j17;N`r{<-Wf}D|=SCU#(oSF=_9HhT2GqpUms1)Sv zBB<k1GK)(R^O93bK@Na%;&U={GfPSt85kJy!CojztuHRkDM^HgrD%YC3L;7&={u$< zv9hEnF*&tJub{FNBhhGqJSPHD&G#>mAez{t<Y!zjkc!zjgwsoYNk<QTALAl?#S pV3^Foxj_R{DZ(XS7SuVD|8U9+fy@wN6krr!6k`%*<q_fG1_0pR%5MMw delta 580 zcmdlXzFI_i9uF_qtFQ0EWZ4)Pk{OTyGXn#I0|Ns?arH#yTIOI4o{j5+7)@*$7#N(b zVnT~ki;82MQuDGBb2IZ|T=J7kb5rw5kc8YbOJY(|%i?qL(<ietO(##|5++kFZjg;2 zcjQif%(SQ8m7#`_A&Z;ACDw|emW!c=lc9u%p@xg0hJzuC1x)gSNiK#G4u%vaC`xB$ zXl7(+W@Rw1<zy&4#1IZr&c%?$$B@O(P|FQ6CQE>!nSmjOnW2`4p_Z4SmJeh=i6BD> zJ3|c*LkcrPGsrM$5LF@wG8QDk3zcYQVki-utjl7|C^R{dWzpn0oC=dgS?`nQ>tC$) zOpF$rt=VRi8Qyo;l^EqF|7X`{_S4{<Jdf+3iv}oS5kx6j(b&!{FTlgVz#zsbz$m~d K#w5(jBMbmH*PTuP diff --git a/raytracer.py b/raytracer.py index fe34768..e6b7538 100644 --- a/raytracer.py +++ b/raytracer.py @@ -22,7 +22,8 @@ def trace_ray(ray, scene, camera): return Vector([0,0,0]) color = ambiant_illuminate(class_intersect.position, class_intersect.object) for light in scene.light_list: - color += phong_illuminate(light, class_intersect.position, class_intersect.normal, class_intersect.object, Vector([0,0,0])) +# color += phong_illuminate(light, class_intersect.position, class_intersect.normal, class_intersect.object, Vector([0,0,0])) + color += compute_light(light, scene, class_intersect, Vector([0,0,0])) color_object = class_intersect.object.material.color c_x, c_y, c_z = color.coord() return Vector([max(min(c_x, 1), 0), max(0, min(c_y, 1)), max(0, min(c_z,1))]) @@ -37,3 +38,15 @@ def raytracer_render(camera, scene): color = trace_ray(ray, scene, camera) affiche[i,j,:] = color.coord() return affiche + +def compute_light(light, scene, intersection, viewer): + ray = Ray(light.position, (intersection.position - light.position).normalized()) + distance = (intersection.position - light.position).norm() + distance_limit = distance*.99 + for o in scene.object_list: + resultat = intersect(o, ray) + if resultat != None: + d = (resultat.position - ray.starting_point).norm() + if d < distance_limit: # si un objet est dans la trajectoire du rayon + return Vector([0, 0, 0]) + return phong_illuminate(light, intersection.position, intersection.normal, intersection.object, viewer) -- GitLab