New maps temple and kokiri

new file to manage inputs
master
JeanotP1314 2017-01-08 15:48:21 -08:00
parent 67f2e4fdbc
commit 1af8eb5629
102 changed files with 16235 additions and 327 deletions

View File

@ -0,0 +1,587 @@
# 3ds Max Wavefront OBJ Exporter v0.94b - (c)2007 guruware
# File Created: 12.09.2010 01:40:48
newmtl awning
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd awning.png
newmtl bark
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd bark.png
newmtl bridge
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd bridge.png
newmtl bush
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd bush.png
newmtl bushside
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd bushside.png
newmtl curtain
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd curtain.png
newmtl cut
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd cut.png
newmtl dead
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd dead.png
newmtl doodd
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd doodd.png
newmtl doodh
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd doodh.png
newmtl doods
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd doods.png
newmtl edge
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd edge.png
newmtl enter
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd enter.png
newmtl exit
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd exit.png
newmtl fade
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd fade.png
newmtl fence
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd fence.png
newmtl fencew
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd fencew.png
newmtl grass
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd grass.png
newmtl grassmix
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd grassmix.png
newmtl house
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd house.png
newmtl ladder
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd ladder.png
newmtl leaf
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd leaf.png
newmtl ledge
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd ledge.png
newmtl mido
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd mido.png
newmtl patch
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd patch.png
newmtl path
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd path.png
newmtl pathe
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd pathe.png
newmtl patht
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd patht.png
newmtl porch
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd porch.png
newmtl rail
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd rail.png
newmtl saria
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd saria.png
newmtl shop
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd shop.png
newmtl shroom
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd shroom.png
newmtl step
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd step.png
newmtl steptop
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd steptop.png
newmtl tower
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd tower.png
newmtl trees
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd trees.png
newmtl treetop
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd treetop.png
newmtl trunks
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd trunks.png
newmtl vine
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd vine.png
newmtl vineh
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd vineh.png
newmtl vinew
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd vinew.png
newmtl wall
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd wall.png
newmtl walls
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd walls.png
newmtl water
Ns 10.0830
Ni 1.5000
d 1.0000
Tr 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0000 0.0000 0.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd water.png

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 481 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 978 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 876 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 902 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1018 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 543 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 674 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 922 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 815 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 744 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 420 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 779 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 579 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1017 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 889 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 305 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 632 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 965 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 737 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 462 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 481 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 975 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,457 @@
# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware
# File Created: 31.05.2016 01:43:58
newmtl VMtl034
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.8477 0.8477 0.8477
Kd 0.8477 0.8477 0.8477
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 3024F421_c.png
map_Kd 3024F421_c.png
newmtl VMtl031
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.3633 0.3633 0.3633
Kd 0.3633 0.3633 0.3633
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 64674252_c.png
map_Kd 64674252_c.png
newmtl VMtl001
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.3984 0.3984 0.3984
Kd 0.3984 0.3984 0.3984
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 196C0925_c.png
map_Kd 196C0925_c.png
newmtl VMtl006
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.1992 0.1992 0.1992
Kd 0.1992 0.1992 0.1992
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 37DD4E64_c.png
map_Kd 37DD4E64_c.png
newmtl VMtl007
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.8945 0.8945 0.8945
Kd 0.8945 0.8945 0.8945
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 39B4C203_c.png
map_Kd 39B4C203_c.png
newmtl VMtl028
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.0977 0.0977 0.0977
Kd 0.0977 0.0977 0.0977
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 2C312C37_c.png
map_Kd 2C312C37_c.png
newmtl VMtl009
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.8945 0.8945 0.8945
Kd 0.8945 0.8945 0.8945
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 2CCE0C4A_c.png
map_Kd 2CCE0C4A_c.png
newmtl Material__126
Ns 10.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.5880 0.5880 0.5880
Kd 0.5880 0.5880 0.5880
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka black.png
map_Kd black.png
newmtl VMtl016
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.2461 0.2461 0.2461
Kd 0.2461 0.2461 0.2461
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 4B2B76B_c.png
map_Kd 4B2B76B_c.png
newmtl VMtl018
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.3477 0.3477 0.3477
Kd 0.3477 0.3477 0.3477
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 8AA76A5_c.png
map_Kd 8AA76A5_c.png
newmtl VMtl024
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.9961 0.9961 0.9961
Kd 0.9961 0.9961 0.9961
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 3C72B2A_c.png
map_Kd 3C72B2A_c.png
newmtl VMtl025
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.9961 0.9961 0.9961
Kd 0.9961 0.9961 0.9961
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 212D3C4E_c.png
map_Kd 212D3C4E_c.png
newmtl VMtl029
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.4453 0.4453 0.4453
Kd 0.4453 0.4453 0.4453
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 3FADD34B_c.png
map_Kd 3FADD34B_c.png
newmtl VMtl092
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.2070 0.2070 0.2070
Kd 0.2070 0.2070 0.2070
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 4C32C130_c.png
map_Kd 4C32C130_c.png
newmtl VMtl079
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.9961 0.9961 0.9961
Kd 0.9961 0.9961 0.9961
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 636C5E89_c.png
map_Kd 636C5E89_c.png
newmtl VMtl080
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.9961 0.9961 0.9961
Kd 0.9961 0.9961 0.9961
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 26D56437_c.png
map_Kd 26D56437_c.png
newmtl VMtl083
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.9961 0.9961 0.9961
Kd 0.9961 0.9961 0.9961
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 7003A16E_c.png
map_Kd 7003A16E_c.png
newmtl VMtl010
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.8945 0.8945 0.8945
Kd 0.8945 0.8945 0.8945
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 7DBBF446_c.png
map_Kd 7DBBF446_c.png
newmtl VMtl021
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.9961 0.9961 0.9961
Kd 0.9961 0.9961 0.9961
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 4E87E087_c.png
map_Kd 4E87E087_c.png
newmtl VMtl101
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.2070 0.2070 0.2070
Kd 0.2070 0.2070 0.2070
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 434C33B4_c.png
map_Kd 434C33B4_c.png
newmtl VMtl100
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.2070 0.2070 0.2070
Kd 0.2070 0.2070 0.2070
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 6E0371FC_c.png
map_Kd 6E0371FC_c.png
newmtl VMtl102
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.2070 0.2070 0.2070
Kd 0.2070 0.2070 0.2070
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 377F628B_c.png
map_Kd 377F628B_c.png
newmtl VMtl103
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.2070 0.2070 0.2070
Kd 0.2070 0.2070 0.2070
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 494BEA05_c.png
map_Kd 494BEA05_c.png
newmtl VMtl033
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.9961 0.9961 0.9961
Kd 0.9961 0.9961 0.9961
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 7C539D9A_c.png
map_Kd 7C539D9A_c.png
newmtl VMtl104
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.2070 0.2070 0.2070
Kd 0.2070 0.2070 0.2070
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 481A1D93_c.png
map_Kd 481A1D93_c.png
newmtl VMtl035
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.9961 0.9961 0.9961
Kd 0.9961 0.9961 0.9961
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 382B7295_c.png
map_Kd 382B7295_c.png
newmtl VMtl036
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.9961 0.9961 0.9961
Kd 0.9961 0.9961 0.9961
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 4598980_c.png
map_Kd 4598980_c.png
newmtl VMtl037
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.9961 0.9961 0.9961
Kd 0.9961 0.9961 0.9961
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 73181CBF_c.png
map_Kd 73181CBF_c.png
newmtl VMtl038
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.9961 0.9961 0.9961
Kd 0.9961 0.9961 0.9961
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 3718093C_c.png
map_Kd 3718093C_c.png
newmtl VMtl039
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.9961 0.9961 0.9961
Kd 0.9961 0.9961 0.9961
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 64FFE518_c.png
map_Kd 64FFE518_c.png
newmtl VMtl040
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.9961 0.9961 0.9961
Kd 0.9961 0.9961 0.9961
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 4FD46FF6_c.png
map_Kd 4FD46FF6_c.png
newmtl VMtl088
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.2773 0.2773 0.2773
Kd 0.2773 0.2773 0.2773
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 69F2958_c.png
map_Kd 69F2958_c.png
newmtl VMtl090
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.3125 0.3125 0.3125
Kd 0.3125 0.3125 0.3125
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 5F40F14E_c.png
map_Kd 5F40F14E_c.png
newmtl VMtl091
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.2070 0.2070 0.2070
Kd 0.2070 0.2070 0.2070
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 779FAD4E_c.png
map_Kd 779FAD4E_c.png
newmtl VMtl032
Ns 20.0000
Ni 0.0250
d 1.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 0.8477 0.8477 0.8477
Kd 0.8477 0.8477 0.8477
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka 1E3F706A_c.png
map_Kd 1E3F706A_c.png

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 B

