commit d321ff095faa97d3ab89140b286f4c41b8afb9cb Author: Jacob Parker Date: Thu Aug 11 22:09:58 2011 -0400 initial commit diff --git a/can.obj b/can.obj new file mode 100644 index 0000000..82c734d --- /dev/null +++ b/can.obj @@ -0,0 +1,1320 @@ +# Blender v2.56 (sub 0) OBJ File: 'can.blend' +# www.blender.org +mtllib can.mtl +o Cube +v 2.366013 3.218951 -0.000000 +v 2.366013 -3.821129 0.000000 +v 1.890025 3.996727 -0.000000 +v 1.862036 4.202609 -0.000000 +v 0.000001 4.202610 -0.000000 +v 1.862036 4.394719 -0.000000 +v 1.919669 4.394719 -0.000000 +v 1.919669 4.202609 -0.000000 +v 2.327710 -3.932325 0.000000 +v 2.106900 -4.053869 0.000000 +v -0.000000 -3.966293 0.000000 +v 1.731395 -4.086929 0.000000 +v 2.020605 -4.086929 0.000000 +v 1.963836 -4.227372 0.000000 +v 1.800246 -4.227372 0.000000 +v 1.885232 -4.261679 0.000000 +v 0.679241 -3.980127 0.000000 +v 1.435063 -4.016935 0.000000 +v 1.386165 -4.016935 0.371422 +v 0.656096 -3.980127 0.175800 +v 1.820994 -4.261679 0.487934 +v 1.738904 -4.227372 0.465938 +v 1.896920 -4.227372 0.508278 +v 1.951755 -4.086929 0.522971 +v 1.672399 -4.086929 0.448118 +v -0.000000 -3.966293 0.000000 +v 2.035109 -4.053869 0.545306 +v 2.248395 -3.932325 0.602456 +v 1.854258 4.202609 0.496847 +v 1.854258 4.394719 0.496847 +v 1.798589 4.394719 0.481930 +v 0.000001 4.202610 -0.000000 +v 1.798589 4.202609 0.481930 +v 1.825624 3.996727 0.489174 +v 2.285393 -3.821129 0.612369 +v 2.285393 3.218951 0.612369 +v 2.049027 3.218951 1.183006 +v 2.049027 -3.821129 1.183006 +v 1.636810 3.996727 0.945012 +v 1.612571 4.202609 0.931018 +v 0.000001 4.202610 0.000000 +v 1.612571 4.394719 0.931018 +v 1.662482 4.394719 0.959834 +v 1.662482 4.202609 0.959834 +v 2.015856 -3.932325 1.163855 +v 1.824629 -4.053869 1.053450 +v -0.000000 -3.966293 -0.000000 +v 1.499432 -4.086929 0.865698 +v 1.749895 -4.086929 1.010303 +v 1.700732 -4.227372 0.981918 +v 1.559059 -4.227372 0.900123 +v 1.632659 -4.261679 0.942616 +v 0.588240 -3.980127 0.339620 +v 1.242801 -4.016935 0.717532 +v 1.014743 -4.016935 1.014743 +v 0.480296 -3.980127 0.480296 +v 1.333060 -4.261679 1.333061 +v 1.272966 -4.227372 1.272967 +v 1.388642 -4.227372 1.388642 +v 1.428783 -4.086929 1.428784 +v 1.224281 -4.086929 1.224281 +v -0.000000 -3.966293 -0.000000 +v 1.489803 -4.053869 1.489803 +v 1.645939 -3.932325 1.645940 +v 1.357411 4.202609 1.357411 +v 1.357411 4.394719 1.357411 +v 1.316658 4.394719 1.316658 +v 0.000000 4.202610 0.000000 +v 1.316658 4.202609 1.316658 +v 1.336450 3.996727 1.336450 +v 1.673023 -3.821129 1.673024 +v 1.673023 3.218951 1.673023 +v 1.183006 3.218951 2.049026 +v 1.183006 -3.821129 2.049027 +v 0.945012 3.996727 1.636810 +v 0.931018 4.202609 1.612571 +v 0.000000 4.202610 0.000000 +v 0.931018 4.394719 1.612571 +v 0.959834 4.394719 1.662482 +v 0.959834 4.202609 1.662482 +v 1.163855 -3.932325 2.015856 +v 1.053450 -4.053869 1.824629 +v -0.000000 -3.966293 -0.000000 +v 0.865698 -4.086929 1.499432 +v 1.010302 -4.086929 1.749895 +v 0.981918 -4.227372 1.700732 +v 0.900123 -4.227372 1.559059 +v 0.942616 -4.261679 1.632659 +v 0.339620 -3.980127 0.588240 +v 0.717532 -4.016935 1.242801 +v 0.371422 -4.016935 1.386165 +v 0.175800 -3.980127 0.656096 +v 0.487934 -4.261679 1.820995 +v 0.465938 -4.227372 1.738905 +v 0.508278 -4.227372 1.896920 +v 0.522971 -4.086929 1.951755 +v 0.448118 -4.086929 1.672399 +v 0.000000 -3.966293 -0.000000 +v 0.545305 -4.053869 2.035109 +v 0.602455 -3.932325 2.248395 +v 0.496847 4.202609 1.854257 +v 0.496847 4.394719 1.854257 +v 0.481930 4.394719 1.798589 +v 0.000000 4.202610 0.000000 +v 0.481930 4.202609 1.798589 +v 0.489174 3.996727 1.825624 +v 0.612369 -3.821129 2.285393 +v 0.612369 3.218951 2.285392 +v -0.000000 3.218951 2.366012 +v -0.000000 -3.821129 2.366012 +v -0.000000 3.996727 1.890025 +v -0.000000 4.202609 1.862036 +v 0.000000 4.202610 0.000000 +v -0.000000 4.394719 1.862036 +v -0.000000 4.394719 1.919668 +v -0.000000 4.202609 1.919668 +v -0.000000 -3.932325 2.327710 +v -0.000000 -4.053869 2.106899 +v 0.000000 -3.966293 -0.000000 +v -0.000000 -4.086929 1.731395 +v -0.000000 -4.086929 2.020605 +v -0.000000 -4.227372 1.963836 +v -0.000000 -4.227372 1.800246 +v -0.000000 -4.261679 1.885233 +v -0.000000 -3.980127 0.679241 +v -0.000000 -4.016935 1.435063 +v -0.371422 -4.016935 1.386165 +v -0.175800 -3.980127 0.656096 +v -0.487934 -4.261679 1.820995 +v -0.465938 -4.227372 1.738904 +v -0.508279 -4.227372 1.896920 +v -0.522971 -4.086929 1.951755 +v -0.448118 -4.086929 1.672399 +v 0.000000 -3.966293 -0.000000 +v -0.545306 -4.053869 2.035109 +v -0.602456 -3.932325 2.248395 +v -0.496847 4.202609 1.854257 +v -0.496847 4.394719 1.854257 +v -0.481931 4.394719 1.798589 +v -0.000000 4.202610 0.000000 +v -0.481931 4.202609 1.798589 +v -0.489175 3.996727 1.825624 +v -0.612369 -3.821129 2.285392 +v -0.612369 3.218951 2.285392 +v -1.183006 3.218951 2.049026 +v -1.183006 -3.821129 2.049026 +v -0.945013 3.996727 1.636809 +v -0.931018 4.202609 1.612570 +v -0.000000 4.202610 0.000000 +v -0.931018 4.394719 1.612570 +v -0.959835 4.394719 1.662482 +v -0.959835 4.202609 1.662482 +v -1.163855 -3.932325 2.015856 +v -1.053450 -4.053869 1.824628 +v 0.000000 -3.966293 0.000000 +v -0.865698 -4.086929 1.499432 +v -1.010303 -4.086929 1.749895 +v -0.981918 -4.227372 1.700732 +v -0.900123 -4.227372 1.559059 +v -0.942616 -4.261679 1.632659 +v -0.339620 -3.980127 0.588240 +v -0.717532 -4.016935 1.242801 +v -1.014743 -4.016935 1.014743 +v -0.480296 -3.980127 0.480296 +v -1.333061 -4.261679 1.333061 +v -1.272967 -4.227372 1.272966 +v -1.388642 -4.227372 1.388642 +v -1.428784 -4.086929 1.428783 +v -1.224282 -4.086929 1.224281 +v 0.000000 -3.966293 0.000000 +v -1.489803 -4.053869 1.489802 +v -1.645940 -3.932325 1.645939 +v -1.357411 4.202609 1.357410 +v -1.357411 4.394719 1.357410 +v -1.316659 4.394719 1.316658 +v -0.000000 4.202610 0.000000 +v -1.316659 4.202609 1.316658 +v -1.336450 3.996727 1.336449 +v -1.673023 -3.821129 1.673023 +v -1.673023 3.218951 1.673023 +v -2.049026 3.218951 1.183005 +v -2.049026 -3.821129 1.183006 +v -1.636810 3.996727 0.945012 +v -1.612571 4.202609 0.931018 +v -0.000000 4.202610 0.000000 +v -1.612571 4.394719 0.931018 +v -1.662482 4.394719 0.959834 +v -1.662482 4.202609 0.959834 +v -2.015856 -3.932325 1.163855 +v -1.824629 -4.053869 1.053449 +v 0.000000 -3.966293 0.000000 +v -1.499432 -4.086929 0.865698 +v -1.749895 -4.086929 1.010302 +v -1.700732 -4.227372 0.981918 +v -1.559059 -4.227372 0.900123 +v -1.632659 -4.261679 0.942616 +v -0.588240 -3.980127 0.339620 +v -1.242802 -4.016935 0.717532 +v -1.386165 -4.016935 0.371422 +v -0.656096 -3.980127 0.175801 +v -1.820995 -4.261679 0.487934 +v -1.738904 -4.227372 0.465938 +v -1.896920 -4.227372 0.508278 +v -1.951755 -4.086929 0.522971 +v -1.672399 -4.086929 0.448118 +v 0.000000 -3.966293 0.000000 +v -2.035109 -4.053869 0.545305 +v -2.248395 -3.932325 0.602455 +v -1.854258 4.202609 0.496846 +v -1.854258 4.394719 0.496846 +v -1.798589 4.394719 0.481930 +v -0.000001 4.202610 0.000000 +v -1.798589 4.202609 0.481930 +v -1.825624 3.996727 0.489174 +v -2.285392 -3.821129 0.612369 +v -2.285392 3.218951 0.612368 +v -2.366012 3.218951 -0.000001 +v -2.366012 -3.821129 -0.000000 +v -1.890025 3.996727 -0.000001 +v -1.862036 4.202609 -0.000001 +v -0.000001 4.202610 -0.000000 +v -1.862036 4.394719 -0.000001 +v -1.919669 4.394719 -0.000000 +v -1.919669 4.202609 -0.000000 +v -2.327710 -3.932325 -0.000000 +v -2.106899 -4.053869 -0.000001 +v 0.000000 -3.966293 0.000000 +v -1.731395 -4.086929 -0.000000 +v -2.020605 -4.086929 -0.000000 +v -1.963836 -4.227372 -0.000000 +v -1.800246 -4.227372 -0.000001 +v -1.885232 -4.261679 -0.000000 +v -0.679241 -3.980127 0.000000 +v -1.435063 -4.016935 -0.000000 +v -1.386165 -4.016935 -0.371422 +v -0.656096 -3.980127 -0.175800 +v -1.820994 -4.261679 -0.487934 +v -1.738904 -4.227372 -0.465939 +v -1.896920 -4.227372 -0.508279 +v -1.951754 -4.086929 -0.522972 +v -1.672399 -4.086929 -0.448118 +v 0.000000 -3.966293 0.000000 +v -2.035108 -4.053869 -0.545306 +v -2.248395 -3.932325 -0.602456 +v -1.854257 4.202609 -0.496847 +v -1.854257 4.394719 -0.496847 +v -1.798589 4.394719 -0.481931 +v -0.000001 4.202610 -0.000000 +v -1.798589 4.202609 -0.481931 +v -1.825624 3.996727 -0.489175 +v -2.285392 -3.821129 -0.612369 +v -2.285392 3.218951 -0.612370 +v -2.049026 3.218951 -1.183006 +v -2.049026 -3.821129 -1.183006 +v -1.636810 3.996727 -0.945013 +v -1.612570 4.202609 -0.931019 +v -0.000001 4.202610 -0.000000 +v -1.612570 4.394719 -0.931019 +v -1.662482 4.394719 -0.959835 +v -1.662482 4.202609 -0.959835 +v -2.015856 -3.932325 -1.163856 +v -1.824628 -4.053869 -1.053450 +v 0.000000 -3.966293 0.000000 +v -1.499432 -4.086929 -0.865698 +v -1.749895 -4.086929 -1.010303 +v -1.700732 -4.227372 -0.981919 +v -1.559058 -4.227372 -0.900124 +v -1.632659 -4.261679 -0.942616 +v -0.588240 -3.980127 -0.339620 +v -1.242801 -4.016935 -0.717532 +v -1.014743 -4.016935 -1.014743 +v -0.480296 -3.980127 -0.480296 +v -1.333060 -4.261679 -1.333061 +v -1.272966 -4.227372 -1.272967 +v -1.388641 -4.227372 -1.388642 +v -1.428783 -4.086929 -1.428784 +v -1.224281 -4.086929 -1.224282 +v 0.000000 -3.966293 0.000000 +v -1.489802 -4.053869 -1.489803 +v -1.645939 -3.932325 -1.645940 +v -1.357410 4.202609 -1.357411 +v -1.357410 4.394719 -1.357411 +v -1.316658 4.394719 -1.316659 +v -0.000000 4.202610 -0.000001 +v -1.316658 4.202609 -1.316659 +v -1.336449 3.996727 -1.336450 +v -1.673023 -3.821129 -1.673023 +v -1.673023 3.218951 -1.673023 +v -1.183005 3.218951 -2.049027 +v -1.183005 -3.821129 -2.049026 +v -0.945012 3.996727 -1.636810 +v -0.931017 4.202609 -1.612571 +v -0.000000 4.202610 -0.000001 +v -0.931017 4.394719 -1.612571 +v -0.959834 4.394719 -1.662482 +v -0.959834 4.202609 -1.662482 +v -1.163854 -3.932325 -2.015856 +v -1.053449 -4.053869 -1.824629 +v 0.000000 -3.966293 0.000000 +v -0.865697 -4.086929 -1.499432 +v -1.010302 -4.086929 -1.749895 +v -0.981917 -4.227372 -1.700732 +v -0.900122 -4.227372 -1.559059 +v -0.942616 -4.261679 -1.632659 +v -0.339620 -3.980127 -0.588240 +v -0.717531 -4.016935 -1.242802 +v -0.371421 -4.016935 -1.386165 +v -0.175800 -3.980127 -0.656096 +v -0.487933 -4.261679 -1.820994 +v -0.465937 -4.227372 -1.738904 +v -0.508277 -4.227372 -1.896920 +v -0.522970 -4.086929 -1.951755 +v -0.448117 -4.086929 -1.672399 +v -0.000000 -3.966293 0.000000 +v -0.545304 -4.053869 -2.035108 +v -0.602455 -3.932325 -2.248395 +v -0.496846 4.202609 -1.854258 +v -0.496846 4.394719 -1.854258 +v -0.481930 4.394719 -1.798589 +v -0.000000 4.202610 -0.000001 +v -0.481930 4.202609 -1.798589 +v -0.489174 3.996727 -1.825625 +v -0.612368 -3.821129 -2.285392 +v -0.612368 3.218951 -2.285392 +v 0.000001 3.218951 -2.366012 +v 0.000001 -3.821129 -2.366011 +v 0.000001 3.996727 -1.890025 +v 0.000001 4.202609 -1.862036 +v -0.000000 4.202610 -0.000001 +v 0.000001 4.394719 -1.862036 +v 0.000001 4.394719 -1.919669 +v 0.000001 4.202609 -1.919669 +v 0.000001 -3.932325 -2.327710 +v 0.000001 -4.053869 -2.106899 +v -0.000000 -3.966293 0.000000 +v 0.000001 -4.086929 -1.731395 +v 0.000001 -4.086929 -2.020605 +v 0.000001 -4.227372 -1.963836 +v 0.000001 -4.227372 -1.800246 +v 0.000001 -4.261679 -1.885232 +v 0.000000 -3.980127 -0.679241 +v 0.000001 -4.016935 -1.435063 +v 0.371422 -4.016935 -1.386165 +v 0.175801 -3.980127 -0.656096 +v 0.487935 -4.261679 -1.820994 +v 0.465939 -4.227372 -1.738904 +v 0.508279 -4.227372 -1.896919 +v 0.522972 -4.086929 -1.951754 +v 0.448119 -4.086929 -1.672399 +v -0.000000 -3.966293 0.000000 +v 0.545307 -4.053869 -2.035108 +v 0.602457 -3.932325 -2.248395 +v 0.496847 4.202609 -1.854258 +v 0.496847 4.394719 -1.854258 +v 0.481931 4.394719 -1.798589 +v 0.000000 4.202610 -0.000001 +v 0.481931 4.202609 -1.798589 +v 0.489175 3.996727 -1.825624 +v 0.612370 -3.821129 -2.285391 +v 0.612370 3.218951 -2.285392 +v 1.183007 3.218951 -2.049026 +v 1.183007 -3.821129 -2.049026 +v 0.945013 3.996727 -1.636810 +v 0.931019 4.202609 -1.612570 +v 0.000000 4.202610 -0.000001 +v 0.931019 4.394719 -1.612570 +v 0.959835 4.394719 -1.662482 +v 0.959835 4.202609 -1.662482 +v 1.163856 -3.932325 -2.015855 +v 1.053451 -4.053869 -1.824627 +v -0.000000 -3.966293 0.000000 +v 0.865698 -4.086929 -1.499432 +v 1.010303 -4.086929 -1.749894 +v 0.981919 -4.227372 -1.700731 +v 0.900124 -4.227372 -1.559058 +v 0.942617 -4.261679 -1.632658 +v 0.339621 -3.980127 -0.588239 +v 0.717532 -4.016935 -1.242801 +v 1.014744 -4.016935 -1.014743 +v 0.480296 -3.980127 -0.480295 +v 1.333061 -4.261679 -1.333059 +v 1.272967 -4.227372 -1.272965 +v 1.388643 -4.227372 -1.388641 +v 1.428784 -4.086929 -1.428782 +v 1.224282 -4.086929 -1.224281 +v -0.000000 -3.966293 0.000000 +v 1.489804 -4.053869 -1.489802 +v 1.645940 -3.932325 -1.645938 +v 1.357411 4.202609 -1.357410 +v 1.357411 4.394719 -1.357410 +v 1.316659 4.394719 -1.316658 +v 0.000000 4.202610 -0.000001 +v 1.316659 4.202609 -1.316658 +v 1.336450 3.996727 -1.336449 +v 1.673023 -3.821129 -1.673022 +v 1.673023 3.218951 -1.673022 +v 2.049026 3.218951 -1.183005 +v 2.049026 -3.821129 -1.183005 +v 1.636810 3.996727 -0.945012 +v 1.612571 4.202609 -0.931017 +v 0.000000 4.202610 -0.000001 +v 1.612571 4.394719 -0.931017 +v 1.662482 4.394719 -0.959834 +v 1.662482 4.202609 -0.959834 +v 2.015857 -3.932325 -1.163854 +v 1.824629 -4.053869 -1.053448 +v -0.000000 -3.966293 0.000000 +v 1.499433 -4.086929 -0.865697 +v 1.749896 -4.086929 -1.010301 +v 1.700732 -4.227372 -0.981917 +v 1.559059 -4.227372 -0.900122 +v 1.632659 -4.261679 -0.942615 +v 0.588240 -3.980127 -0.339620 +v 1.242802 -4.016935 -0.717531 +v 1.386165 -4.016935 -0.371421 +v 0.656096 -3.980127 -0.175800 +v 1.820995 -4.261679 -0.487933 +v 1.738904 -4.227372 -0.465937 +v 1.896920 -4.227372 -0.508277 +v 1.951755 -4.086929 -0.522969 +v 1.672400 -4.086929 -0.448117 +v -0.000000 -3.966293 0.000000 +v 2.035109 -4.053869 -0.545304 +v 2.248395 -3.932325 -0.602454 +v 1.854258 4.202609 -0.496846 +v 1.854258 4.394719 -0.496846 +v 1.798589 4.394719 -0.481929 +v 0.000001 4.202610 -0.000000 +v 1.798589 4.202609 -0.481929 +v 1.825624 3.996727 -0.489174 +v 2.285392 -3.821129 -0.612368 +v 2.285392 3.218951 -0.612368 +v 2.366012 3.218951 0.000001 +v 2.366012 -3.821129 0.000001 +v 1.890025 3.996727 0.000001 +v 1.862036 4.202609 0.000001 +v 0.000001 4.202610 -0.000000 +v 1.862036 4.394719 0.000001 +v 1.919668 4.394719 0.000001 +v 1.919668 4.202609 0.000001 +v 2.327710 -3.932325 0.000002 +v 2.106899 -4.053869 0.000002 +v -0.000000 -3.966293 0.000000 +v 1.731395 -4.086929 0.000001 +v 2.020605 -4.086929 0.000002 +v 1.963836 -4.227372 0.000001 +v 1.800246 -4.227372 0.000002 +v 1.885232 -4.261679 0.000001 +v 0.679241 -3.980127 0.000001 +v 1.435064 -4.016935 0.000001 +usemtl Material +s off +f 421 415 444 +f 415 450 444 +f 416 415 450 +f 416 450 449 +f 422 416 449 +f 422 449 443 +f 417 418 448 +f 418 447 448 +f 417 419 448 +f 419 446 448 +f 418 421 444 +f 418 444 447 +f 419 420 446 +f 420 445 446 +f 420 423 442 +f 420 442 445 +f 423 424 441 +f 423 441 442 +f 424 431 434 +f 424 434 441 +f 426 427 439 +f 427 438 439 +f 425 426 439 +f 425 439 440 +f 425 429 440 +f 429 436 440 +f 427 429 436 +f 427 436 438 +f 428 429 437 +f 429 436 437 +f 429 430 435 +f 429 435 436 +f 430 432 433 +f 430 433 435 +f 431 432 433 +f 431 433 434 +f 398 397 432 +f 398 432 431 +f 399 397 432 +f 399 432 430 +f 400 399 430 +f 400 430 429 +f 401 400 429 +f 401 429 428 +f 402 400 429 +f 402 429 427 +f 404 400 425 +f 400 429 425 +f 404 403 426 +f 404 426 425 +f 403 402 426 +f 402 427 426 +f 405 398 431 +f 405 431 424 +f 406 405 424 +f 406 424 423 +f 409 406 423 +f 409 423 420 +f 410 409 419 +f 409 420 419 +f 411 408 421 +f 411 421 418 +f 412 410 417 +f 410 419 417 +f 412 411 417 +f 411 418 417 +f 407 413 416 +f 407 416 422 +f 413 414 416 +f 414 415 416 +f 408 414 421 +f 414 415 421 +f 385 379 408 +f 379 414 408 +f 380 379 414 +f 380 414 413 +f 386 380 413 +f 386 413 407 +f 381 382 412 +f 382 411 412 +f 381 383 412 +f 383 410 412 +f 382 385 408 +f 382 408 411 +f 383 384 410 +f 384 409 410 +f 384 387 406 +f 384 406 409 +f 387 388 405 +f 387 405 406 +f 388 395 398 +f 388 398 405 +f 390 391 403 +f 391 402 403 +f 389 390 403 +f 389 403 404 +f 389 393 404 +f 393 400 404 +f 391 393 400 +f 391 400 402 +f 392 393 401 +f 393 400 401 +f 393 394 399 +f 393 399 400 +f 394 396 397 +f 394 397 399 +f 395 396 397 +f 395 397 398 +f 362 361 396 +f 362 396 395 +f 363 361 396 +f 363 396 394 +f 364 363 394 +f 364 394 393 +f 365 364 393 +f 365 393 392 +f 366 364 393 +f 366 393 391 +f 368 364 389 +f 364 393 389 +f 368 367 390 +f 368 390 389 +f 367 366 390 +f 366 391 390 +f 369 362 395 +f 369 395 388 +f 370 369 388 +f 370 388 387 +f 373 370 387 +f 373 387 384 +f 374 373 383 +f 373 384 383 +f 375 372 385 +f 375 385 382 +f 376 374 381 +f 374 383 381 +f 376 375 381 +f 375 382 381 +f 371 377 380 +f 371 380 386 +f 377 378 379 +f 377 379 380 +f 372 378 379 +f 372 379 385 +f 349 343 378 +f 349 378 372 +f 344 343 378 +f 344 378 377 +f 350 344 377 +f 350 377 371 +f 345 346 376 +f 346 375 376 +f 345 347 376 +f 347 374 376 +f 346 349 372 +f 346 372 375 +f 347 348 374 +f 348 373 374 +f 348 351 373 +f 351 370 373 +f 351 352 369 +f 351 369 370 +f 352 359 362 +f 352 362 369 +f 354 355 367 +f 355 366 367 +f 353 354 367 +f 353 367 368 +f 353 357 368 +f 357 364 368 +f 355 357 364 +f 355 364 366 +f 356 357 364 +f 356 364 365 +f 357 358 363 +f 357 363 364 +f 358 360 361 +f 358 361 363 +f 359 360 361 +f 359 361 362 +f 326 325 360 +f 326 360 359 +f 327 325 360 +f 327 360 358 +f 328 327 358 +f 328 358 357 +f 329 328 357 +f 329 357 356 +f 330 328 357 +f 330 357 355 +f 332 328 353 +f 328 357 353 +f 332 331 354 +f 332 354 353 +f 331 330 354 +f 330 355 354 +f 333 326 359 +f 333 359 352 +f 334 333 352 +f 334 352 351 +f 337 334 348 +f 334 351 348 +f 338 337 347 +f 337 348 347 +f 339 336 349 +f 339 349 346 +f 340 338 345 +f 338 347 345 +f 340 339 345 +f 339 346 345 +f 335 341 344 +f 335 344 350 +f 341 342 344 +f 342 343 344 +f 336 342 343 +f 336 343 349 +f 313 307 342 +f 313 342 336 +f 308 307 341 +f 307 342 341 +f 314 308 341 +f 314 341 335 +f 309 310 340 +f 310 339 340 +f 309 311 340 +f 311 338 340 +f 310 313 336 +f 310 336 339 +f 311 312 338 +f 312 337 338 +f 312 315 337 +f 315 334 337 +f 315 316 333 +f 315 333 334 +f 316 323 326 +f 316 326 333 +f 318 319 331 +f 319 330 331 +f 317 318 331 +f 317 331 332 +f 317 321 332 +f 321 328 332 +f 319 321 328 +f 319 328 330 +f 320 321 329 +f 321 328 329 +f 321 322 327 +f 321 327 328 +f 322 324 325 +f 322 325 327 +f 323 324 325 +f 323 325 326 +f 290 289 324 +f 290 324 323 +f 291 289 324 +f 291 324 322 +f 292 291 322 +f 292 322 321 +f 293 292 321 +f 293 321 320 +f 294 292 321 +f 294 321 319 +f 296 292 317 +f 292 321 317 +f 296 295 318 +f 296 318 317 +f 295 294 318 +f 294 319 318 +f 297 290 323 +f 297 323 316 +f 298 297 316 +f 298 316 315 +f 301 298 312 +f 298 315 312 +f 302 301 311 +f 301 312 311 +f 303 300 313 +f 303 313 310 +f 304 302 309 +f 302 311 309 +f 304 303 309 +f 303 310 309 +f 299 305 308 +f 299 308 314 +f 305 306 307 +f 305 307 308 +f 300 306 307 +f 300 307 313 +f 277 271 306 +f 277 306 300 +f 272 271 306 +f 272 306 305 +f 278 272 305 +f 278 305 299 +f 273 274 304 +f 274 303 304 +f 273 275 304 +f 275 302 304 +f 274 277 300 +f 274 300 303 +f 275 276 302 +f 276 301 302 +f 276 279 301 +f 279 298 301 +f 279 280 297 +f 279 297 298 +f 280 287 290 +f 280 290 297 +f 282 283 295 +f 283 294 295 +f 281 282 295 +f 281 295 296 +f 281 285 296 +f 285 292 296 +f 283 285 292 +f 283 292 294 +f 284 285 292 +f 284 292 293 +f 285 286 291 +f 285 291 292 +f 286 288 289 +f 286 289 291 +f 287 288 289 +f 287 289 290 +f 254 253 288 +f 254 288 287 +f 255 253 288 +f 255 288 286 +f 256 255 286 +f 256 286 285 +f 257 256 285 +f 257 285 284 +f 258 256 285 +f 258 285 283 +f 260 256 281 +f 256 285 281 +f 260 259 282 +f 260 282 281 +f 259 258 282 +f 258 283 282 +f 261 254 287 +f 261 287 280 +f 262 261 280 +f 262 280 279 +f 265 262 276 +f 262 279 276 +f 266 265 275 +f 265 276 275 +f 267 264 277 +f 267 277 274 +f 268 266 273 +f 266 275 273 +f 268 267 273 +f 267 274 273 +f 263 269 272 +f 263 272 278 +f 269 270 271 +f 269 271 272 +f 264 270 271 +f 264 271 277 +f 241 235 270 +f 241 270 264 +f 236 235 269 +f 235 270 269 +f 242 236 269 +f 242 269 263 +f 237 238 268 +f 238 267 268 +f 237 239 268 +f 239 266 268 +f 238 241 264 +f 238 264 267 +f 239 240 265 +f 239 265 266 +f 240 243 265 +f 243 262 265 +f 243 244 261 +f 243 261 262 +f 244 251 254 +f 244 254 261 +f 246 247 259 +f 247 258 259 +f 245 246 259 +f 245 259 260 +f 245 249 260 +f 249 256 260 +f 247 249 256 +f 247 256 258 +f 248 249 256 +f 248 256 257 +f 249 250 255 +f 249 255 256 +f 250 252 253 +f 250 253 255 +f 251 252 253 +f 251 253 254 +f 218 217 252 +f 218 252 251 +f 219 217 252 +f 219 252 250 +f 220 219 250 +f 220 250 249 +f 221 220 249 +f 221 249 248 +f 222 220 249 +f 222 249 247 +f 224 220 245 +f 220 249 245 +f 224 223 246 +f 224 246 245 +f 223 222 246 +f 222 247 246 +f 225 218 251 +f 225 251 244 +f 226 225 244 +f 226 244 243 +f 229 226 240 +f 226 243 240 +f 230 229 240 +f 230 240 239 +f 231 228 241 +f 231 241 238 +f 232 230 237 +f 230 239 237 +f 232 231 237 +f 231 238 237 +f 227 233 236 +f 227 236 242 +f 233 234 235 +f 233 235 236 +f 228 234 235 +f 228 235 241 +f 205 199 234 +f 205 234 228 +f 200 199 234 +f 200 234 233 +f 206 200 233 +f 206 233 227 +f 201 202 232 +f 202 231 232 +f 201 203 232 +f 203 230 232 +f 202 205 228 +f 202 228 231 +f 203 204 229 +f 203 229 230 +f 204 207 229 +f 207 226 229 +f 207 208 225 +f 207 225 226 +f 208 215 218 +f 208 218 225 +f 210 211 223 +f 211 222 223 +f 209 210 223 +f 209 223 224 +f 209 213 224 +f 213 220 224 +f 211 213 220 +f 211 220 222 +f 212 213 220 +f 212 220 221 +f 213 214 219 +f 213 219 220 +f 214 216 217 +f 214 217 219 +f 215 216 217 +f 215 217 218 +f 182 181 216 +f 182 216 215 +f 183 181 216 +f 183 216 214 +f 184 183 214 +f 184 214 213 +f 185 184 213 +f 185 213 212 +f 186 184 213 +f 186 213 211 +f 188 184 209 +f 184 213 209 +f 188 187 210 +f 188 210 209 +f 187 186 210 +f 186 211 210 +f 189 182 215 +f 189 215 208 +f 190 189 208 +f 190 208 207 +f 193 190 204 +f 190 207 204 +f 194 193 204 +f 194 204 203 +f 195 192 205 +f 195 205 202 +f 196 194 201 +f 194 203 201 +f 196 195 201 +f 195 202 201 +f 191 197 200 +f 191 200 206 +f 197 198 199 +f 197 199 200 +f 192 198 199 +f 192 199 205 +f 169 163 198 +f 169 198 192 +f 164 163 198 +f 164 198 197 +f 170 164 197 +f 170 197 191 +f 165 166 196 +f 166 195 196 +f 165 167 196 +f 167 194 196 +f 166 169 192 +f 166 192 195 +f 167 168 193 +f 167 193 194 +f 168 171 193 +f 171 190 193 +f 171 172 189 +f 171 189 190 +f 172 179 182 +f 172 182 189 +f 174 175 187 +f 175 186 187 +f 173 174 187 +f 173 187 188 +f 173 177 188 +f 177 184 188 +f 175 177 184 +f 175 184 186 +f 176 177 184 +f 176 184 185 +f 177 178 183 +f 177 183 184 +f 178 180 181 +f 178 181 183 +f 179 180 181 +f 179 181 182 +f 146 145 180 +f 146 180 179 +f 147 145 180 +f 147 180 178 +f 148 147 178 +f 148 178 177 +f 149 148 177 +f 149 177 176 +f 150 148 177 +f 150 177 175 +f 152 148 173 +f 148 177 173 +f 152 151 174 +f 152 174 173 +f 151 150 174 +f 150 175 174 +f 153 146 179 +f 153 179 172 +f 154 153 172 +f 154 172 171 +f 157 154 168 +f 154 171 168 +f 158 157 168 +f 158 168 167 +f 159 156 169 +f 159 169 166 +f 160 158 165 +f 158 167 165 +f 160 159 165 +f 159 166 165 +f 155 161 164 +f 155 164 170 +f 161 162 163 +f 161 163 164 +f 156 162 163 +f 156 163 169 +f 133 127 162 +f 133 162 156 +f 128 127 162 +f 128 162 161 +f 134 128 161 +f 134 161 155 +f 129 130 160 +f 130 159 160 +f 129 131 158 +f 129 158 160 +f 130 133 156 +f 130 156 159 +f 131 132 157 +f 131 157 158 +f 132 135 157 +f 135 154 157 +f 135 136 153 +f 135 153 154 +f 136 143 146 +f 136 146 153 +f 138 139 150 +f 138 150 151 +f 137 138 151 +f 137 151 152 +f 137 141 148 +f 137 148 152 +f 139 141 148 +f 139 148 150 +f 140 141 148 +f 140 148 149 +f 141 142 147 +f 141 147 148 +f 142 144 145 +f 142 145 147 +f 143 144 145 +f 143 145 146 +f 110 109 144 +f 110 144 143 +f 111 109 144 +f 111 144 142 +f 112 111 142 +f 112 142 141 +f 113 112 140 +f 112 141 140 +f 114 112 141 +f 114 141 139 +f 116 112 141 +f 116 141 137 +f 116 115 138 +f 116 138 137 +f 115 114 139 +f 115 139 138 +f 117 110 143 +f 117 143 136 +f 118 117 136 +f 118 136 135 +f 121 118 132 +f 118 135 132 +f 122 121 132 +f 122 132 131 +f 123 120 133 +f 123 133 130 +f 124 122 131 +f 124 131 129 +f 124 123 130 +f 124 130 129 +f 119 125 134 +f 125 128 134 +f 125 126 127 +f 125 127 128 +f 120 126 127 +f 120 127 133 +f 97 91 126 +f 97 126 120 +f 92 91 126 +f 92 126 125 +f 98 92 125 +f 98 125 119 +f 93 94 123 +f 93 123 124 +f 93 95 122 +f 93 122 124 +f 94 97 120 +f 94 120 123 +f 95 96 121 +f 95 121 122 +f 96 99 121 +f 99 118 121 +f 99 100 117 +f 99 117 118 +f 100 107 110 +f 100 110 117 +f 102 103 114 +f 102 114 115 +f 101 102 115 +f 101 115 116 +f 101 105 112 +f 101 112 116 +f 103 105 112 +f 103 112 114 +f 104 105 112 +f 104 112 113 +f 105 106 111 +f 105 111 112 +f 106 108 109 +f 106 109 111 +f 107 108 109 +f 107 109 110 +f 74 73 108 +f 74 108 107 +f 75 73 108 +f 75 108 106 +f 76 75 106 +f 76 106 105 +f 77 76 105 +f 77 105 104 +f 78 76 105 +f 78 105 103 +f 80 76 105 +f 80 105 101 +f 80 79 102 +f 80 102 101 +f 79 78 103 +f 79 103 102 +f 81 74 107 +f 81 107 100 +f 82 81 100 +f 82 100 99 +f 85 82 96 +f 82 99 96 +f 86 85 96 +f 86 96 95 +f 87 84 97 +f 87 97 94 +f 88 86 95 +f 88 95 93 +f 88 87 94 +f 88 94 93 +f 83 89 92 +f 83 92 98 +f 89 90 91 +f 89 91 92 +f 84 90 91 +f 84 91 97 +f 61 55 90 +f 61 90 84 +f 56 55 90 +f 56 90 89 +f 62 56 89 +f 62 89 83 +f 57 58 87 +f 57 87 88 +f 57 59 88 +f 59 86 88 +f 58 61 84 +f 58 84 87 +f 59 60 85 +f 59 85 86 +f 60 63 85 +f 63 82 85 +f 63 64 81 +f 63 81 82 +f 64 71 74 +f 64 74 81 +f 66 67 78 +f 66 78 79 +f 65 66 79 +f 65 79 80 +f 65 69 76 +f 65 76 80 +f 67 69 76 +f 67 76 78 +f 68 69 76 +f 68 76 77 +f 69 70 75 +f 69 75 76 +f 70 72 73 +f 70 73 75 +f 71 72 73 +f 71 73 74 +f 38 37 72 +f 38 72 71 +f 39 37 72 +f 39 72 70 +f 40 39 70 +f 40 70 69 +f 41 40 69 +f 41 69 68 +f 42 40 69 +f 42 69 67 +f 44 40 69 +f 44 69 65 +f 44 43 66 +f 44 66 65 +f 43 42 67 +f 43 67 66 +f 45 38 64 +f 38 71 64 +f 46 45 64 +f 46 64 63 +f 49 46 63 +f 49 63 60 +f 50 49 60 +f 50 60 59 +f 51 48 61 +f 51 61 58 +f 52 50 59 +f 52 59 57 +f 52 51 58 +f 52 58 57 +f 47 53 56 +f 47 56 62 +f 53 54 55 +f 53 55 56 +f 48 54 55 +f 48 55 61 +f 25 19 54 +f 25 54 48 +f 20 19 53 +f 19 54 53 +f 26 20 53 +f 26 53 47 +f 21 22 51 +f 21 51 52 +f 21 23 50 +f 21 50 52 +f 22 25 48 +f 22 48 51 +f 23 24 49 +f 23 49 50 +f 24 27 46 +f 24 46 49 +f 27 28 46 +f 28 45 46 +f 28 35 38 +f 28 38 45 +f 30 31 42 +f 30 42 43 +f 29 30 43 +f 29 43 44 +f 29 33 40 +f 29 40 44 +f 31 33 40 +f 31 40 42 +f 32 33 40 +f 32 40 41 +f 33 34 39 +f 33 39 40 +f 34 36 37 +f 34 37 39 +f 35 36 37 +f 35 37 38 +f 2 1 36 +f 2 36 35 +f 3 1 36 +f 3 36 34 +f 4 3 34 +f 4 34 33 +f 5 4 32 +f 4 33 32 +f 6 4 33 +f 6 33 31 +f 8 4 33 +f 8 33 29 +f 8 7 30 +f 8 30 29 +f 7 6 31 +f 7 31 30 +f 9 2 35 +f 9 35 28 +f 10 9 28 +f 10 28 27 +f 13 10 27 +f 13 27 24 +f 14 13 24 +f 14 24 23 +f 15 12 25 +f 15 25 22 +f 16 14 23 +f 16 23 21 +f 16 15 22 +f 16 22 21 +f 11 17 20 +f 11 20 26 +f 17 18 19 +f 17 19 20 +f 12 18 19 +f 12 19 25 diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..95d35b0 --- /dev/null +++ b/main.cpp @@ -0,0 +1,222 @@ +#ifdef __APPLE__ +#define glGenVertexArrays glGenVertexArraysAPPLE +#define glBindVertexArray glBindVertexArrayAPPLE +#endif + +#define GL_GLEXT_PROTOTYPES // for Linux + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +typedef struct { + float pos[3]; +} Vertex; + +typedef struct { + uint32_t vbo_id; + uint32_t ibo_id; + uint32_t vao_id; + uint32_t num_poly; +} Mesh; + +typedef struct { + uint32_t prog_id; + uint32_t vert_id; + uint32_t frag_id; +} Shader; + +Shader shaders[1]; +Mesh popcan; + +char basic_vert_shader[] = +"varying vec4 color;" +"void main () {" +" color = vec4(clamp(gl_Vertex.y,0.0,0.7)+0.3,0.0,0.0,1.0);" +" gl_Position = gl_ModelViewProjectionMatrix*gl_Vertex;" +"}"; + +char basic_frag_shader[] = +"varying vec4 color;" +"void main () {" +" gl_FragColor = color;" +"}"; + +void render () { + glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glLoadIdentity (); + glUseProgram (shaders[0].prog_id + ); + static float x = 0; + glTranslatef (-8,0,-20); + glRotatef (x+=1.0, 0,1,0); + glRotatef (30.0, 1.0,0,0); + + glBindVertexArray (popcan.vao_id); + glDrawElements(GL_TRIANGLES, popcan.num_poly, GL_UNSIGNED_INT, 0); +} + +void print_shader_error (uint32_t id, uint32_t type) { + char *log; + GLint length=0, result; + if (type == GL_COMPILE_STATUS) glGetShaderiv(id, GL_INFO_LOG_LENGTH, &length); + else glGetProgramiv (id, GL_INFO_LOG_LENGTH, &length); + if (length == 0) { + std::cerr << "Unknown error.\n"; + return; + } + log = new char[length]; + if (type == GL_COMPILE_STATUS) glGetShaderInfoLog(id, length, &result, log); + else glGetProgramInfoLog(id, length, &result, log); + std::cerr << log << "\n"; + delete[] log; +} + +Mesh load_mesh (std::string filename) { + Mesh m; + + std::ifstream fin (filename.c_str ()); + if (!fin.good ()) { std::cerr << "Couldn't open " << filename << "\n"; exit(1); } + std::vector vert_data; + std::vector index_data; + while (!fin.eof ()) { + char line[128]; + fin.getline(line, 128); + if (line[0] == 'v') { + Vertex v; + char *fstr = strtok(&(line[1]), " "); + v.pos[0] = atof(fstr); + fstr = strtok(NULL, " "); + v.pos[1] = atof(fstr); + fstr = strtok(NULL, " "); + v.pos[2] = atof(fstr); + assert (strtok (NULL, " ") == NULL); + vert_data.push_back(v); + } else if (line[0] == 'f') { + char *intstr = strtok(&(line[1]), " "); + index_data.push_back(atoi (intstr) - 1); + intstr = strtok(NULL, " "); + index_data.push_back(atoi (intstr) - 1); + intstr = strtok(NULL, " "); + index_data.push_back(atoi (intstr) - 1); + if (strtok(NULL, " ") != NULL) { std::cerr << "You got some quads bro.\n"; exit (1); } + } + } + glGenVertexArrays (1, &(m.vao_id)); + glBindVertexArray (m.vao_id); + + glGenBuffers(2, &m.vbo_id); + glBindBuffer(GL_ARRAY_BUFFER, m.vbo_id); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m.ibo_id); + glBufferData(GL_ARRAY_BUFFER, sizeof(Vertex)*vert_data.size (), &(vert_data[0]), GL_STATIC_DRAW); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(uint32_t)*index_data.size (), &(index_data[0]), GL_STATIC_DRAW); + glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0); + glEnableVertexAttribArray(0); + glBindVertexArray (0); + m.num_poly = (uint32_t)index_data.size () / 3; + std::cerr << "Loaded " << filename << "\n"; + return m; +} + +uint32_t compile_individual_shader (const char *src, uint32_t len, uint32_t type) { + uint32_t id = glCreateShader (type); + glShaderSource (id, 1, &src, NULL); + glCompileShader (id); + + GLint compiled; + glGetShaderiv (id, GL_COMPILE_STATUS, &compiled); + if (compiled == GL_FALSE) { + std::cerr << "Error compiling shader: "; + print_shader_error(id, GL_COMPILE_STATUS); + exit (1); + } + return id; +} + +Shader make_shader (char* vert_src, uint32_t vert_len, char* frag_src, uint32_t frag_len) { + Shader s; + s.vert_id = compile_individual_shader (vert_src, vert_len, GL_VERTEX_SHADER); + s.frag_id = compile_individual_shader (frag_src, frag_len, GL_FRAGMENT_SHADER); + s.prog_id = glCreateProgram (); + glAttachShader (s.prog_id, s.frag_id); + glAttachShader (s.prog_id, s.vert_id); + glLinkProgram (s.prog_id); + GLint linked; + glGetProgramiv(s.prog_id, GL_LINK_STATUS, &linked); + if (linked == GL_FALSE) { + std::cerr << "Error linking shader: "; + print_shader_error (s.prog_id, GL_COMPILE_STATUS); + exit (1); + } + return s; +} + + + +void GL_init (float w, float h) { + glShadeModel (GL_SMOOTH); + glEnable (GL_DEPTH_TEST); + glHint (GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); +// TODO: blender is apparently a dick and doesn't export to .obj with a consistent poly orientation. +// Fix it manually during a load or something to get this culling. +// glFrontFace (GL_CCW); +// glCullFace (GL_BACK); +// glEnable (GL_CULL_FACE); + + glClearColor (0,0,0,0); + glEnable (GL_TEXTURE_2D); + + glViewport (0, 0, w, h); + + // TODO: This code is old and bad, needs to go + glMatrixMode (GL_PROJECTION); + glLoadIdentity(); + float near = 0.001; + float far = 1000.0; + float fH = tan(45.0/360.0*M_PI)*near; + float fW = fH*w/h; + glFrustum(-fW, fW, -fH, fH, near, far); + glMatrixMode (GL_MODELVIEW); + // TODO: replace above + + popcan = load_mesh ("can.obj"); + shaders[0] = make_shader (basic_vert_shader, sizeof (basic_vert_shader), basic_frag_shader, sizeof (basic_frag_shader)); +} + +int main () { + float w = 480; + float h = 272; + if (!glfwInit () || !glfwOpenWindow (w, h, 8,8,8,0,32,0,GLFW_WINDOW)) { + std::cerr << "Something GLFW failed.\n"; + return 1; + } + GL_init (w, h); + + int running = 1; + + float t0 = glfwGetTime (); + uint32_t frames = 0; + // glfwSwapInterval (0); // Uncomment this to test FPS without vsync + while (running) { + float t = glfwGetTime (); + if (t-t0 >= 5.0) { + std::cerr << (float)frames/5.0 << " FPS\n"; + t0 = t; + frames = 0; + } + render (); + frames++; + glfwSwapBuffers (); + running = glfwGetWindowParam (GLFW_OPENED); + } + + glfwTerminate (); +} + diff --git a/resources/can/can.blend b/resources/can/can.blend new file mode 100644 index 0000000..622fabd Binary files /dev/null and b/resources/can/can.blend differ diff --git a/resources/can/can.blend1 b/resources/can/can.blend1 new file mode 100644 index 0000000..f65665a Binary files /dev/null and b/resources/can/can.blend1 differ diff --git a/resources/can/reference.jpg b/resources/can/reference.jpg new file mode 100644 index 0000000..49efe71 Binary files /dev/null and b/resources/can/reference.jpg differ diff --git a/resources/can/texture.jpg b/resources/can/texture.jpg new file mode 100644 index 0000000..c2a3b29 Binary files /dev/null and b/resources/can/texture.jpg differ diff --git a/resources/can/unextruded.blend b/resources/can/unextruded.blend new file mode 100644 index 0000000..034dd48 Binary files /dev/null and b/resources/can/unextruded.blend differ