View File

@ -21,7 +21,7 @@ Kd 0.972549 0.972549 0.972549
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
d 0.000000
illum 2
map_Kd kuribo_eye.png
map_Ka kuribo_eye.png

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Before

Width:  |  Height:  |  Size: 833 B

After

Width:  |  Height:  |  Size: 833 B

View File

@ -0,0 +1,28 @@
# Blender MTL File: 'None'
# Material Count: 2
newmtl kuribo_all
Ns 96.078431
Ka 0.501961 0.501961 0.501961
Kd 0.972549 0.972549 0.972549
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
map_Kd kuribo_all.png
map_Ka kuribo_all.png
map_d kuribo_all.png
newmtl kuribo_eye
Ns 96.078431
Ka 0.501961 0.501961 0.501961
Kd 0.972549 0.972549 0.972549
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 0.000000
illum 2
map_Kd kuribo_dead.png
map_Ka kuribo_dead.png
map_d kuribo_dead.png

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,15 @@
# Blender MTL File: 'goomba_dead.blend'
# Material Count: 1
newmtl kuribo_eye
Ns 96.078431
Ka 0.501961 0.501961 0.501961
Kd 0.972549 0.972549 0.972549
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
map_Kd kuribo_eye.png
map_Ka kuribo_eye.png
map_d kuribo_eye.png

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 833 B

View File

@ -7,34 +7,44 @@ import avatars
import maps
import building
import objects
import inputs
import os
#import sys
from serial_data import Serial_data
#from serial_data import Serial_data
#sys.path.insert(0, "../python-vrzero")
from vrzero import engine
###### Select the mode here
USE_SERIAL = False # try the app without a serial connection, keyboard still work
################ Select the mode here ###########
USE_SERIAL = True # try the app without a serial connection, keyboard still work
USE_STEREO = False # Mode Stereoscopic
USE_TUNNEL = True # If mode stereo is on, use Tunnel effect
############ Use a more simple sensor movement like on the Wii remote ########
SIMPLE_MOVE = True
################ Select your map : moon or forest ##########
MAP = 'temple'
################ Select your Avatars here (you can manualy add more) #########
AVATAR_1 = 'Link'
AVATAR_2 = 'Goomba'
AVATAR_3 = 'Goku'
################ Show stat on terminal #############
SHOW_STAT = False # Show FPS stat (Calibrated for Raspberry Pi)
# Change screen size to adapt your config
DEFAULT_SCREEN_WIDTH=1200
DEFAULT_SCREEN_HEIGHT=600
################ Change screen size to adapt your config ################
DEFAULT_SCREEN_WIDTH=600 # 0 for full screen
DEFAULT_SCREEN_HEIGHT=400 # 0 for full screen
DEFAULT_EYE_SEPERATION=0.65
# height of the camera
DEFAULT_AVATAR_EYE_HEIGHT = 4.0
DEFAULT_AVATAR_MOVEMENT_SPEED = 0.6
# Select your map moon or forest
MAP = 'forest'
# Select your Avatars here (you can manualy add more)
AVATAR_1 = 'Link'
AVATAR_2 = 'Goku'
DEFAULT_AVATAR_MOVEMENT_SPEED = 1.2
#os.system('xset r off')
os.putenv('SDL_FBDEV', '/dev/fb0')
os.putenv('SDL_VIDEODRIVER', 'fbcon')
@ -48,13 +58,21 @@ if(USE_STEREO):
shader_name = "barrel" if USE_TUNNEL else "uv_flat"
CAMERA = pi3d.StereoCam(separation=DEFAULT_EYE_SEPERATION, interlace=0, shader=shader_name)
else:
CAMERA = pi3d.Camera(absolute=False)
CAMERA = pi3d.Camera(absolute=True)
# initialize inputs
handler = inputs.handlers()
# Implement Threading to read Serial
if(USE_SERIAL):
handler.serial()
#========================================
# Create Hero & map, Select your avatars here
if AVATAR_1 == 'Link':
avatar = avatars.link()
avatarstereo = avatars.linkstereo()
avatar1_3 = avatars.goombaD()
elif AVATAR_1 == 'Cloud':
avatar = avatars.cloud()
elif AVATAR_1 == 'Lego':
@ -76,266 +94,238 @@ elif AVATAR_2 == 'Roshi':
avatar2 = avatars.roshi()
elif AVATAR_2 == 'Goku':
avatar2 = avatars.goku()
avatar2_3 = avatars.goombaD()
elif AVATAR_2 == 'Goomba':
avatar2 = avatars.goomba()
avatar2_3 = avatars.goombaD()
if AVATAR_3 == 'Link':
avatar3 = avatars.link()
elif AVATAR_3 == 'Goomba':
avatar3 = avatars.goomba()
avatar3_3 = avatars.goombaD()
elif AVATAR_3 == 'Goku':
avatar3 = avatars.goku()
avatar3_3 = avatars.goombaD()
if MAP == 'forest':
map1 = maps.forest()
elif MAP == 'moon':
map1 = maps.moon()
elif MAP == 'temple':
map1 = maps.templeoftime()
bulle = objects.object()
#avatar
#step = [0.0, 0.0, 0.0]
xm = 0.0
zm = 0.0
ym = map1.mymap.calcHeight(xm, zm) + 9 + DEFAULT_AVATAR_EYE_HEIGHT
xc = 0.0
yc = 0.0
zc = 0.0
# variables
synchro_serial=0
camera_distance = -20
keep_running = True
# camera position
rot = 0.0
tilt = -0.0
norm = None
crab = False
roll = 0.0
stereo_rot = 0.0
stereo_tilt = 0.0
stereo_roll = 0.0
# variables
synchro_serial=0
movement = 0
mv_tmp = 0
mv_run = 0
mv_run_diff = 0
avatar_speed = DEFAULT_AVATAR_MOVEMENT_SPEED
orientation = 0
camera_distance = -20
# Fetch key presses
mykeys = pi3d.Keyboard()
mymouse = pi3d.Mouse(restrict = False)
mymouse.start()
pos_armR = [0, 0, 0]
pos_forarmR = [0, 0, 0]
pos_armL = [0, 0, 0]
pos_forarmL = [0, 0, 0]
body_orientation = 0
flag_jump = 0
flag_view = True
jump_height = 28
timer =0
keep_running = True
def roger_handler(sensor, Euler0, Euler1, Euler2):
global pos_armR, pos_forarmR, pos_armL, pos_forarmL, timer, body_orientation, mv_run, mv_run_diff, xm, zm
timer += 1
print("Sensor:", sensor)
if timer == 13:
timer = 0
if sensor == 'A':
avatar.armL.rotateToZ(math.degrees(-Euler1))
avatar.armL.rotateToX(math.degrees(-Euler2))
avatar.armL.rotateToY(math.degrees(-Euler0))
#pos_armL = [Euler0, Euler1, Euler2]
#print("Bras : E0 = ", math.degrees(Euler0), " E1 = ", math.degrees(Euler1), " E2 = ", math.degrees(Euler2))
elif sensor == 'C':
avatar.armR.rotateToZ(math.degrees(-Euler1))
avatar.armR.rotateToX(math.degrees(-Euler2))
avatar.armR.rotateToY(math.degrees(-Euler0))
#pos_forarmR = [-Euler0 - pos_armL[0], -Euler0 - pos_armL[1], -Euler0 - pos_armL[2]]
elif sensor == 'D':
avatar.head.rotateToZ(math.degrees(-Euler1))
avatar.head.rotateToX(math.degrees(-Euler2))
avatar.head.rotateToY(math.degrees(-Euler0))
#if timer == 1:
# print(" Avant : E0 = ", math.degrees(Euler0), " E1 = ", math.degrees(Euler1), " E2 = ", math.degrees(Euler2))
elif sensor == 'J':
#print("JOY {:03.2f} {:03.2f}".format(Euler0, Euler1))
if Euler0 <= 128 and Euler1 <= 128:
body_orientation = 270 - Euler1 #
elif Euler0 >= 128 and Euler1 <= 128:
body_orientation = 90 + Euler1
elif Euler0 >= 128 and Euler1 >= 128:
body_orientation = -157 + Euler1
elif Euler0 <= 128 and Euler1 >= 128:
body_orientation = 360 - Euler0
#print(body_orientation)
if Euler0 >= 128:
Euler0 -= 255
if Euler1 >= 128:
Euler1 -= 255
joystick_v_axis_pos = Euler0/128
joystick_h_axis_pos = Euler1/128
#camera_tilt, camera_orientation= CAMERA.point_at()
#print("ORIENTATION : ", camera_orientation)
camera_orientation = 0
if math.fabs(joystick_v_axis_pos) > 0.1:
xm -= math.sin(math.pi/2+camera_orientation*20)*-joystick_v_axis_pos*avatar_speed
zm += math.cos(-math.pi/2+camera_orientation*20)*-joystick_v_axis_pos*avatar_speed
mv_run += math.fabs(joystick_v_axis_pos*avatar_speed*2/3)
if math.fabs(joystick_h_axis_pos) > 0.1:
xm -= math.cos(math.pi/2+(-camera_orientation*20))*-joystick_h_axis_pos*avatar_speed
zm += math.sin(-math.pi/2+(-camera_orientation*20))*-joystick_h_axis_pos*avatar_speed
mv_run += math.fabs(joystick_h_axis_pos*avatar_speed*2/3)
mv_run_diff = math.fabs(joystick_v_axis_pos*avatar_speed*2/3) + math.fabs(joystick_h_axis_pos*avatar_speed*2/3)
#print(xm, ym, zm, "Euler : ",joystick_v_axis_pos, joystick_h_axis_pos )
else:
print("unhandled sensor:", sensor)
# Implement Threading to read Serial
if(USE_SERIAL):
ser = Serial_data('ABCDEFJ', roger_handler)
ser.start()
# Other Avatar
xm_av2 = 0.0
zm_av2 = 80.0
xm_av3 = 0.0
zm_av3 = 100.0
flag_choc_av = 0
flag_choc_av2 = 0
flag_choc_av3 = 0
mv_avatar2 = 0.0
mv_avatar2_diff = 0.0
mv_avatar3 = 0.0
mv_avatar3_diff = 0.0
life_av = 5
life_av2 = 2
life_av3 = 2
#============================================================================================================
def update_position():
global xm, ym, zm, xc, yc, zc
global xm_av2, zm_av2, xm_av3, zm_av3
#print( xm, zm, map1.height(xm, zm))
jump, cut = handler.actionRead()
xm, zm, body_orientation, mv, mv_diff, flag_view = handler.position()
if flag_view:
avatar.center.position(xm, map1.height(xm, zm) + 2*math.sin(jump/8), zm)
avatar.center.rotateToY(body_orientation)
else:
avatarstereo.center.position(xm, map1.height(xm, zm) + 2*math.sin(jump/8), zm)
avatarstereo.center.rotateToY(body_orientation)
ym = map1.mymap.calcHeight(xm, zm)
avatar2.center.position(xm_av2, map1.height(xm_av2, zm_av2), zm_av2)
avatar2_3.center.position(xm_av2, map1.height(xm_av2, zm_av2), zm_av2)
avatar.center.position(xm, ym, zm)
avatar2.center.position(-10, map1.mymap.calcHeight(-10, 15), 15)
#avatar2.center.position(-5, map1.mymap.calcHeight(-5, 5), 5)
bulle.myplane.position(-10, map1.mymap.calcHeight(-10, 15)+11, 15.2)
avatar3.center.position(xm_av3, map1.height(xm_av3, zm_av3), zm_av3)
avatar3_3.center.position(xm_av3, map1.height(xm_av3, zm_av3), zm_av3)
bulle.myplane.position(xm, map1.height(xm, zm)+12, zm)
map1.update_pos(xm, zm)
map1.myecube.position(xm, ym, zm)
def update_avatar():
global xm, ym, zm, mv_run, mv_run_diff, body_orientation, synchro_serial, flag_jump
global xm_av2, zm_av2, xm_av3, zm_av3, synchro_serial, mv_avatar2, mv_avatar3, flag_choc_av, flag_choc_av2, flag_choc_av3, life_av, life_av2, life_av3
xm, zm, body_orientation, mv_run, mv_run_diff, flag_view = handler.position()
jump, cut = handler.action_update()
# if we are moving
if(mv_run_diff > 0):
if mv_run_diff:
avatar.run(mv_run, mv_run_diff)
# if we are jumping
#if(flag_jump > 0):
# avatar.jump(flag_jump, xm, ym, zm, body_orientation)
# avatar.jump(flag_jump, xm, zm, body_orientation)
# flag_jump -=1
synchro_serial=10
if cut >= 1:
avatar.cut(cut)
avatarstereo.cut(cut)
if jump:
pass#jump -= 1
# if we are standing
if(synchro_serial == 1):
avatar.stand()
#avatar.pose()
avatar.center.rotateToY(body_orientation)
if (synchro_serial > 0):
synchro_serial -=1
mv_run_diff=0
def update_scenario():
global xm, ym, zm
#print(xm, ym, zm)
if -15 <= xm and xm <= -5 and 10 <= zm and zm <= 19:
if -13 <= xm and xm <= -10:
xm = -13
elif -10 <= xm and xm <= -7:
xm = -7
if 13 <= zm and zm <= 14.5:
zm = 13
elif 14.5 <= zm and zm <= 16:
zm = 16
bulle.myplane.draw()
if life_av2 > 0:
mv_avatar2 += 0.04
xm_av2_tmp = xm_av2 - (0.4*math.sin(mv_avatar2))
xm_av2 = xm_av2_tmp
#print(xm_av2)
avatar2.run(mv_avatar2*3, 1)
#avatar2_2.run(mv_avatar2)
if math.cos(mv_avatar2) <= math.cos(mv_avatar2 - 0.02):
avatar2.center.rotateToY(90)
#avatar2_2.center.rotateToY(90)
else:
avatar2.center.rotateToY(270)
#avatar2_2.center.rotateToY(270)
if life_av3 > 0:
mv_avatar3 += 0.04
zm_av3_tmp = zm_av3 - (0.4*math.sin(mv_avatar3))
zm_av3 = zm_av3_tmp
#print(xm_av2)
avatar3.run(mv_avatar3, 1)
if math.cos(mv_avatar3) <= math.cos(mv_avatar3 - 0.02):
avatar3.center.rotateToY(0)
else:
avatar3.center.rotateToY(180)
#print(xm, zm, xm_av2, zm_av2)
if flag_choc_av:
flag_choc_av -= 1
if flag_choc_av2:
flag_choc_av2 -= 1
if flag_choc_av3:
flag_choc_av3 -= 1
distance_choc_av = 5
distance_choc_av2 = 2
distance_choc_av3 = 2
if xm_av2 - distance_choc_av <= xm and xm <= xm_av2 + distance_choc_av and zm_av2 - distance_choc_av <= zm and zm <= zm_av2 + distance_choc_av:
#bulle.myplane.draw()
if cut and not flag_choc_av2 and life_av2 > 0:
life_av2 -= 1
flag_choc_av2 = 19
if xm_av2 - distance_choc_av2 <= xm and xm <= xm_av2 + distance_choc_av2 and zm_av2 - distance_choc_av2 <= zm and zm <= zm_av2 + distance_choc_av2:
life_av -= 1
flag_choc_av = 19
if xm_av2 - distance_choc_av2 <= xm and xm <= xm_av2:
handler.position_upd(-5,0)
elif xm_av2 <= xm and xm <= xm_av2 + distance_choc_av2:
handler.position_upd(5,0)
if zm_av2 - distance_choc_av2 <= zm and zm <= zm_av2:
handler.position_upd(0,-5)
elif zm_av2 <= zm and zm <= zm_av2 + distance_choc_av2:
handler.position_upd(0,5)
if xm_av3 - distance_choc_av <= xm and xm <= xm_av3 + distance_choc_av and zm_av3 - distance_choc_av <= zm and zm <= zm_av3 + distance_choc_av:
#bulle.myplane.draw()
if cut and not flag_choc_av3 and life_av3 > 0:
life_av3 -= 1
flag_choc_av3 = 19
if xm_av3 - distance_choc_av3 <= xm and xm <= xm_av3 + distance_choc_av3 and zm_av3 - distance_choc_av3 <= zm and zm <= zm_av3 + distance_choc_av3:
life_av -= 1
flag_choc_av = 19
if xm_av3 - distance_choc_av3 <= xm and xm <= xm_av3:
handler.position_upd(-5,0)
elif xm_av3 <= xm and xm <= xm_av3 + distance_choc_av3:
handler.position_upd(5,0)
if zm_av3 - distance_choc_av3 <= zm and zm <= zm_av3:
handler.position_upd(0,-5)
elif zm_av3 <= zm and zm <= zm_av3 + distance_choc_av3:
handler.position_upd(0,5)
#print(life_av2+life_av3)
def draw():
#global body_rotation
#avatar.center.rotateToY(180)
#avatar.center.position(-5, 74.5, 1)
#global mv_tmp
#mv_tmp += 0.2
#avatar.pose()
#avatar2.pose()
avatar2.center.draw()
avatar.center.draw()
map1.building()
map1.mymap.draw()
map1.myecube.draw()
global flag_choc_av, life_av,flag_choc_av2, life_av2,flag_choc_av3, life_av3
#print(life_av)
flag_view = handler.view()
def read_inputs():
global mymouse, my, mx, rot, tilt, keep_running, xm, zm, mv_run, mv_run_diff, body_orientation, flag_jump, flag_view
if life_av > 0:
if not (flag_choc_av % 2):
if flag_view:
avatar.center.draw()
else:
pass
avatarstereo.center.draw()
else:
pass
#avatar1_3.center.draw()
k = mykeys.read() # Read Keyboard inputs
if k >-1:
if k == 119: #key w forward
zm+=1
mv_run += math.fabs(avatar_speed*2/3)
mv_run_diff = 1
body_orientation = 180
elif k == 115: #kry s back
zm+= -1
mv_run += math.fabs(avatar_speed*2/3)
mv_run_diff = 1
body_orientation = 0
elif k == 97: #key a left
xm+= -1
mv_run += math.fabs(avatar_speed*2/3)
mv_run_diff = 1
body_orientation = 90
elif k == 100: #key d right
xm+=1
mv_run += math.fabs(avatar_speed*2/3)
mv_run_diff = 1
body_orientation = 270
elif k == 99: #key c jump
flag_jump = 28
elif k == 111: #key c jump
view = flag_view
flag_view = not view
elif k == 112: #key p picture
pi3d.screenshot("forestWalk" + str(scshots) + ".jpg")
scshots += 1
elif k == 10: #key RETURN
mc = 0
elif k == 27: #Escape key to exit
print("***** EXIT *****")
DISPLAY.destroy()
keep_running = False
mykeys.close()
if USE_SERIAL:
ser.stop()
mymouse.stop()
DISPLAY.stop()
if life_av2 > 0:
if not (flag_choc_av2 % 2):
avatar2.center.draw()
else:
avatar2_3.center.draw()
elif k == ord('f'):
roll = 1.0
if life_av3 > 0:
if not (flag_choc_av3 % 2):
avatar3.center.draw()
else:
avatar3_3.center.draw()
mx, my = mymouse.velocity() #change to position() if Camera switched to absolute=True (default)
buttons = mymouse.button_status()
if not (life_av2+life_av3):
bulle.myplane.draw()
map1.draw()
rot = - mx * 0.8
tilt = my * 0.8
def camera_update():
global xm, ym, zm, xc, yc, zc, rot, tilt, norm, flag_view, stereo_rot, stereo_tilt, stereo_roll
global stereo_rot, stereo_tilt, stereo_roll
rot, tilt = handler.rotation()
xm, zm, body_orientation, mv, mv_diff, flag_view = handler.position()
roll = 0
if(USE_STEREO):
stereo_rot += rot
stereo_tilt += tilt
stereo_roll += roll
CAMERA.move_camera([xm, map1.mymap.calcHeight(xm, zm)+5, zm], stereo_rot, stereo_tilt, - stereo_roll)
#print(rot, stereo_rot, tilt, stereo_tilt)
#print(body_orientation)
#print(flag_view)
if flag_view:
tilt = 8
CAMERA.move_camera([xm, map1.height(xm, zm)+12, zm+camera_distance], rot+stereo_rot, -tilt-stereo_tilt, -stereo_roll)
else:
rot = -body_orientation+180
CAMERA.move_camera([xm, map1.height(xm, zm)+5, zm], rot + stereo_rot, -tilt - stereo_tilt, - stereo_roll)
stereo_rot = rot
stereo_tilt = tilt
stereo_roll = roll
for i in range(2):
CAMERA.start_capture(i)
@ -346,26 +336,38 @@ def camera_update():
else:
if flag_view:
camRad = [camera_distance, camera_distance, camera_distance]
#rot = -body_orientation+180
else:
camRad = [0, 0, 0]
#CAMERA.relocate(rot, tilt, point=[-5, 84.5, -0], distance=camRad)
xc, yc, zc = CAMERA.relocate(rot, tilt, point=[xm, map1.mymap.calcHeight(xm, zm)+5, zm], distance=camRad)
rot = -body_orientation+180
#tilt = 15
CAMERA.relocate(rot, -tilt, point=[xm, map1.height(xm, zm)+5, zm], distance=camRad)
draw()
print( xm, ym, zm, " ---- ", xc, yc, zc)
#if rot:
#print(rot, body_orientation, body_orientation_diff)
#CAMERA.relocate(rot, tilt, point=[-5, 84.5, -0], distance=camRad)
#tt, rrot = CAMERA.point_at()
#tt, rrot, rr = CAMERA.get_direction()
#print(tt, body_orientation)
#rot = 0
#body_orientation_diff = body_orientation
#CAMERA.rotateZ(roll)
# Main loop
while DISPLAY.loop_running() or keep_running:
read_inputs()
while DISPLAY.loop_running() and keep_running:
handler.mykeys.do_input_events()
keep_running = handler.read_exit()
if not keep_running:
DISPLAY.destroy()
DISPLAY.stop()
update_position()
update_avatar()
update_scenario()
camera_update()
#engine.stats()

View File

@ -0,0 +1,368 @@
#!/usr/bin/python
from __future__ import absolute_import, division, print_function, unicode_literals
import math,random
import pi3d
import avatars
import maps
import building
import objects
import os
#import sys
from serial_data import Serial_data
#sys.path.insert(0, "../python-vrzero")
from vrzero import engine
###### Select the mode here
USE_SERIAL = False # try the app without a serial connection, keyboard still work
USE_STEREO = False # Mode Stereoscopic
USE_TUNNEL = True # If mode stereo is on, use Tunnel effect
SHOW_STAT = False # Show FPS stat (Calibrated for Raspberry Pi)
# Change screen size to adapt your config
DEFAULT_SCREEN_WIDTH=1200
DEFAULT_SCREEN_HEIGHT=600
DEFAULT_EYE_SEPERATION=0.65
# height of the camera
DEFAULT_AVATAR_EYE_HEIGHT = 4.0
DEFAULT_AVATAR_MOVEMENT_SPEED = 0.6
# Select your map moon or forest
MAP = 'forest'
# Select your Avatars here (you can manualy add more)
AVATAR_1 = 'Link'
AVATAR_2 = 'Goku'
os.putenv('SDL_FBDEV', '/dev/fb0')
os.putenv('SDL_VIDEODRIVER', 'fbcon')
DISPLAY = pi3d.Display.create(w=DEFAULT_SCREEN_WIDTH, h=DEFAULT_SCREEN_HEIGHT, use_pygame=True)
DISPLAY.set_background(0.0,0.0,0.0,1)
DISPLAY.frames_per_second = 30
pi3d.Light(lightpos=(1, -1, -3), lightcol=(1.0, 1.0, 0.8), lightamb=(0.25, 0.2, 0.3))
# Initialize Camera
if(USE_STEREO):
shader_name = "barrel" if USE_TUNNEL else "uv_flat"
CAMERA = pi3d.StereoCam(separation=DEFAULT_EYE_SEPERATION, interlace=0, shader=shader_name)
else:
CAMERA = pi3d.Camera(absolute=False)
#========================================
# Create Hero & map, Select your avatars here
if AVATAR_1 == 'Link':
avatar = avatars.link()
elif AVATAR_1 == 'Cloud':
avatar = avatars.cloud()
elif AVATAR_1 == 'Lego':
avatar = avatars.lego()
elif AVATAR_1 == 'Roshi':
avatar = avatars.roshi()
elif AVATAR_1 == 'Goku':
avatar = avatars.goku()
elif AVATAR_1 == 'Goomba':
avatar = avatars.goomba()
if AVATAR_2 == 'Link':
avatar2 = avatars.link()
elif AVATAR_2 == 'Cloud':
avatar2 = avatars.cloud()
elif AVATAR_2 == 'Lego':
avatar2 = avatars.lego()
elif AVATAR_2 == 'Roshi':
avatar2 = avatars.roshi()
elif AVATAR_2 == 'Goku':
avatar2 = avatars.goku()
if MAP == 'forest':
map1 = maps.forest()
elif MAP == 'moon':
map1 = maps.moon()
bulle = objects.object()
#avatar
#step = [0.0, 0.0, 0.0]
xm = 0.0
zm = 0.0
ym = map1.mymap.calcHeight(xm, zm) + 9 + DEFAULT_AVATAR_EYE_HEIGHT
xc = 0.0
yc = 0.0
zc = 0.0
# camera position
rot = 0.0
tilt = -0.0
norm = None
crab = False
roll = 0.0
stereo_rot = 0.0
stereo_tilt = 0.0
stereo_roll = 0.0
# variables
synchro_serial=0
movement = 0
mv_tmp = 0
mv_run = 0
mv_run_diff = 0
avatar_speed = DEFAULT_AVATAR_MOVEMENT_SPEED
orientation = 0
camera_distance = -20
# Fetch key presses
mykeys = pi3d.Keyboard()
mymouse = pi3d.Mouse(restrict = False)
mymouse.start()
pos_armR = [0, 0, 0]
pos_forarmR = [0, 0, 0]
pos_armL = [0, 0, 0]
pos_forarmL = [0, 0, 0]
body_orientation = 0
flag_jump = 0
flag_view = True
jump_height = 28
timer =0
keep_running = True
def roger_handler(sensor, Euler0, Euler1, Euler2):
global pos_armR, pos_forarmR, pos_armL, pos_forarmL, timer, body_orientation, mv_run, mv_run_diff, xm, zm
timer += 1
print("Sensor:", sensor)
if timer == 13:
timer = 0
if sensor == 'A':
avatar.armL.rotateToZ(math.degrees(-Euler1))
avatar.armL.rotateToX(math.degrees(-Euler2))
avatar.armL.rotateToY(math.degrees(-Euler0))
#pos_armL = [Euler0, Euler1, Euler2]
#print("Bras : E0 = ", math.degrees(Euler0), " E1 = ", math.degrees(Euler1), " E2 = ", math.degrees(Euler2))
elif sensor == 'C':
avatar.armR.rotateToZ(math.degrees(-Euler1))
avatar.armR.rotateToX(math.degrees(-Euler2))
avatar.armR.rotateToY(math.degrees(-Euler0))
#pos_forarmR = [-Euler0 - pos_armL[0], -Euler0 - pos_armL[1], -Euler0 - pos_armL[2]]
elif sensor == 'D':
avatar.head.rotateToZ(math.degrees(-Euler1))
avatar.head.rotateToX(math.degrees(-Euler2))
avatar.head.rotateToY(math.degrees(-Euler0))
#if timer == 1:
# print(" Avant : E0 = ", math.degrees(Euler0), " E1 = ", math.degrees(Euler1), " E2 = ", math.degrees(Euler2))
elif sensor == 'J':
#print("JOY {:03.2f} {:03.2f}".format(Euler0, Euler1))
if Euler0 <= 128 and Euler1 <= 128:
body_orientation = 270 - Euler1 #
elif Euler0 >= 128 and Euler1 <= 128:
body_orientation = 90 + Euler1
elif Euler0 >= 128 and Euler1 >= 128:
body_orientation = -157 + Euler1
elif Euler0 <= 128 and Euler1 >= 128:
body_orientation = 360 - Euler0
#print(body_orientation)
if Euler0 >= 128:
Euler0 -= 255
if Euler1 >= 128:
Euler1 -= 255
joystick_v_axis_pos = Euler0/128
joystick_h_axis_pos = Euler1/128
#camera_tilt, camera_orientation= CAMERA.point_at()
#print("ORIENTATION : ", camera_orientation)
camera_orientation = 0
if math.fabs(joystick_v_axis_pos) > 0.1:
xm -= math.sin(math.pi/2+camera_orientation*20)*-joystick_v_axis_pos*avatar_speed
zm += math.cos(-math.pi/2+camera_orientation*20)*-joystick_v_axis_pos*avatar_speed
mv_run += math.fabs(joystick_v_axis_pos*avatar_speed*2/3)
if math.fabs(joystick_h_axis_pos) > 0.1:
xm -= math.cos(math.pi/2+(-camera_orientation*20))*-joystick_h_axis_pos*avatar_speed
zm += math.sin(-math.pi/2+(-camera_orientation*20))*-joystick_h_axis_pos*avatar_speed
mv_run += math.fabs(joystick_h_axis_pos*avatar_speed*2/3)
mv_run_diff = math.fabs(joystick_v_axis_pos*avatar_speed*2/3) + math.fabs(joystick_h_axis_pos*avatar_speed*2/3)
#print(xm, ym, zm, "Euler : ",joystick_v_axis_pos, joystick_h_axis_pos )
else:
print("unhandled sensor:", sensor)
# Implement Threading to read Serial
if(USE_SERIAL):
ser = Serial_data('ABCDEFJ', roger_handler)
ser.start()
#============================================================================================================
def update_position():
global xm, ym, zm, xc, yc, zc
ym = map1.mymap.calcHeight(xm, zm)
avatar.center.position(xm, ym, zm)
avatar2.center.position(-10, map1.mymap.calcHeight(-10, 15), 15)
#avatar2.center.position(-5, map1.mymap.calcHeight(-5, 5), 5)
bulle.myplane.position(-10, map1.mymap.calcHeight(-10, 15)+11, 15.2)
map1.myecube.position(xm, ym, zm)
def update_avatar():
global xm, ym, zm, mv_run, mv_run_diff, body_orientation, synchro_serial, flag_jump
# if we are moving
if(mv_run_diff > 0):
avatar.run(mv_run, mv_run_diff)
# if we are jumping
#if(flag_jump > 0):
# avatar.jump(flag_jump, xm, ym, zm, body_orientation)
# flag_jump -=1
synchro_serial=10
# if we are standing
if(synchro_serial == 1):
avatar.stand()
#avatar.pose()
avatar.center.rotateToY(body_orientation)
if (synchro_serial > 0):
synchro_serial -=1
mv_run_diff=0
def update_scenario():
global xm, ym, zm
#print(xm, ym, zm)
if -15 <= xm and xm <= -5 and 10 <= zm and zm <= 19:
if -13 <= xm and xm <= -10:
xm = -13
elif -10 <= xm and xm <= -7:
xm = -7
if 13 <= zm and zm <= 14.5:
zm = 13
elif 14.5 <= zm and zm <= 16:
zm = 16
bulle.myplane.draw()
def draw():
#global body_rotation
#avatar.center.rotateToY(180)
#avatar.center.position(-5, 74.5, 1)
#global mv_tmp
#mv_tmp += 0.2
#avatar.pose()
#avatar2.pose()
avatar2.center.draw()
avatar.center.draw()
map1.building()
map1.mymap.draw()
map1.myecube.draw()
def read_inputs():
global mymouse, my, mx, rot, tilt, keep_running, xm, zm, mv_run, mv_run_diff, body_orientation, flag_jump, flag_view
k = mykeys.read() # Read Keyboard inputs
if k >-1:
if k == 119: #key w forward
zm+=1
mv_run += math.fabs(avatar_speed*2/3)
mv_run_diff = 1
body_orientation = 180
elif k == 115: #kry s back
zm+= -1
mv_run += math.fabs(avatar_speed*2/3)
mv_run_diff = 1
body_orientation = 0
elif k == 97: #key a left
xm+= -1
mv_run += math.fabs(avatar_speed*2/3)
mv_run_diff = 1
body_orientation = 90
elif k == 100: #key d right
xm+=1
mv_run += math.fabs(avatar_speed*2/3)
mv_run_diff = 1
body_orientation = 270
elif k == 99: #key c jump
flag_jump = 28
elif k == 111: #key c jump
view = flag_view
flag_view = not view
elif k == 112: #key p picture
pi3d.screenshot("forestWalk" + str(scshots) + ".jpg")
scshots += 1
elif k == 10: #key RETURN
mc = 0
elif k == 27: #Escape key to exit
print("***** EXIT *****")
DISPLAY.destroy()
keep_running = False
mykeys.close()
if USE_SERIAL:
ser.stop()
mymouse.stop()
DISPLAY.stop()
elif k == ord('f'):
roll = 1.0
mx, my = mymouse.velocity() #change to position() if Camera switched to absolute=True (default)
buttons = mymouse.button_status()
rot = - mx * 0.8
tilt = my * 0.8
def camera_update():
global xm, ym, zm, xc, yc, zc, rot, tilt, norm, flag_view, stereo_rot, stereo_tilt, stereo_roll
if(USE_STEREO):
stereo_rot += rot
stereo_tilt += tilt
stereo_roll += roll
CAMERA.move_camera([xm, map1.mymap.calcHeight(xm, zm)+5, zm], stereo_rot, stereo_tilt, - stereo_roll)
for i in range(2):
CAMERA.start_capture(i)
draw()
CAMERA.end_capture(i)
CAMERA.draw()
else:
if flag_view:
camRad = [camera_distance, camera_distance, camera_distance]
else:
camRad = [0, 0, 0]
#CAMERA.relocate(rot, tilt, point=[-5, 84.5, -0], distance=camRad)
xc, yc, zc = CAMERA.relocate(rot, tilt, point=[xm, map1.mymap.calcHeight(xm, zm)+5, zm], distance=camRad)
draw()
print( xm, ym, zm, " ---- ", xc, yc, zc)
#CAMERA.rotateZ(roll)
# Main loop
while DISPLAY.loop_running() or keep_running:
read_inputs()
update_position()
update_avatar()
update_scenario()
camera_update()
#engine.stats()

View File

@ -192,17 +192,43 @@ class goomba(BaseAvatar):
def __init__(self):
super().__init__()
self.center = pi3d.Model(file_string="../Blender/goomba/goomba.obj")
self.center = pi3d.Model(file_string="../Blender/goomba/goomba/goomba.obj")
shader = pi3d.Shader("uv_flat")
self.center.set_shader(shader)
self.center.scale(0.1,0.1,0.1)
#self.center.scale(0.1,0.1,0.1)
self.center.scale(0.3,0.3,0.3)
def run(self, position, diff):
self.center.rotateToX(8.0 * math.sin(position))
self.center.rotateToZ(8.0 * math.sin(position))
self.center.rotateToX(12.0 * math.sin(position*2))
self.center.rotateToZ(12.0 * math.sin(position*3))
def stand(self):
self.body.rotateToX(0)
self.body.rotateToZ(0)
class goombaB(BaseAvatar):
def __init__(self):
super().__init__()
self.center = pi3d.Model(file_string="../Blender/goomba/goomba_blood/goomba.obj")
shader = pi3d.Shader("uv_bump")
self.center.set_shader(shader)
#self.center.scale(0.1,0.1,0.1)
self.center.scale(0.3,0.3,0.3)
def run(self, position, diff):
self.center.rotateToX(12.0 * math.sin(position*2))
self.center.rotateToZ(12.0 * math.sin(position*3))
def stand(self):
self.body.rotateToX(0)
self.body.rotateToZ(0)
class goombaD(BaseAvatar):
def __init__(self):
super().__init__()
self.center = pi3d.Model(file_string="../Blender/goomba/goomba_dead/goomba.obj")
shader = pi3d.Shader("uv_bump")
self.center.set_shader(shader)
self.center.scale(0.4,0.4,0.4)
class link(BaseAvatar):
def __init__(self):
@ -329,30 +355,134 @@ class link(BaseAvatar):
self.head.rotateToY(0)
self.head.rotateToX(0)
def jump(self, position, x, y, z, orientation):
positionJump = position
positionRun = 70
if orientation == 0:
z += - (14 -position/2)
elif orientation == 90:
x += -(14 -position/2)
elif orientation == 180:
z += (14 -position/2)
elif orientation == 270:
x += (14 -position/2)
if positionJump >= 14:
self.center.position(x, y + (7 - positionJump/4), z)
else :
self.center.position(x, y + (positionJump/4), z)
self.legR.rotateToX(25 * math.sin(positionRun))
self.legL.rotateToX(-25 * math.sin(positionRun))
self.footR.rotateToX(-20+ 20 * math.sin(positionRun))
self.footL.rotateToX(-20 -20 * math.sin(positionRun))
self.armL.rotateToZ(300)
self.armR.rotateToZ(60)
self.armR.rotateToY(35.0 * math.sin(positionRun))
self.armL.rotateToY(35.0 * math.sin(positionRun))
def jump(self, position):
self.armL.rotateToZ(60)
#self.armR.rotateToZ(300)
#self.armR.rotateToY(35.0 * math.sin(positionRun))
#self.armL.rotateToY(35.0 * math.sin(positionRun))
def cut(self, position):
#self.armL.rotateToZ(300)
self.armL.rotateToZ(300+30.0 * math.sin(position/4)) # half a move
self.armL.rotateToY(0+70.0 * math.sin(position/4)) # half a move
self.forarmL.rotateToY(0+70.0 * math.sin(position/4))
class linkstereo(BaseAvatar):
def __init__(self):
super().__init__()
self.center = pi3d.Model(file_string="../Blender/Zelda/Custom_Link/Link_full_butt.obj")
shader = pi3d.Shader("uv_flat")
self.center.set_shader(shader)
self.center.scale(0.6, 0.6, 0.6)
self.armR = pi3d.Model(file_string="../Blender/Zelda/Custom_Link/Link_armR.obj", cy=-8.6, cx=1, cz=-0.7)
self.armR.set_shader(shader)
self.forarmR = pi3d.Model(file_string="../Blender/Zelda/Custom_Link/Link_forarmR.obj", cy=-8.8, cx=2.8, cz=-0.7)
self.forarmR.set_shader(shader)
self.handR = pi3d.Model(file_string="../Blender/Zelda/Custom_Link/Link_handR.obj", cy=-8.8, cx=4.4, cz=-0.7)
self.handR.set_shader(shader)
self.armL = pi3d.Model(file_string="../Blender/Zelda/Custom_Link/Link_armL.obj", cy=-8.6, cx=-1, cz=-0.7)
self.armL.set_shader(shader)
self.forarmL = pi3d.Model(file_string="../Blender/Zelda/Custom_Link/Link_forarmL.obj", cy=-8.8, cx=-2.8, cz=-0.7)
self.forarmL.set_shader(shader)
self.handL = pi3d.Model(file_string="../Blender/Zelda/Custom_Link/Link_handL.obj", cy=-8.8, cx=-4.4, cz=-0.7)
self.handL.set_shader(shader)
self.center.add_child(self.armR)
self.armR.add_child(self.forarmR)
self.forarmR.add_child(self.handR)
self.center.add_child(self.armL)
self.armL.add_child(self.forarmL)
self.forarmL.add_child(self.handL)
def run(self, position, diff):
#compute motion
if diff <= 0.25:
self.legR.rotateToX(15 * math.sin(position))
self.legL.rotateToX(-15 * math.sin(position))
self.footR.rotateToX(-15+ 15 * math.sin(position))
self.footL.rotateToX(-15 -15 * math.sin(position))
self.armL.rotateToZ(280)
self.armR.rotateToZ(80)
self.armR.rotateToY(25.0 * math.sin(position))
self.armL.rotateToY(25.0 * math.sin(position))
self.body.rotateToY(10.0 * math.sin(position))
self.head.rotateToY(-8.0 * math.sin(position))
else:
positionRun = position
self.legR.rotateToX(25 * math.sin(positionRun))
self.legL.rotateToX(-25 * math.sin(positionRun))
self.footR.rotateToX(-20+ 20 * math.sin(positionRun))
self.footL.rotateToX(-20 -20 * math.sin(positionRun))
self.armL.rotateToZ(300)
self.armR.rotateToZ(60)
self.armR.rotateToY(35.0 * math.sin(positionRun))
self.armL.rotateToY(35.0 * math.sin(positionRun))
self.body.rotateToY(10.0 * math.sin(positionRun))
self.body.rotateToX(-15.0)
self.head.rotateToY(-8.0 * math.sin(positionRun))
self.head.rotateToX(10.0)
def stand(self):
self.legR.rotateToX(0)
self.legL.rotateToX(0)
self.footR.rotateToX(0)
self.footL.rotateToX(0)
self.armL.rotateToZ(280)
self.armR.rotateToZ(80)
self.armR.rotateToY(0)
self.armL.rotateToY(0)
self.body.rotateToY(0)
self.body.rotateToX(0)
self.head.rotateToY(0)
self.head.rotateToX(0)
def pose(self):
self.legR.rotateToX(15)
self.legL.rotateToX(-15)
self.footR.rotateToX(-10)
self.footL.rotateToX(0)
#self.armL.rotateToZ(280)
self.armL.rotateToZ(40)
self.forarmL.rotateToY(10)
self.armR.rotateToX(30)
self.armR.rotateToY(280)
#self.armR.rotateToZ(280)
self.forarmR.rotateToZ(90)
self.forarmR.rotateToY(300)
self.body.rotateToY(0)
self.body.rotateToX(0)
self.head.rotateToY(0)
self.head.rotateToX(0)
def jump(self, position):
self.armL.rotateToZ(60)
#self.armR.rotateToZ(300)
#self.armR.rotateToY(35.0 * math.sin(positionRun))
#self.armL.rotateToY(35.0 * math.sin(positionRun))
def cut(self, position):
#self.armL.rotateToZ(300)
self.armL.rotateToZ(300+30.0 * math.sin(position/4)) # half a move
self.armL.rotateToY(0+70.0 * math.sin(position/4)) # half a move
self.forarmL.rotateToY(0+70.0 * math.sin(position/4))
class goku(BaseAvatar):
@ -489,7 +619,13 @@ class goku(BaseAvatar):
def jump(self, position):
self.armL.rotateToX(20 * math.sin(position))
self.armR.rotateToX(-20 * math.sin(position))
#self.armR.rotateToX(-20 * math.sin(position))
def cut(self, position):
#self.armL.rotateToZ(300)
self.armL.rotateToZ(300+30.0 * math.sin(position/4)) # half a move
self.armL.rotateToY(0+70.0 * math.sin(position/4)) # half a move
self.handL.rotateToY(0+70.0 * math.sin(position/4))
class guy(BaseAvatar):

245
src/inputs.py 100755
View File

@ -0,0 +1,245 @@
#!/bin/python
import math,random
import pi3d
import inputs
from serial_data import Serial_data
# Serial DOF
#pos_armR = [0, 0, 0]
#pos_forarmR = [0, 0, 0]
#pos_armL = [0, 0, 0]
#pos_forarmL = [0, 0, 0]
class handlers:
def __init__(self):
self.rot = 0
self.tilt = 0
self.x = 0
self.z = 0
self.body_orientation = 180
self.mv_run = 0
self.mv_run_diff = 0
self.avatar_speed = 2
self.flag_jump = 0
self.flag_cut = 0
self.ser = 0
self.cpt_view = 0
self.flag_view = True
#mykeys = pi3d.Keyboard(use_curses=True)
self.mykeys = pi3d.InputEvents(self.key_handler_func, self.mouse_handler_func, self.joystick_handler_func)
self.keep_running = True
######### Return the values ##########
def rotation(self):
return(self.rot, self.tilt)
def position_upd(self, x, z):
self.x += x
self.z += z
def position(self):
return(self.x, self.z, self.body_orientation, self.mv_run, self.mv_run_diff, self.flag_view)
def view(self):
return(self.flag_view)
def action_update(self):
cut = self.flag_cut
jump = self.flag_jump
if self.flag_cut:
self.flag_cut-=1
if self.flag_jump:
self.flag_jump-=1
return(jump, cut)
def actionRead(self):
return(self.flag_jump, self.flag_cut)
######### Fonctions ##########
def roger_handler(self, sensor, Euler0, Euler1, Euler2):
#timer += 1
#print("SENSOR:", sensor)
#if timer == 13:
# timer = 0
SIMPLE_MOVE = True
if SIMPLE_MOVE:
if sensor == 'A':
if flag_cut < 4 and math.fabs(Euler1) + math.fabs(Euler2) >= Euler_diff + 0.3:
flag_cut = 12
#print(" E1 = ", Euler1, " E2 = ", Euler2)
#print(math.fabs(Euler1) + math.fabs(Euler2))
Euler_diff = math.fabs(Euler1) + math.fabs(Euler2)
elif sensor == 'C':
if flag_cut < 4 and math.fabs(Euler1) + math.fabs(Euler2) >= Euler_diff + 0.3:
flag_cut = 12
Euler_diff = math.fabs(Euler1) + math.fabs(Euler2)
#avatar.armR.rotateToZ(math.degrees(-Euler1))
#avatar.armR.rotateToX(math.degrees(-Euler2))
#avatar.armR.rotateToY(math.degrees(-Euler0))
#pos_forarmR = [-Euler0 - pos_armL[0], -Euler0 - pos_armL[1], -Euler0 - pos_armL[2]]
elif sensor == 'D':
avatar.head.rotateToZ(math.degrees(-Euler1))
avatar.head.rotateToX(math.degrees(-Euler2))
avatar.head.rotateToY(math.degrees(-Euler0))
else:
if sensor == 'A':
avatar.armL.rotateToZ(math.degrees(-Euler1))
avatar.armL.rotateToX(math.degrees(-Euler2))
avatar.armL.rotateToY(math.degrees(-Euler0))
#pos_armL = [Euler0, Euler1, Euler2]
#print("Bras : E0 = ", math.degrees(Euler0), " E1 = ", math.degrees(Euler1), " E2 = ", math.degrees(Euler2))
elif sensor == 'C':
avatar.armR.rotateToZ(math.degrees(-Euler1))
avatar.armR.rotateToX(math.degrees(-Euler2))
avatar.armR.rotateToY(math.degrees(-Euler0))
#pos_forarmR = [-Euler0 - pos_armL[0], -Euler0 - pos_armL[1], -Euler0 - pos_armL[2]]
elif sensor == 'D':
avatar.head.rotateToZ(math.degrees(-Euler1))
avatar.head.rotateToX(math.degrees(-Euler2))
avatar.head.rotateToY(math.degrees(-Euler0))
#if timer == 1:
# print(" Avant : E0 = ", math.degrees(Euler0), " E1 = ", math.degrees(Euler1), " E2 = ", math.degrees(Euler2))
if sensor == 'J':
#print("JOY {:03.2f} {:03.2f}".format(Euler0, Euler1))
#print(Euler2)
if Euler2 == '0':
if Euler0 <= 128 and Euler1 <= 128:
self.body_orientation = 270 - Euler1
elif Euler0 >= 128 and Euler1 <= 128:
self.body_orientation = 90 + Euler1
elif Euler0 >= 128 and Euler1 >= 128:
self.body_orientation = -157 + Euler1
elif Euler0 <= 128 and Euler1 >= 128:
self.body_orientation = 360 - Euler0
#print(body_orientation)
if Euler0 >= 128:
Euler0 -= 255
if Euler1 >= 128:
Euler1 -= 255
joystick_v_axis_pos = Euler0/128
joystick_h_axis_pos = Euler1/128
#camera_tilt, camera_orientation= CAMERA.point_at()
#print("ORIENTATION : ", camera_orientation)
camera_orientation = 0
if math.fabs(joystick_v_axis_pos) > 0.1:
self.x -= math.sin(math.pi/2+camera_orientation*20)*-joystick_v_axis_pos*self.avatar_speed
self.z += math.cos(-math.pi/2+camera_orientation*20)*-joystick_v_axis_pos*self.avatar_speed
self.mv_run += math.fabs(joystick_v_axis_pos*self.avatar_speed*2/3)
if math.fabs(joystick_h_axis_pos) > 0.1:
self.x -= math.cos(math.pi/2+(-camera_orientation*20))*-joystick_h_axis_pos*self.avatar_speed
self.z += math.sin(-math.pi/2+(-camera_orientation*20))*-joystick_h_axis_pos*self.avatar_speed
self.mv_run += math.fabs(joystick_h_axis_pos*self.avatar_speed*2/3)
self.mv_run_diff = math.fabs(joystick_v_axis_pos*self.avatar_speed*2/3) + math.fabs(joystick_h_axis_pos*self.avatar_speed*2/3)
#print(xm, ym, zm, "Euler : ",joystick_v_axis_pos, joystick_h_axis_pos )
else:
self.cpt_view += 1
if self.cpt_view == 2:
view = self.flag_view
self.flag_view = not view
self.cpt_view = 0
else:
pass
#print("sensor:", sensor)
def serial(self):
self.ser = Serial_data('ABCDEFJ', self.roger_handler)
self.ser.start()
def joystick_handler_func(self, sourceType, sourceIndex, x1, y1, z1, x2, y2, z2, hatx, haty):
#print(x1, y1)
#global rot, tilt
#mymouse.velocity() #change to position() if Camera switched to absolute=True (default)
#buttons = #mymouse.button_status()
self.rot = - x1 * 200
self.tilt = y1 * 200
def mouse_handler_func(self, sourceType, sourceIndex, delta_x, delta_y, v, h):
pass
#print("ENTER MOUSE")
def key_handler_func(self, sourceType, sourceIndex, key, value):
#k = mykeys.read() # Read Keyboard inputs
#print(key)
if key >-1:
if key == pi3d.event.Event.key_to_code('KEY_W'):#119: #key z forward
self.z+=1
self.mv_run += math.fabs(self.avatar_speed*1/2)
self.mv_run_diff = 1
self.body_orientation = 180
elif key == pi3d.event.Event.key_to_code('KEY_S'): #115: #kry s back
self.z+= -1
self.mv_run += math.fabs(self.avatar_speed*1/2)
self.mv_run_diff = 1
self.body_orientation = 0
elif key == pi3d.event.Event.key_to_code('KEY_A'): #97: #key a left
self.x+= -1
self.mv_run += math.fabs(self.avatar_speed*1/2)
self.mv_run_diff = 1
self.body_orientation = 90
elif key == pi3d.event.Event.key_to_code('KEY_D'):#100: #key d right
self.x+=1
self.mv_run += math.fabs(self.avatar_speed*1/2)
self.mv_run_diff = 1
self.body_orientation = 270
elif key == pi3d.event.Event.key_to_code('KEY_C'): #99: #key c jump
if not self.flag_jump:
self.flag_jump = 25
elif key == pi3d.event.Event.key_to_code('KEY_V'): #118: #key w cut
self.flag_cut = 12
#print("eee")
elif key == pi3d.event.Event.key_to_code('KEY_O'): #111: #key o
view = self.flag_view
self.flag_view = not view
elif key == pi3d.event.Event.key_to_code('KEY_P'): #112: #key p picture
pi3d.screenshot("forestWalk" + str(scshots) + ".jpg")
scshots += 1
elif key == 10: #key RETURN
mc = 0
elif key == pi3d.event.Event.key_to_code('KEY_ESC'): #Escape key to exit
print("***** EXIT *****")
#os.system('xset r on')
self.keep_running = False
#mykeys.close()
#if USE_SERIAL:
self.ser.stop()
#mymouse.stop()
#DISPLAY.destroy()
#DISPLAY.stop()
elif key == ord('f'):
roll = 1.0
def read_exit(self):
return self.keep_running

View File

@ -4,6 +4,38 @@
import pi3d
import math,random
px = -1.0
py = 0.0
pz = 114.0
class templeoftime(object):
def __init__(self):
flatsh = pi3d.Shader("uv_flat")
self.building = pi3d.Model(file_string="../Blender/Map/Temple_of_Time/TempleofTime.obj", sx=0.2, sy=0.2, sz=0.2)
self.building.set_shader(flatsh)
def draw(self):
self.building.draw()
def height(self, x, z):
global px, py, pz
if pz + 12 < z and pz + z < 160:
if px + -23 < x and x < px + 23 and pz + 77 < z and z < pz + 120:
return 6.4
else:
return 3.2
elif px + -11 < x and x < px + 12 and pz + -1 <= z:
return 3.2
elif px + -7 < x and x < px + 7 and pz + -8 < z and z < pz + -1:
return 4
elif px + -8 < x and x < px + 8 and pz + -67 < z and z < pz + -53:
return 1.6
else:
return 0
def update_pos(self, x, z):
self.building.position(px, py, pz)
class forest(object):
@ -11,9 +43,12 @@ class forest(object):
# load shader
shader = pi3d.Shader("uv_bump")
shinesh = pi3d.Shader("uv_reflect")
#shinesh = pi3d.Shader("uv_reflect")
flatsh = pi3d.Shader("uv_flat")
tree1img = pi3d.Texture("../textures/tree1.png")
tree2img = pi3d.Texture("../textures/tree2.png")
hb2img = pi3d.Texture("../textures/hornbeam2.png")
bumpimg = pi3d.Texture("../textures/grasstile_n.jpg")
reflimg = pi3d.Texture("../textures/stars.jpg")
floorimg = pi3d.Texture("../textures/floor_nm.jpg")
@ -21,7 +56,6 @@ class forest(object):
FOG = ((0.3, 0.3, 0.4, 0.8), 650.0)
TFOG = ((0.2, 0.24, 0.22, 1.0), 150.0)
#myecube = pi3d.EnvironmentCube(900.0,"HALFCROSS")
ectex=pi3d.loadECfiles("../textures/ecubes","sbox")
self.myecube = pi3d.EnvironmentCube(size=900.0, maptype="FACES", name="cube")
self.myecube.set_draw_details(flatsh, ectex)
@ -36,13 +70,60 @@ class forest(object):
divx=32, divy=32)
self.mymap.set_draw_details(shader, [mountimg1, bumpimg, reflimg], 128.0, 0.0)
self.mymap.set_fog(*FOG)
self.mymap.position(0.0, 0.0, 0.0)
self.building = pi3d.Model(file_string="../models/ConferenceHall/conferencehall.egg", name="Hall", sx=0.1, sy=0.1, sz=0.1)
self.building.set_shader(flatsh)
#Create tree models
treeplane = pi3d.Plane(w=4.0, h=5.0)
treemodel1 = pi3d.MergeShape(name="baretree")
treemodel1.add(treeplane.buf[0], 0,0,0)
treemodel1.add(treeplane.buf[0], 0,0,0, 0,90,0)
treemodel2 = pi3d.MergeShape(name="bushytree")
treemodel2.add(treeplane.buf[0], 0,0,0)
treemodel2.add(treeplane.buf[0], 0,0,0, 0,60,0)
treemodel2.add(treeplane.buf[0], 0,0,0, 0,120,0)
#Scatter them on map using Merge shape's cluster function
self.mytrees1 = pi3d.MergeShape(name="trees1")
self.mytrees1.cluster(treemodel1.buf[0], self.mymap,0.0,0.0,200.0,200.0,20,"",8.0,3.0)
self.mytrees1.set_draw_details(flatsh, [tree2img], 0.0, 0.0)
self.mytrees1.set_fog(*TFOG)
self.mytrees2 = pi3d.MergeShape(name="trees2")
self.mytrees2.cluster(treemodel2.buf[0], self.mymap,0.0,0.0,200.0,200.0,20,"",6.0,3.0)
self.mytrees2.set_draw_details(flatsh, [tree1img], 0.0, 0.0)
self.mytrees2.set_fog(*TFOG)
self.mytrees3 = pi3d.MergeShape(name="trees3")
self.mytrees3.cluster(treemodel2, self.mymap,0.0,0.0,300.0,300.0,20,"",4.0,2.0)
self.mytrees3.set_draw_details(flatsh, [hb2img], 0.0, 0.0)
self.mytrees3.set_fog(*TFOG)
#screenshot number
scshots = 1
def building(self):
pass
def height(self, x, z):
if -40 < x and x < 50 and -40 < z and z < 40:
return 19
else:
return self.mymap.calcHeight(x, z)
def draw(self):
self.mymap.draw()
self.building.draw()
self.myecube.draw()
#self.mytrees1.draw()
#self.mytrees2.draw()
#self.mytrees3.draw()
def update_pos(self, x, z):
self.myecube.position(x, self.height(x, z), z)
self.mymap.position(-360.0, 0.0, 180.0)
self.building.position(0, 19, 0)
class moon(object):

Some files were not shown because too many files have changed in this diff Show More