diff --git a/build_visual_studio.bat b/build_visual_studio.bat index 56ee9f610..0da0089b1 100644 --- a/build_visual_studio.bat +++ b/build_visual_studio.bat @@ -14,6 +14,6 @@ rem cd vs2010 rem rename 0_Bullet3Solution.sln 0_client.sln rem cd .. rem rename vs2010 vs2010_client -start vs2010/0_Bullet3Solution.sln +rem start vs2010/0_Bullet3Solution.sln pause diff --git a/data/Quadrotor/quadrotor.urdf b/data/Quadrotor/quadrotor.urdf new file mode 100644 index 000000000..7158dc40a --- /dev/null +++ b/data/Quadrotor/quadrotor.urdf @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/Quadrotor/quadrotor_base.obj b/data/Quadrotor/quadrotor_base.obj new file mode 100644 index 000000000..dc5129f4b --- /dev/null +++ b/data/Quadrotor/quadrotor_base.obj @@ -0,0 +1,1696 @@ +#### +# +# OBJ File Generated by Meshlab +# +#### +# Object quadrotor_base.obj +# +# Vertices: 300 +# Faces: 1080 +# +#### +vn 4.712352 -0.000018 -5.804880 +v 0.823618 0.673869 -1.366201 +vn -4.712348 0.000002 -5.804878 +v -0.823618 0.673869 -1.366201 +vn -4.712421 4.104710 -4.104690 +v -0.823618 0.685264 -1.361481 +vn 4.712396 4.104707 -4.104671 +v 0.823618 0.685264 -1.361481 +vn -4.712366 5.804888 0.000002 +v -0.823618 0.689984 -1.350086 +vn 4.712383 5.804898 0.000024 +v 0.823618 0.689984 -1.350086 +vn -4.712404 4.104681 4.104702 +v -0.823618 0.685264 -1.338691 +vn 4.712404 4.104684 4.104700 +v 0.823618 0.685264 -1.338691 +vn -4.712383 -0.000002 5.804899 +v -0.823618 0.673869 -1.333971 +vn 4.712387 0.000007 5.804901 +v 0.823618 0.673869 -1.333971 +vn -4.712386 -4.104694 4.104674 +v -0.823618 0.662474 -1.338691 +vn 4.712373 -4.104692 4.104666 +v 0.823618 0.662474 -1.338691 +vn -4.712401 -5.804910 -0.000002 +v -0.823618 0.657754 -1.350086 +vn 4.712401 -5.804910 -0.000024 +v 0.823618 0.657754 -1.350086 +vn -4.712403 -4.104718 -4.104666 +v -0.823618 0.662474 -1.361481 +vn 4.712417 -4.104721 -4.104674 +v 0.823618 0.662474 -1.361481 +vn 12.566370 0.000000 0.000000 +v 0.823618 0.673869 -1.350086 +vn -12.566372 0.000000 0.000000 +v -0.823618 0.673869 -1.350086 +vn 12.566370 0.000000 0.000000 +v 0.823617 -0.673869 -1.350086 +vn 4.712387 4.104727 -4.104664 +v 0.823617 -0.662474 -1.361481 +vn 4.712359 -0.000001 -5.804899 +v 0.823617 -0.673869 -1.366201 +vn -12.566370 0.000000 0.000000 +v -0.823618 -0.673869 -1.350086 +vn -4.712344 0.000012 -5.804890 +v -0.823618 -0.673869 -1.366201 +vn -4.712438 4.104721 -4.104712 +v -0.823618 -0.662474 -1.361481 +vn 4.712419 5.804935 0.000004 +v 0.823617 -0.657754 -1.350086 +vn -4.712384 5.804914 -0.000056 +v -0.823618 -0.657754 -1.350086 +vn 4.712369 4.104695 4.104680 +v 0.823617 -0.662474 -1.338691 +vn -4.712369 4.104702 4.104674 +v -0.823618 -0.662474 -1.338691 +vn 4.712395 -0.000010 5.804920 +v 0.823617 -0.673869 -1.333971 +vn -4.712395 -0.000001 5.804920 +v -0.823618 -0.673869 -1.333971 +vn 4.712382 -4.104702 4.104685 +v 0.823617 -0.685264 -1.338691 +vn -4.712382 -4.104696 4.104691 +v -0.823618 -0.685264 -1.338691 +vn 4.712401 -5.804924 -0.000004 +v 0.823617 -0.689984 -1.350086 +vn -4.712401 -5.804924 0.000004 +v -0.823618 -0.689984 -1.350086 +vn 4.712399 -4.104721 -4.104680 +v 0.823617 -0.685264 -1.361481 +vn -4.712399 -4.104727 -4.104674 +v -0.823618 -0.685264 -1.361481 +vn -5.235984 6.069087 0.000004 +v 0.561441 0.081383 0.000000 +vn -5.235989 5.255984 -3.034544 +v 0.561441 0.070480 -0.040692 +vn -5.235989 3.034546 -5.255983 +v 0.561441 0.040692 -0.070480 +vn -5.235986 0.000001 -6.069088 +v 0.561441 0.000000 -0.081383 +vn -5.235989 -3.034547 -5.255976 +v 0.561441 -0.040692 -0.070480 +vn -5.235989 -5.256006 -3.034549 +v 0.561441 -0.070480 -0.040692 +vn -5.235986 -6.069103 0.000002 +v 0.561441 -0.081383 0.000000 +vn -5.235991 -5.256007 3.034550 +v 0.561441 -0.070480 0.040692 +vn -5.235989 -3.034554 5.255973 +v 0.561441 -0.040692 0.070480 +vn -5.235984 -0.000003 6.069086 +v 0.561441 0.000000 0.081383 +vn -5.235991 3.034543 5.255986 +v 0.561441 0.040692 0.070480 +vn -5.235989 5.255980 3.034551 +v 0.561441 0.070480 0.040692 +vn 5.235987 6.069087 0.000004 +v 2.084521 0.081383 0.000000 +vn 5.235984 5.255982 -3.034545 +v 2.084521 0.070480 -0.040692 +vn 5.235995 3.034549 -5.255984 +v 2.084521 0.040692 -0.070480 +vn 5.235981 0.000005 -6.069085 +v 2.084521 0.000000 -0.081383 +vn 5.235990 -3.034547 -5.255983 +v 2.084521 -0.040692 -0.070480 +vn 5.235993 -5.255982 -3.034551 +v 2.084521 -0.070480 -0.040692 +vn 5.235984 -6.069095 -0.000011 +v 2.084521 -0.081383 0.000000 +vn 5.235989 -5.255995 3.034542 +v 2.084521 -0.070480 0.040692 +vn 5.235988 -3.034554 5.255987 +v 2.084521 -0.040692 0.070480 +vn 5.235987 -0.000004 6.069088 +v 2.084521 0.000000 0.081383 +vn 5.235989 3.034540 5.255986 +v 2.084521 0.040692 0.070480 +vn 5.235988 5.255981 3.034548 +v 2.084521 0.070480 0.040692 +vn -12.566370 -0.000008 -0.000000 +v 0.561441 0.000000 0.000000 +vn 12.566370 0.000000 0.000000 +v 2.084521 0.000000 0.000000 +vn 0.355499 4.972161 -2.775034 +v 0.673869 0.689984 -1.332763 +vn 3.292306 3.292306 -2.318008 +v 0.685264 0.685264 -1.332763 +vn 4.972162 0.355500 -2.775033 +v 0.689984 0.673869 -1.332763 +vn 4.490691 -3.564183 -4.375483 +v 0.685264 0.662474 -1.332763 +vn 0.542895 -5.966685 -6.684689 +v 0.673869 0.657754 -1.332763 +vn -4.122719 -4.122719 -7.710718 +v 0.662474 0.662474 -1.332763 +vn -5.966685 0.542895 -6.684690 +v 0.657754 0.673869 -1.332763 +vn -3.564185 4.490689 -4.375484 +v 0.662474 0.685264 -1.332763 +vn -0.542897 5.966677 6.684656 +v 0.299497 0.315612 -0.303241 +vn 4.122744 4.122751 7.710777 +v 0.310892 0.310892 -0.303241 +vn 5.966676 -0.542893 6.684656 +v 0.315612 0.299497 -0.303241 +vn 3.564179 -4.490701 4.375489 +v 0.310892 0.288102 -0.303241 +vn -0.355480 -4.972164 2.775051 +v 0.299497 0.283382 -0.303241 +vn -3.292296 -3.292280 2.317987 +v 0.288102 0.288102 -0.303241 +vn -4.972173 -0.355465 2.775058 +v 0.283382 0.299497 -0.303241 +vn -4.490700 3.564181 4.375489 +v 0.288102 0.310892 -0.303241 +vn 0.000000 0.000000 -12.566372 +v 0.673869 0.673869 -1.332763 +vn 0.000000 0.000000 12.566369 +v 0.299497 0.299497 -0.303241 +vn 5.966708 0.542897 6.684694 +v 0.315612 -0.299497 -0.303241 +vn 4.972180 -0.355517 -2.775037 +v 0.689984 -0.673869 -1.332763 +vn 4.490703 3.564161 -4.375446 +v 0.685264 -0.662474 -1.332763 +vn 3.564178 4.490701 4.375466 +v 0.310892 -0.288102 -0.303241 +vn 0.542888 5.966686 -6.684695 +v 0.673869 -0.657754 -1.332763 +vn -0.355491 4.972161 2.775047 +v 0.299497 -0.283382 -0.303241 +vn -4.122740 4.122723 -7.710721 +v 0.662474 -0.662474 -1.332763 +vn -3.292300 3.292297 2.318002 +v 0.288102 -0.288102 -0.303241 +vn -5.966705 -0.542928 -6.684684 +v 0.657754 -0.673869 -1.332763 +vn -4.972191 0.355500 2.775033 +v 0.283382 -0.299497 -0.303241 +vn -3.564183 -4.490709 -4.375484 +v 0.662474 -0.685264 -1.332763 +vn -4.490696 -3.564181 4.375465 +v 0.288102 -0.310892 -0.303241 +vn 0.355491 -4.972157 -2.775042 +v 0.673869 -0.689984 -1.332763 +vn -0.542871 -5.966687 6.684691 +v 0.299497 -0.315612 -0.303241 +vn 3.292302 -3.292305 -2.318004 +v 0.685264 -0.685264 -1.332763 +vn 4.122734 -4.122715 7.710742 +v 0.310892 -0.310892 -0.303241 +vn 0.000000 0.000000 12.566369 +v 0.299497 -0.299497 -0.303241 +vn 0.000000 0.000000 -12.566370 +v 0.673869 -0.673869 -1.332763 +vn 0.000000 0.000000 -12.566370 +v -0.673869 -0.673869 -1.332763 +vn -3.292290 -3.292300 -2.317995 +v -0.685264 -0.685264 -1.332763 +vn -0.355509 -4.972198 -2.775056 +v -0.673869 -0.689984 -1.332763 +vn 0.000000 0.000000 12.566370 +v -0.299497 -0.299497 -0.303241 +vn 0.542906 -5.966710 6.684697 +v -0.299497 -0.315612 -0.303241 +vn -4.122705 -4.122732 7.710721 +v -0.310892 -0.310892 -0.303241 +vn -4.972171 -0.355494 -2.775043 +v -0.689984 -0.673869 -1.332763 +vn -5.966691 0.542908 6.684670 +v -0.315612 -0.299497 -0.303241 +vn -4.490705 3.564189 -4.375466 +v -0.685264 -0.662474 -1.332763 +vn -3.564171 4.490714 4.375473 +v -0.310892 -0.288102 -0.303241 +vn -0.542894 5.966691 -6.684712 +v -0.673869 -0.657754 -1.332763 +vn 0.355498 4.972172 2.775045 +v -0.299497 -0.283382 -0.303241 +vn 4.122747 4.122738 -7.710707 +v -0.662474 -0.662474 -1.332763 +vn 3.292301 3.292283 2.317991 +v -0.288102 -0.288102 -0.303241 +vn 5.966716 -0.542900 -6.684727 +v -0.657754 -0.673869 -1.332763 +vn 4.972217 0.355505 2.775045 +v -0.283382 -0.299497 -0.303241 +vn 3.564143 -4.490687 -4.375431 +v -0.662474 -0.685264 -1.332763 +vn 4.490695 -3.564148 4.375445 +v -0.288102 -0.310892 -0.303241 +vn -5.966710 -0.542906 6.684696 +v -0.315612 0.299497 -0.303241 +vn -4.972151 0.355530 -2.775038 +v -0.689984 0.673869 -1.332763 +vn -4.490701 -3.564152 -4.375435 +v -0.685264 0.662474 -1.332763 +vn -3.564142 -4.490708 4.375428 +v -0.310892 0.288102 -0.303241 +vn -0.542903 -5.966713 -6.684718 +v -0.673869 0.657754 -1.332763 +vn 0.355513 -4.972204 2.775044 +v -0.299497 0.283382 -0.303241 +vn 4.122728 -4.122761 -7.710725 +v -0.662474 0.662474 -1.332763 +vn 3.292291 -3.292302 2.317997 +v -0.288102 0.288102 -0.303241 +vn 5.966693 0.542908 -6.684679 +v -0.657754 0.673869 -1.332763 +vn 4.972177 -0.355509 2.775049 +v -0.283382 0.299497 -0.303241 +vn 3.564167 4.490698 -4.375471 +v -0.662474 0.685264 -1.332763 +vn 4.490724 3.564162 4.375457 +v -0.288102 0.310892 -0.303241 +vn -0.355461 4.972190 -2.775077 +v -0.673868 0.689984 -1.332763 +vn 0.542909 5.966693 6.684693 +v -0.299497 0.315612 -0.303241 +vn -3.292262 3.292327 -2.317995 +v -0.685264 0.685264 -1.332763 +vn -4.122717 4.122703 7.710712 +v -0.310892 0.310892 -0.303241 +vn 0.000000 0.000000 12.566369 +v -0.299497 0.299497 -0.303241 +vn 0.000000 0.000000 -12.566371 +v -0.673869 0.673869 -1.332763 +vn -0.000000 0.000003 -12.550662 +v 1.969194 0.000000 0.187186 +vn 0.382901 -0.158603 -0.001035 +v 2.886225 -0.379846 0.221851 +vn 0.293061 -0.293061 -0.001034 +v 2.671059 -0.701864 0.221851 +vn -0.000000 -0.000002 12.545240 +v 1.969194 0.000000 0.262060 +vn 0.158603 -0.382902 -0.001034 +v 2.349041 -0.917030 0.221851 +vn 0.000000 -0.414450 -0.001035 +v 1.969195 -0.992586 0.221851 +vn -0.158603 -0.382902 -0.001034 +v 1.589348 -0.917030 0.221851 +vn -0.293061 -0.293061 -0.001034 +v 1.267330 -0.701865 0.221851 +vn -0.382902 -0.158603 -0.001034 +v 1.052164 -0.379847 0.221851 +vn -0.414451 -0.000000 -0.001035 +v 0.976608 -0.000000 0.221851 +vn -0.382902 0.158603 -0.001035 +v 1.052164 0.379846 0.221852 +vn -0.293061 0.293061 -0.001035 +v 1.267330 0.701864 0.221852 +vn -0.158603 0.382902 -0.001035 +v 1.589348 0.917030 0.221852 +vn -0.000000 0.414450 -0.001034 +v 1.969194 0.992586 0.221852 +vn 0.158603 0.382902 -0.001035 +v 2.349040 0.917030 0.221852 +vn 0.293061 0.293061 -0.001034 +v 2.671058 0.701864 0.221852 +vn 0.382902 0.158603 -0.001034 +v 2.886224 0.379846 0.221852 +vn 0.414451 0.000001 -0.001035 +v 2.961780 0.000000 0.221851 +vn -0.000008 12.566368 -0.000000 +v 0.000000 -0.561441 0.000000 +vn 6.069087 5.235987 -0.000000 +v 0.081383 -0.561441 0.000000 +vn 5.255986 5.235990 -3.034542 +v 0.070480 -0.561441 -0.040692 +vn 0.000000 -12.566371 0.000000 +v -0.000000 -2.084521 0.000000 +vn 5.255986 -5.235988 -3.034540 +v 0.070480 -2.084521 -0.040692 +vn 6.069087 -5.235988 0.000004 +v 0.081383 -2.084521 0.000000 +vn 3.034549 5.235987 -5.255981 +v 0.040692 -0.561441 -0.070480 +vn 3.034550 -5.235990 -5.255981 +v 0.040691 -2.084521 -0.070480 +vn 0.000003 5.235986 -6.069087 +v 0.000000 -0.561441 -0.081383 +vn 0.000004 -5.235984 -6.069086 +v -0.000000 -2.084521 -0.081383 +vn -3.034544 5.235990 -5.255979 +v -0.040692 -0.561441 -0.070480 +vn -3.034543 -5.235991 -5.255985 +v -0.040692 -2.084521 -0.070480 +vn -5.256004 5.235986 -3.034550 +v -0.070480 -0.561441 -0.040692 +vn -5.255981 -5.235989 -3.034549 +v -0.070480 -2.084521 -0.040692 +vn -6.069103 5.235987 0.000003 +v -0.081383 -0.561441 0.000000 +vn -6.069096 -5.235986 -0.000007 +v -0.081384 -2.084521 0.000000 +vn -5.256007 5.235991 3.034549 +v -0.070480 -0.561441 0.040692 +vn -5.255994 -5.235988 3.034542 +v -0.070480 -2.084521 0.040692 +vn -3.034551 5.235987 5.255974 +v -0.040692 -0.561441 0.070480 +vn -3.034557 -5.235989 5.255986 +v -0.040692 -2.084521 0.070480 +vn -0.000000 5.235986 6.069087 +v -0.000000 -0.561441 0.081383 +vn -0.000008 -5.235987 6.069087 +v -0.000000 -2.084521 0.081383 +vn 3.034541 5.235992 5.255988 +v 0.040691 -0.561441 0.070480 +vn 3.034538 -5.235988 5.255987 +v 0.040691 -2.084521 0.070480 +vn 5.255979 5.235983 3.034549 +v 0.070480 -0.561441 0.040692 +vn 5.255981 -5.235987 3.034548 +v 0.070480 -2.084521 0.040692 +vn 0.158603 -0.382902 -0.001035 +v 0.379846 -2.886224 0.221852 +vn 0.000003 0.000000 -12.550662 +v -0.000000 -1.969194 0.187186 +vn 0.000001 -0.414451 -0.001034 +v 0.000000 -2.961780 0.221851 +vn -0.000003 0.000000 12.545240 +v -0.000000 -1.969194 0.262060 +vn 0.293061 -0.293061 -0.001035 +v 0.701864 -2.671058 0.221852 +vn 0.382902 -0.158603 -0.001034 +v 0.917030 -2.349040 0.221852 +vn 0.414450 0.000000 -0.001035 +v 0.992586 -1.969194 0.221852 +vn 0.382902 0.158603 -0.001034 +v 0.917030 -1.589348 0.221852 +vn 0.293061 0.293061 -0.001034 +v 0.701864 -1.267330 0.221852 +vn 0.158603 0.382902 -0.001035 +v 0.379846 -1.052164 0.221852 +vn -0.000000 0.414451 -0.001035 +v -0.000000 -0.976608 0.221851 +vn -0.158603 0.382902 -0.001035 +v -0.379847 -1.052164 0.221851 +vn -0.293061 0.293061 -0.001035 +v -0.701865 -1.267330 0.221851 +vn -0.382902 0.158603 -0.001034 +v -0.917030 -1.589348 0.221851 +vn -0.414450 0.000000 -0.001035 +v -0.992586 -1.969194 0.221851 +vn -0.382902 -0.158603 -0.001034 +v -0.917031 -2.349040 0.221851 +vn -0.293061 -0.293060 -0.001035 +v -0.701865 -2.671059 0.221851 +vn -0.158603 -0.382901 -0.001035 +v -0.379847 -2.886225 0.221851 +vn -0.414451 -0.000000 -0.001035 +v -2.961780 0.000000 0.221851 +vn -0.382901 0.158603 -0.001034 +v -2.886225 0.379847 0.221851 +vn 0.000000 -0.000003 -12.550660 +v -1.969194 0.000001 0.187186 +vn 0.000000 0.000003 12.545241 +v -1.969194 0.000001 0.262060 +vn -0.293060 0.293061 -0.001034 +v -2.671059 0.701865 0.221851 +vn -0.158603 0.382902 -0.001035 +v -2.349040 0.917031 0.221851 +vn 0.000000 0.414450 -0.001035 +v -1.969194 0.992587 0.221851 +vn 0.158603 0.382902 -0.001035 +v -1.589348 0.917031 0.221851 +vn 0.293061 0.293061 -0.001034 +v -1.267330 0.701865 0.221851 +vn 0.382902 0.158603 -0.001034 +v -1.052164 0.379847 0.221851 +vn 0.414451 0.000000 -0.001035 +v -0.976608 0.000000 0.221851 +vn 0.382902 -0.158603 -0.001034 +v -1.052164 -0.379846 0.221852 +vn 0.293061 -0.293061 -0.001034 +v -1.267330 -0.701864 0.221852 +vn 0.158603 -0.382902 -0.001034 +v -1.589348 -0.917029 0.221852 +vn 0.000000 -0.414450 -0.001034 +v -1.969194 -0.992585 0.221852 +vn -0.158603 -0.382902 -0.001034 +v -2.349041 -0.917029 0.221852 +vn -0.293061 -0.293061 -0.001034 +v -2.671058 -0.701864 0.221852 +vn -0.382902 -0.158603 -0.001035 +v -2.886224 -0.379846 0.221852 +vn 5.235981 -5.255978 3.034548 +v -0.561441 -0.070480 0.040692 +vn 5.235986 -6.069087 -0.000000 +v -0.561441 -0.081383 0.000000 +vn -5.235989 -6.069088 0.000004 +v -2.084521 -0.081383 0.000000 +vn -5.235990 -5.255980 3.034549 +v -2.084521 -0.070479 0.040692 +vn 5.235992 -3.034540 5.255989 +v -0.561441 -0.040691 0.070480 +vn -5.235989 -3.034539 5.255987 +v -2.084521 -0.040691 0.070480 +vn 5.235986 0.000001 6.069087 +v -0.561441 0.000000 0.081383 +vn -5.235987 0.000008 6.069087 +v -2.084521 0.000001 0.081383 +vn 5.235988 3.034551 5.255973 +v -0.561441 0.040692 0.070480 +vn -5.235989 3.034557 5.255987 +v -2.084521 0.040692 0.070480 +vn 5.235992 5.256007 3.034549 +v -0.561441 0.070480 0.040692 +vn -5.235987 5.255994 3.034543 +v -2.084521 0.070481 0.040692 +vn 5.235989 6.069104 0.000003 +v -0.561441 0.081383 0.000000 +vn -5.235985 6.069095 -0.000007 +v -2.084521 0.081384 0.000000 +vn 5.235990 5.256006 -3.034548 +v -0.561441 0.070480 -0.040692 +vn -5.235988 5.255981 -3.034549 +v -2.084521 0.070480 -0.040692 +vn 5.235989 3.034546 -5.255977 +v -0.561441 0.040692 -0.070480 +vn -5.235990 3.034543 -5.255985 +v -2.084521 0.040692 -0.070480 +vn 5.235987 -0.000001 -6.069087 +v -0.561441 0.000000 -0.081383 +vn -5.235984 -0.000004 -6.069086 +v -2.084521 0.000000 -0.081383 +vn 5.235985 -3.034547 -5.255981 +v -0.561441 -0.040691 -0.070480 +vn -5.235991 -3.034550 -5.255980 +v -2.084521 -0.040691 -0.070480 +vn 5.235989 -5.255986 -3.034541 +v -0.561441 -0.070480 -0.040692 +vn -5.235990 -5.255986 -3.034541 +v -2.084521 -0.070479 -0.040692 +vn -12.566370 0.000000 0.000000 +v -2.084521 0.000001 0.000000 +vn 12.566370 0.000008 -0.000000 +v -0.561441 0.000000 0.000000 +vn 0.000008 -12.566371 -0.000000 +v 0.000000 0.561441 0.000000 +vn -6.069087 -5.235986 -0.000000 +v -0.081383 0.561441 0.000000 +vn -5.255983 -5.235986 -3.034544 +v -0.070480 0.561441 -0.040692 +vn 0.000000 12.566370 0.000000 +v 0.000001 2.084521 0.000000 +vn -5.255984 5.235989 -3.034543 +v -0.070479 2.084521 -0.040692 +vn -6.069086 5.235986 0.000008 +v -0.081382 2.084521 0.000000 +vn -3.034545 -5.235988 -5.255983 +v -0.040691 0.561441 -0.070480 +vn -3.034548 5.235993 -5.255983 +v -0.040691 2.084521 -0.070480 +vn -0.000002 -5.235987 -6.069087 +v 0.000000 0.561441 -0.081383 +vn -0.000004 5.235984 -6.069086 +v 0.000001 2.084521 -0.081383 +vn 3.034546 -5.235990 -5.255977 +v 0.040692 0.561441 -0.070480 +vn 3.034543 5.235989 -5.255985 +v 0.040692 2.084521 -0.070480 +vn 5.256006 -5.235992 -3.034552 +v 0.070480 0.561441 -0.040692 +vn 5.255981 5.235987 -3.034550 +v 0.070481 2.084521 -0.040692 +vn 6.069102 -5.235987 -0.000002 +v 0.081384 0.561441 0.000000 +vn 6.069095 5.235984 -0.000008 +v 0.081384 2.084521 0.000000 +vn 5.256007 -5.235992 3.034549 +v 0.070480 0.561441 0.040692 +vn 5.255994 5.235986 3.034542 +v 0.070481 2.084521 0.040692 +vn 3.034550 -5.235988 5.255974 +v 0.040692 0.561441 0.070480 +vn 3.034556 5.235989 5.255987 +v 0.040693 2.084521 0.070480 +vn 0.000000 -5.235987 6.069087 +v 0.000000 0.561441 0.081383 +vn 0.000009 5.235988 6.069088 +v 0.000001 2.084521 0.081383 +vn -3.034540 -5.235992 5.255989 +v -0.040691 0.561441 0.070480 +vn -3.034540 5.235986 5.255985 +v -0.040691 2.084521 0.070480 +vn -5.255979 -5.235981 3.034548 +v -0.070480 0.561441 0.040692 +vn -5.255982 5.235995 3.034551 +v -0.070479 2.084521 0.040692 +vn -0.158603 0.382902 -0.001035 +v -0.379845 2.886224 0.221852 +vn -0.000003 -0.000000 -12.550661 +v 0.000001 1.969194 0.187186 +vn -0.000000 0.414451 -0.001034 +v 0.000001 2.961780 0.221851 +vn 0.000003 -0.000000 12.545241 +v 0.000001 1.969194 0.262060 +vn -0.293061 0.293061 -0.001034 +v -0.701863 2.671058 0.221852 +vn -0.382902 0.158603 -0.001034 +v -0.917029 2.349041 0.221852 +vn -0.414450 0.000000 -0.001035 +v -0.992585 1.969195 0.221852 +vn -0.382902 -0.158603 -0.001034 +v -0.917029 1.589348 0.221852 +vn -0.293061 -0.293061 -0.001035 +v -0.701864 1.267330 0.221852 +vn -0.158603 -0.382902 -0.001035 +v -0.379846 1.052164 0.221852 +vn -0.000000 -0.414451 -0.001034 +v 0.000001 0.976608 0.221851 +vn 0.158603 -0.382902 -0.001035 +v 0.379847 1.052164 0.221851 +vn 0.293061 -0.293061 -0.001034 +v 0.701865 1.267330 0.221851 +vn 0.382902 -0.158603 -0.001035 +v 0.917031 1.589348 0.221851 +vn 0.414450 -0.000000 -0.001035 +v 0.992587 1.969194 0.221851 +vn 0.382902 0.158603 -0.001035 +v 0.917031 2.349040 0.221851 +vn 0.293061 0.293060 -0.001034 +v 0.701866 2.671059 0.221851 +vn 0.158603 0.382901 -0.001034 +v 0.379847 2.886225 0.221851 +vn 2.221441 5.363034 -4.712390 +v 0.336934 0.561557 -0.299497 +vn 2.221442 -5.363034 -4.712392 +v 0.336934 -0.561557 -0.299497 +vn -2.221441 -5.363034 -4.712388 +v -0.336934 -0.561557 -0.299497 +vn -2.221440 5.363033 -4.712384 +v -0.336934 0.561558 -0.299497 +vn 2.221442 5.363033 4.712387 +v 0.336935 0.561557 0.299497 +vn 2.221439 -5.363034 4.712385 +v 0.336934 -0.561558 0.299497 +vn -2.221441 -5.363034 4.712389 +v -0.336934 -0.561557 0.299497 +vn -2.221442 5.363035 4.712392 +v -0.336934 0.561557 0.299497 +vn 5.363035 2.221442 -4.712393 +v 0.561557 0.336934 -0.299497 +vn -5.363034 2.221443 -4.712390 +v -0.561557 0.336935 -0.299497 +vn 5.363034 2.221440 4.712386 +v 0.561558 0.336934 0.299497 +vn -5.363035 2.221442 4.712391 +v -0.561557 0.336934 0.299497 +vn 5.363035 -2.221442 -4.712392 +v 0.561557 -0.336934 -0.299497 +vn -5.363034 -2.221440 -4.712389 +v -0.561557 -0.336934 -0.299497 +vn 5.363033 -2.221442 4.712387 +v 0.561557 -0.336935 0.299497 +vn -5.363034 -2.221441 4.712388 +v -0.561557 -0.336934 0.299497 +# 300 vertices, 0 vertices normals + +f 61//61 37//37 38//38 +f 62//62 50//50 49//49 +f 61//61 38//38 39//39 +f 62//62 51//51 50//50 +f 61//61 39//39 40//40 +f 62//62 52//52 51//51 +f 61//61 40//40 41//41 +f 62//62 53//53 52//52 +f 61//61 41//41 42//42 +f 62//62 54//54 53//53 +f 61//61 42//42 43//43 +f 62//62 55//55 54//54 +f 61//61 43//43 44//44 +f 62//62 56//56 55//55 +f 61//61 44//44 45//45 +f 62//62 57//57 56//56 +f 61//61 45//45 46//46 +f 62//62 58//58 57//57 +f 61//61 46//46 47//47 +f 62//62 59//59 58//58 +f 61//61 47//47 48//48 +f 62//62 60//60 59//59 +f 48//48 37//37 61//61 +f 62//62 49//49 60//60 +f 49//49 37//37 48//48 +f 49//49 48//48 60//60 +f 47//47 59//59 60//60 +f 47//47 60//60 48//48 +f 46//46 58//58 59//59 +f 46//46 59//59 47//47 +f 45//45 57//57 58//58 +f 45//45 58//58 46//46 +f 44//44 56//56 57//57 +f 44//44 57//57 45//45 +f 43//43 55//55 56//56 +f 43//43 56//56 44//44 +f 42//42 54//54 55//55 +f 42//42 55//55 43//43 +f 41//41 53//53 54//54 +f 41//41 54//54 42//42 +f 40//40 52//52 53//53 +f 40//40 53//53 41//41 +f 39//39 51//51 52//52 +f 39//39 52//52 40//40 +f 38//38 50//50 51//51 +f 38//38 51//51 39//39 +f 37//37 49//49 50//50 +f 37//37 50//50 38//38 +f 152//152 136//136 135//135 +f 138//138 136//136 152//152 +f 137//137 139//139 135//135 +f 138//138 139//139 137//137 +f 140//140 141//141 135//135 +f 138//138 141//141 140//140 +f 142//142 143//143 135//135 +f 138//138 143//143 142//142 +f 144//144 145//145 135//135 +f 138//138 145//145 144//144 +f 146//146 147//147 135//135 +f 138//138 147//147 146//146 +f 148//148 149//149 135//135 +f 138//138 149//149 148//148 +f 150//150 151//151 135//135 +f 138//138 151//151 150//150 +f 182//182 179//179 183//183 +f 183//183 179//179 180//180 +f 182//182 184//184 185//185 +f 185//185 184//184 180//180 +f 182//182 186//186 187//187 +f 187//187 186//186 180//180 +f 182//182 188//188 189//189 +f 189//189 188//188 180//180 +f 182//182 190//190 191//191 +f 191//191 190//190 180//180 +f 182//182 192//192 193//193 +f 193//193 192//192 180//180 +f 182//182 194//194 195//195 +f 195//195 194//194 180//180 +f 182//182 196//196 181//181 +f 181//181 196//196 180//180 +f 197//197 198//198 199//199 +f 200//200 198//198 197//197 +f 201//201 202//202 199//199 +f 200//200 202//202 201//201 +f 203//203 204//204 199//199 +f 200//200 204//204 203//203 +f 205//205 206//206 199//199 +f 200//200 206//206 205//205 +f 207//207 208//208 199//199 +f 200//200 208//208 207//207 +f 209//209 210//210 199//199 +f 200//200 210//210 209//209 +f 211//211 212//212 199//199 +f 200//200 212//212 211//211 +f 213//213 214//214 199//199 +f 200//200 214//214 213//213 +f 270//270 267//267 271//271 +f 271//271 267//267 268//268 +f 270//270 272//272 273//273 +f 273//273 272//272 268//268 +f 270//270 274//274 275//275 +f 275//275 274//274 268//268 +f 270//270 276//276 277//277 +f 277//277 276//276 268//268 +f 270//270 278//278 279//279 +f 279//279 278//278 268//268 +f 270//270 280//280 281//281 +f 281//281 280//280 268//268 +f 270//270 282//282 283//283 +f 283//283 282//282 268//268 +f 270//270 284//284 269//269 +f 269//269 284//284 268//268 +f 17//17 1//1 4//4 +f 3//3 2//2 18//18 +f 17//17 4//4 6//6 +f 18//18 5//5 3//3 +f 17//17 6//6 8//8 +f 18//18 7//7 5//5 +f 17//17 8//8 10//10 +f 18//18 9//9 7//7 +f 17//17 10//10 12//12 +f 18//18 11//11 9//9 +f 17//17 12//12 14//14 +f 18//18 13//13 11//11 +f 17//17 14//14 16//16 +f 18//18 15//15 13//13 +f 16//16 1//1 17//17 +f 18//18 2//2 15//15 +f 19//19 21//21 20//20 +f 22//22 24//24 23//23 +f 19//19 20//20 25//25 +f 22//22 26//26 24//24 +f 19//19 25//25 27//27 +f 22//22 28//28 26//26 +f 19//19 27//27 29//29 +f 22//22 30//30 28//28 +f 19//19 29//29 31//31 +f 22//22 32//32 30//30 +f 19//19 31//31 33//33 +f 22//22 34//34 32//32 +f 19//19 33//33 35//35 +f 22//22 36//36 34//34 +f 35//35 21//21 19//19 +f 36//36 22//22 23//23 +f 79//79 63//63 64//64 +f 80//80 72//72 71//71 +f 79//79 64//64 65//65 +f 80//80 73//73 72//72 +f 79//79 65//65 66//66 +f 80//80 74//74 73//73 +f 79//79 66//66 67//67 +f 80//80 75//75 74//74 +f 79//79 67//67 68//68 +f 80//80 76//76 75//75 +f 79//79 68//68 69//69 +f 80//80 77//77 76//76 +f 79//79 69//69 70//70 +f 80//80 78//78 77//77 +f 70//70 63//63 79//79 +f 80//80 71//71 78//78 +f 97//97 81//81 84//84 +f 83//83 82//82 98//98 +f 97//97 84//84 86//86 +f 98//98 85//85 83//83 +f 97//97 86//86 88//88 +f 98//98 87//87 85//85 +f 97//97 88//88 90//90 +f 98//98 89//89 87//87 +f 97//97 90//90 92//92 +f 98//98 91//91 89//89 +f 97//97 92//92 94//94 +f 98//98 93//93 91//91 +f 97//97 94//94 96//96 +f 98//98 95//95 93//93 +f 97//97 96//96 81//81 +f 98//98 82//82 95//95 +f 99//99 101//101 100//100 +f 102//102 104//104 103//103 +f 99//99 100//100 105//105 +f 102//102 106//106 104//104 +f 99//99 105//105 107//107 +f 102//102 108//108 106//106 +f 99//99 107//107 109//109 +f 102//102 110//110 108//108 +f 99//99 109//109 111//111 +f 102//102 112//112 110//110 +f 99//99 111//111 113//113 +f 102//102 114//114 112//112 +f 99//99 113//113 115//115 +f 102//102 116//116 114//114 +f 115//115 101//101 99//99 +f 102//102 103//103 116//116 +f 133//133 117//117 120//120 +f 119//119 118//118 134//134 +f 133//133 120//120 122//122 +f 134//134 121//121 119//119 +f 133//133 122//122 124//124 +f 134//134 123//123 121//121 +f 133//133 124//124 126//126 +f 134//134 125//125 123//123 +f 133//133 126//126 128//128 +f 134//134 127//127 125//125 +f 133//133 128//128 130//130 +f 134//134 129//129 127//127 +f 133//133 130//130 132//132 +f 134//134 131//131 129//129 +f 133//133 132//132 117//117 +f 134//134 118//118 131//131 +f 153//153 154//154 155//155 +f 156//156 157//157 158//158 +f 153//153 155//155 159//159 +f 156//156 160//160 157//157 +f 153//153 159//159 161//161 +f 156//156 162//162 160//160 +f 153//153 161//161 163//163 +f 156//156 164//164 162//162 +f 153//153 163//163 165//165 +f 156//156 166//166 164//164 +f 153//153 165//165 167//167 +f 156//156 168//168 166//166 +f 153//153 167//167 169//169 +f 156//156 170//170 168//168 +f 153//153 169//169 171//171 +f 156//156 172//172 170//170 +f 153//153 171//171 173//173 +f 156//156 174//174 172//172 +f 153//153 173//173 175//175 +f 156//156 176//176 174//174 +f 153//153 175//175 177//177 +f 156//156 178//178 176//176 +f 153//153 177//177 154//154 +f 156//156 158//158 178//178 +f 239//239 217//217 218//218 +f 240//240 215//215 216//216 +f 239//239 218//218 220//220 +f 240//240 219//219 215//215 +f 239//239 220//220 222//222 +f 240//240 221//221 219//219 +f 239//239 222//222 224//224 +f 240//240 223//223 221//221 +f 239//239 224//224 226//226 +f 240//240 225//225 223//223 +f 239//239 226//226 228//228 +f 240//240 227//227 225//225 +f 239//239 228//228 230//230 +f 240//240 229//229 227//227 +f 239//239 230//230 232//232 +f 240//240 231//231 229//229 +f 239//239 232//232 234//234 +f 240//240 233//233 231//231 +f 239//239 234//234 236//236 +f 240//240 235//235 233//233 +f 239//239 236//236 238//238 +f 240//240 237//237 235//235 +f 239//239 238//238 217//217 +f 240//240 216//216 237//237 +f 241//241 242//242 243//243 +f 244//244 245//245 246//246 +f 241//241 243//243 247//247 +f 244//244 248//248 245//245 +f 241//241 247//247 249//249 +f 244//244 250//250 248//248 +f 241//241 249//249 251//251 +f 244//244 252//252 250//250 +f 241//241 251//251 253//253 +f 244//244 254//254 252//252 +f 241//241 253//253 255//255 +f 244//244 256//256 254//254 +f 241//241 255//255 257//257 +f 244//244 258//258 256//256 +f 241//241 257//257 259//259 +f 244//244 260//260 258//258 +f 241//241 259//259 261//261 +f 244//244 262//262 260//260 +f 241//241 261//261 263//263 +f 244//244 264//264 262//262 +f 241//241 263//263 265//265 +f 244//244 266//266 264//264 +f 241//241 265//265 242//242 +f 244//244 246//246 266//266 +f 300//300 296//296 298//298 +f 296//296 294//294 298//298 +f 291//291 300//300 298//298 +f 291//291 298//298 287//287 +f 299//299 290//290 286//286 +f 299//299 286//286 297//297 +f 295//295 299//299 297//297 +f 295//295 297//297 293//293 +f 300//300 291//291 299//299 +f 291//291 290//290 299//299 +f 296//296 300//300 299//299 +f 296//296 299//299 295//295 +f 297//297 286//286 287//287 +f 297//297 287//287 298//298 +f 293//293 297//297 298//298 +f 293//293 298//298 294//294 +f 296//296 292//292 294//294 +f 292//292 288//288 294//294 +f 293//293 285//285 289//289 +f 293//293 289//289 295//295 +f 292//292 296//296 289//289 +f 296//296 295//295 289//289 +f 285//285 293//293 294//294 +f 285//285 294//294 288//288 +f 289//289 285//285 292//292 +f 285//285 288//288 292//292 +f 286//286 290//290 291//291 +f 286//286 291//291 287//287 +f 265//265 246//246 242//242 +f 265//265 266//266 246//246 +f 263//263 266//266 265//265 +f 263//263 264//264 266//266 +f 261//261 264//264 263//263 +f 261//261 262//262 264//264 +f 259//259 262//262 261//261 +f 259//259 260//260 262//262 +f 257//257 260//260 259//259 +f 257//257 258//258 260//260 +f 255//255 258//258 257//257 +f 255//255 256//256 258//258 +f 253//253 256//256 255//255 +f 253//253 254//254 256//256 +f 251//251 254//254 253//253 +f 251//251 252//252 254//254 +f 249//249 252//252 251//251 +f 249//249 250//250 252//252 +f 247//247 250//250 249//249 +f 247//247 248//248 250//250 +f 243//243 248//248 247//247 +f 243//243 245//245 248//248 +f 242//242 245//245 243//243 +f 242//242 246//246 245//245 +f 216//216 217//217 238//238 +f 216//216 238//238 237//237 +f 237//237 238//238 236//236 +f 237//237 236//236 235//235 +f 235//235 236//236 234//234 +f 235//235 234//234 233//233 +f 233//233 234//234 232//232 +f 233//233 232//232 231//231 +f 231//231 232//232 230//230 +f 231//231 230//230 229//229 +f 229//229 230//230 228//228 +f 229//229 228//228 227//227 +f 227//227 228//228 226//226 +f 227//227 226//226 225//225 +f 225//225 226//226 224//224 +f 225//225 224//224 223//223 +f 223//223 224//224 222//222 +f 223//223 222//222 221//221 +f 221//221 222//222 220//220 +f 221//221 220//220 219//219 +f 219//219 220//220 218//218 +f 219//219 218//218 215//215 +f 215//215 218//218 217//217 +f 215//215 217//217 216//216 +f 177//177 158//158 154//154 +f 177//177 178//178 158//158 +f 175//175 178//178 177//177 +f 175//175 176//176 178//178 +f 173//173 176//176 175//175 +f 173//173 174//174 176//176 +f 171//171 174//174 173//173 +f 171//171 172//172 174//174 +f 169//169 172//172 171//171 +f 169//169 170//170 172//172 +f 167//167 170//170 169//169 +f 167//167 168//168 170//170 +f 165//165 168//168 167//167 +f 165//165 166//166 168//168 +f 163//163 166//166 165//165 +f 163//163 164//164 166//166 +f 161//161 164//164 163//163 +f 161//161 162//162 164//164 +f 159//159 162//162 161//161 +f 159//159 160//160 162//162 +f 155//155 160//160 159//159 +f 155//155 157//157 160//160 +f 154//154 157//157 155//155 +f 154//154 158//158 157//157 +f 118//118 132//132 131//131 +f 118//118 117//117 132//132 +f 131//131 132//132 129//129 +f 129//129 132//132 130//130 +f 129//129 130//130 127//127 +f 127//127 130//130 128//128 +f 127//127 128//128 125//125 +f 125//125 128//128 126//126 +f 125//125 126//126 123//123 +f 123//123 126//126 124//124 +f 123//123 122//122 121//121 +f 123//123 124//124 122//122 +f 121//121 120//120 119//119 +f 121//121 122//122 120//120 +f 117//117 119//119 120//120 +f 117//117 118//118 119//119 +f 103//103 101//101 115//115 +f 103//103 115//115 116//116 +f 113//113 114//114 116//116 +f 113//113 116//116 115//115 +f 111//111 112//112 114//114 +f 111//111 114//114 113//113 +f 109//109 110//110 111//111 +f 110//110 112//112 111//111 +f 107//107 108//108 109//109 +f 108//108 110//110 109//109 +f 105//105 106//106 107//107 +f 106//106 108//108 107//107 +f 100//100 104//104 105//105 +f 104//104 106//106 105//105 +f 101//101 103//103 104//104 +f 101//101 104//104 100//100 +f 82//82 96//96 95//95 +f 82//82 81//81 96//96 +f 95//95 96//96 93//93 +f 93//93 96//96 94//94 +f 93//93 94//94 91//91 +f 91//91 94//94 92//92 +f 91//91 92//92 89//89 +f 89//89 92//92 90//90 +f 89//89 90//90 87//87 +f 87//87 90//90 88//88 +f 87//87 86//86 85//85 +f 87//87 88//88 86//86 +f 85//85 84//84 83//83 +f 85//85 86//86 84//84 +f 81//81 83//83 84//84 +f 81//81 82//82 83//83 +f 71//71 63//63 70//70 +f 71//71 70//70 78//78 +f 69//69 77//77 78//78 +f 69//69 78//78 70//70 +f 68//68 76//76 77//77 +f 68//68 77//77 69//69 +f 67//67 75//75 68//68 +f 75//75 76//76 68//68 +f 66//66 74//74 67//67 +f 74//74 75//75 67//67 +f 65//65 73//73 66//66 +f 73//73 74//74 66//66 +f 64//64 72//72 65//65 +f 72//72 73//73 65//65 +f 63//63 71//71 72//72 +f 63//63 72//72 64//64 +f 23//23 21//21 35//35 +f 23//23 35//35 36//36 +f 33//33 34//34 36//36 +f 33//33 36//36 35//35 +f 31//31 32//32 34//34 +f 31//31 34//34 33//33 +f 29//29 30//30 32//32 +f 29//29 32//32 31//31 +f 27//27 28//28 30//30 +f 27//27 30//30 29//29 +f 25//25 26//26 28//28 +f 25//25 28//28 27//27 +f 20//20 24//24 26//26 +f 20//20 26//26 25//25 +f 24//24 20//20 21//21 +f 24//24 21//21 23//23 +f 2//2 1//1 16//16 +f 16//16 15//15 2//2 +f 15//15 14//14 13//13 +f 15//15 16//16 14//14 +f 13//13 12//12 11//11 +f 13//13 14//14 12//12 +f 11//11 10//10 9//9 +f 11//11 12//12 10//10 +f 9//9 8//8 7//7 +f 9//9 10//10 8//8 +f 7//7 6//6 5//5 +f 7//7 8//8 6//6 +f 5//5 4//4 3//3 +f 5//5 6//6 4//4 +f 1//1 3//3 4//4 +f 1//1 2//2 3//3 +f 138//138 137//137 136//136 +f 136//136 137//137 135//135 +f 138//138 140//140 139//139 +f 139//139 140//140 135//135 +f 138//138 142//142 141//141 +f 141//141 142//142 135//135 +f 138//138 144//144 143//143 +f 143//143 144//144 135//135 +f 138//138 146//146 145//145 +f 145//145 146//146 135//135 +f 138//138 148//148 147//147 +f 147//147 148//148 135//135 +f 138//138 150//150 149//149 +f 149//149 150//150 135//135 +f 138//138 152//152 151//151 +f 151//151 152//152 135//135 +f 179//179 181//181 180//180 +f 182//182 181//181 179//179 +f 184//184 183//183 180//180 +f 182//182 183//183 184//184 +f 186//186 185//185 180//180 +f 182//182 185//185 186//186 +f 188//188 187//187 180//180 +f 182//182 187//187 188//188 +f 190//190 189//189 180//180 +f 182//182 189//189 190//190 +f 192//192 191//191 180//180 +f 182//182 191//191 192//192 +f 194//194 193//193 180//180 +f 182//182 193//193 194//194 +f 196//196 195//195 180//180 +f 182//182 195//195 196//196 +f 200//200 201//201 198//198 +f 198//198 201//201 199//199 +f 200//200 203//203 202//202 +f 202//202 203//203 199//199 +f 200//200 205//205 204//204 +f 204//204 205//205 199//199 +f 200//200 207//207 206//206 +f 206//206 207//207 199//199 +f 200//200 209//209 208//208 +f 208//208 209//209 199//199 +f 200//200 211//211 210//210 +f 210//210 211//211 199//199 +f 200//200 213//213 212//212 +f 212//212 213//213 199//199 +f 200//200 197//197 214//214 +f 214//214 197//197 199//199 +f 267//267 269//269 268//268 +f 270//270 269//269 267//267 +f 272//272 271//271 268//268 +f 270//270 271//271 272//272 +f 274//274 273//273 268//268 +f 270//270 273//273 274//274 +f 276//276 275//275 268//268 +f 270//270 275//275 276//276 +f 278//278 277//277 268//268 +f 270//270 277//277 278//278 +f 280//280 279//279 268//268 +f 270//270 279//279 280//280 +f 282//282 281//281 268//268 +f 270//270 281//281 282//282 +f 284//284 283//283 268//268 +f 270//270 283//283 284//284 +f 61//61 37//37 38//38 +f 62//62 50//50 49//49 +f 61//61 38//38 39//39 +f 62//62 51//51 50//50 +f 61//61 39//39 40//40 +f 62//62 52//52 51//51 +f 61//61 40//40 41//41 +f 62//62 53//53 52//52 +f 61//61 41//41 42//42 +f 62//62 54//54 53//53 +f 61//61 42//42 43//43 +f 62//62 55//55 54//54 +f 61//61 43//43 44//44 +f 62//62 56//56 55//55 +f 61//61 44//44 45//45 +f 62//62 57//57 56//56 +f 61//61 45//45 46//46 +f 62//62 58//58 57//57 +f 61//61 46//46 47//47 +f 62//62 59//59 58//58 +f 61//61 47//47 48//48 +f 62//62 60//60 59//59 +f 48//48 37//37 61//61 +f 62//62 49//49 60//60 +f 49//49 37//37 48//48 +f 49//49 48//48 60//60 +f 47//47 59//59 60//60 +f 47//47 60//60 48//48 +f 46//46 58//58 59//59 +f 46//46 59//59 47//47 +f 45//45 57//57 58//58 +f 45//45 58//58 46//46 +f 44//44 56//56 57//57 +f 44//44 57//57 45//45 +f 43//43 55//55 56//56 +f 43//43 56//56 44//44 +f 42//42 54//54 55//55 +f 42//42 55//55 43//43 +f 41//41 53//53 54//54 +f 41//41 54//54 42//42 +f 40//40 52//52 53//53 +f 40//40 53//53 41//41 +f 39//39 51//51 52//52 +f 39//39 52//52 40//40 +f 38//38 50//50 51//51 +f 38//38 51//51 39//39 +f 37//37 49//49 50//50 +f 37//37 50//50 38//38 +f 152//152 136//136 135//135 +f 138//138 136//136 152//152 +f 137//137 139//139 135//135 +f 138//138 139//139 137//137 +f 140//140 141//141 135//135 +f 138//138 141//141 140//140 +f 142//142 143//143 135//135 +f 138//138 143//143 142//142 +f 144//144 145//145 135//135 +f 138//138 145//145 144//144 +f 146//146 147//147 135//135 +f 138//138 147//147 146//146 +f 148//148 149//149 135//135 +f 138//138 149//149 148//148 +f 150//150 151//151 135//135 +f 138//138 151//151 150//150 +f 182//182 179//179 183//183 +f 183//183 179//179 180//180 +f 182//182 184//184 185//185 +f 185//185 184//184 180//180 +f 182//182 186//186 187//187 +f 187//187 186//186 180//180 +f 182//182 188//188 189//189 +f 189//189 188//188 180//180 +f 182//182 190//190 191//191 +f 191//191 190//190 180//180 +f 182//182 192//192 193//193 +f 193//193 192//192 180//180 +f 182//182 194//194 195//195 +f 195//195 194//194 180//180 +f 182//182 196//196 181//181 +f 181//181 196//196 180//180 +f 197//197 198//198 199//199 +f 200//200 198//198 197//197 +f 201//201 202//202 199//199 +f 200//200 202//202 201//201 +f 203//203 204//204 199//199 +f 200//200 204//204 203//203 +f 205//205 206//206 199//199 +f 200//200 206//206 205//205 +f 207//207 208//208 199//199 +f 200//200 208//208 207//207 +f 209//209 210//210 199//199 +f 200//200 210//210 209//209 +f 211//211 212//212 199//199 +f 200//200 212//212 211//211 +f 213//213 214//214 199//199 +f 200//200 214//214 213//213 +f 270//270 267//267 271//271 +f 271//271 267//267 268//268 +f 270//270 272//272 273//273 +f 273//273 272//272 268//268 +f 270//270 274//274 275//275 +f 275//275 274//274 268//268 +f 270//270 276//276 277//277 +f 277//277 276//276 268//268 +f 270//270 278//278 279//279 +f 279//279 278//278 268//268 +f 270//270 280//280 281//281 +f 281//281 280//280 268//268 +f 270//270 282//282 283//283 +f 283//283 282//282 268//268 +f 270//270 284//284 269//269 +f 269//269 284//284 268//268 +f 17//17 1//1 4//4 +f 3//3 2//2 18//18 +f 17//17 4//4 6//6 +f 18//18 5//5 3//3 +f 17//17 6//6 8//8 +f 18//18 7//7 5//5 +f 17//17 8//8 10//10 +f 18//18 9//9 7//7 +f 17//17 10//10 12//12 +f 18//18 11//11 9//9 +f 17//17 12//12 14//14 +f 18//18 13//13 11//11 +f 17//17 14//14 16//16 +f 18//18 15//15 13//13 +f 16//16 1//1 17//17 +f 18//18 2//2 15//15 +f 19//19 21//21 20//20 +f 22//22 24//24 23//23 +f 19//19 20//20 25//25 +f 22//22 26//26 24//24 +f 19//19 25//25 27//27 +f 22//22 28//28 26//26 +f 19//19 27//27 29//29 +f 22//22 30//30 28//28 +f 19//19 29//29 31//31 +f 22//22 32//32 30//30 +f 19//19 31//31 33//33 +f 22//22 34//34 32//32 +f 19//19 33//33 35//35 +f 22//22 36//36 34//34 +f 35//35 21//21 19//19 +f 36//36 22//22 23//23 +f 79//79 63//63 64//64 +f 80//80 72//72 71//71 +f 79//79 64//64 65//65 +f 80//80 73//73 72//72 +f 79//79 65//65 66//66 +f 80//80 74//74 73//73 +f 79//79 66//66 67//67 +f 80//80 75//75 74//74 +f 79//79 67//67 68//68 +f 80//80 76//76 75//75 +f 79//79 68//68 69//69 +f 80//80 77//77 76//76 +f 79//79 69//69 70//70 +f 80//80 78//78 77//77 +f 70//70 63//63 79//79 +f 80//80 71//71 78//78 +f 97//97 81//81 84//84 +f 83//83 82//82 98//98 +f 97//97 84//84 86//86 +f 98//98 85//85 83//83 +f 97//97 86//86 88//88 +f 98//98 87//87 85//85 +f 97//97 88//88 90//90 +f 98//98 89//89 87//87 +f 97//97 90//90 92//92 +f 98//98 91//91 89//89 +f 97//97 92//92 94//94 +f 98//98 93//93 91//91 +f 97//97 94//94 96//96 +f 98//98 95//95 93//93 +f 97//97 96//96 81//81 +f 98//98 82//82 95//95 +f 99//99 101//101 100//100 +f 102//102 104//104 103//103 +f 99//99 100//100 105//105 +f 102//102 106//106 104//104 +f 99//99 105//105 107//107 +f 102//102 108//108 106//106 +f 99//99 107//107 109//109 +f 102//102 110//110 108//108 +f 99//99 109//109 111//111 +f 102//102 112//112 110//110 +f 99//99 111//111 113//113 +f 102//102 114//114 112//112 +f 99//99 113//113 115//115 +f 102//102 116//116 114//114 +f 115//115 101//101 99//99 +f 102//102 103//103 116//116 +f 133//133 117//117 120//120 +f 119//119 118//118 134//134 +f 133//133 120//120 122//122 +f 134//134 121//121 119//119 +f 133//133 122//122 124//124 +f 134//134 123//123 121//121 +f 133//133 124//124 126//126 +f 134//134 125//125 123//123 +f 133//133 126//126 128//128 +f 134//134 127//127 125//125 +f 133//133 128//128 130//130 +f 134//134 129//129 127//127 +f 133//133 130//130 132//132 +f 134//134 131//131 129//129 +f 133//133 132//132 117//117 +f 134//134 118//118 131//131 +f 153//153 154//154 155//155 +f 156//156 157//157 158//158 +f 153//153 155//155 159//159 +f 156//156 160//160 157//157 +f 153//153 159//159 161//161 +f 156//156 162//162 160//160 +f 153//153 161//161 163//163 +f 156//156 164//164 162//162 +f 153//153 163//163 165//165 +f 156//156 166//166 164//164 +f 153//153 165//165 167//167 +f 156//156 168//168 166//166 +f 153//153 167//167 169//169 +f 156//156 170//170 168//168 +f 153//153 169//169 171//171 +f 156//156 172//172 170//170 +f 153//153 171//171 173//173 +f 156//156 174//174 172//172 +f 153//153 173//173 175//175 +f 156//156 176//176 174//174 +f 153//153 175//175 177//177 +f 156//156 178//178 176//176 +f 153//153 177//177 154//154 +f 156//156 158//158 178//178 +f 239//239 217//217 218//218 +f 240//240 215//215 216//216 +f 239//239 218//218 220//220 +f 240//240 219//219 215//215 +f 239//239 220//220 222//222 +f 240//240 221//221 219//219 +f 239//239 222//222 224//224 +f 240//240 223//223 221//221 +f 239//239 224//224 226//226 +f 240//240 225//225 223//223 +f 239//239 226//226 228//228 +f 240//240 227//227 225//225 +f 239//239 228//228 230//230 +f 240//240 229//229 227//227 +f 239//239 230//230 232//232 +f 240//240 231//231 229//229 +f 239//239 232//232 234//234 +f 240//240 233//233 231//231 +f 239//239 234//234 236//236 +f 240//240 235//235 233//233 +f 239//239 236//236 238//238 +f 240//240 237//237 235//235 +f 239//239 238//238 217//217 +f 240//240 216//216 237//237 +f 241//241 242//242 243//243 +f 244//244 245//245 246//246 +f 241//241 243//243 247//247 +f 244//244 248//248 245//245 +f 241//241 247//247 249//249 +f 244//244 250//250 248//248 +f 241//241 249//249 251//251 +f 244//244 252//252 250//250 +f 241//241 251//251 253//253 +f 244//244 254//254 252//252 +f 241//241 253//253 255//255 +f 244//244 256//256 254//254 +f 241//241 255//255 257//257 +f 244//244 258//258 256//256 +f 241//241 257//257 259//259 +f 244//244 260//260 258//258 +f 241//241 259//259 261//261 +f 244//244 262//262 260//260 +f 241//241 261//261 263//263 +f 244//244 264//264 262//262 +f 241//241 263//263 265//265 +f 244//244 266//266 264//264 +f 241//241 265//265 242//242 +f 244//244 246//246 266//266 +f 300//300 296//296 298//298 +f 296//296 294//294 298//298 +f 291//291 300//300 298//298 +f 291//291 298//298 287//287 +f 299//299 290//290 286//286 +f 299//299 286//286 297//297 +f 295//295 299//299 297//297 +f 295//295 297//297 293//293 +f 300//300 291//291 299//299 +f 291//291 290//290 299//299 +f 296//296 300//300 299//299 +f 296//296 299//299 295//295 +f 297//297 286//286 287//287 +f 297//297 287//287 298//298 +f 293//293 297//297 298//298 +f 293//293 298//298 294//294 +f 296//296 292//292 294//294 +f 292//292 288//288 294//294 +f 293//293 285//285 289//289 +f 293//293 289//289 295//295 +f 292//292 296//296 289//289 +f 296//296 295//295 289//289 +f 285//285 293//293 294//294 +f 285//285 294//294 288//288 +f 289//289 285//285 292//292 +f 285//285 288//288 292//292 +f 286//286 290//290 291//291 +f 286//286 291//291 287//287 +f 265//265 246//246 242//242 +f 265//265 266//266 246//246 +f 263//263 266//266 265//265 +f 263//263 264//264 266//266 +f 261//261 264//264 263//263 +f 261//261 262//262 264//264 +f 259//259 262//262 261//261 +f 259//259 260//260 262//262 +f 257//257 260//260 259//259 +f 257//257 258//258 260//260 +f 255//255 258//258 257//257 +f 255//255 256//256 258//258 +f 253//253 256//256 255//255 +f 253//253 254//254 256//256 +f 251//251 254//254 253//253 +f 251//251 252//252 254//254 +f 249//249 252//252 251//251 +f 249//249 250//250 252//252 +f 247//247 250//250 249//249 +f 247//247 248//248 250//250 +f 243//243 248//248 247//247 +f 243//243 245//245 248//248 +f 242//242 245//245 243//243 +f 242//242 246//246 245//245 +f 216//216 217//217 238//238 +f 216//216 238//238 237//237 +f 237//237 238//238 236//236 +f 237//237 236//236 235//235 +f 235//235 236//236 234//234 +f 235//235 234//234 233//233 +f 233//233 234//234 232//232 +f 233//233 232//232 231//231 +f 231//231 232//232 230//230 +f 231//231 230//230 229//229 +f 229//229 230//230 228//228 +f 229//229 228//228 227//227 +f 227//227 228//228 226//226 +f 227//227 226//226 225//225 +f 225//225 226//226 224//224 +f 225//225 224//224 223//223 +f 223//223 224//224 222//222 +f 223//223 222//222 221//221 +f 221//221 222//222 220//220 +f 221//221 220//220 219//219 +f 219//219 220//220 218//218 +f 219//219 218//218 215//215 +f 215//215 218//218 217//217 +f 215//215 217//217 216//216 +f 177//177 158//158 154//154 +f 177//177 178//178 158//158 +f 175//175 178//178 177//177 +f 175//175 176//176 178//178 +f 173//173 176//176 175//175 +f 173//173 174//174 176//176 +f 171//171 174//174 173//173 +f 171//171 172//172 174//174 +f 169//169 172//172 171//171 +f 169//169 170//170 172//172 +f 167//167 170//170 169//169 +f 167//167 168//168 170//170 +f 165//165 168//168 167//167 +f 165//165 166//166 168//168 +f 163//163 166//166 165//165 +f 163//163 164//164 166//166 +f 161//161 164//164 163//163 +f 161//161 162//162 164//164 +f 159//159 162//162 161//161 +f 159//159 160//160 162//162 +f 155//155 160//160 159//159 +f 155//155 157//157 160//160 +f 154//154 157//157 155//155 +f 154//154 158//158 157//157 +f 118//118 132//132 131//131 +f 118//118 117//117 132//132 +f 131//131 132//132 129//129 +f 129//129 132//132 130//130 +f 129//129 130//130 127//127 +f 127//127 130//130 128//128 +f 127//127 128//128 125//125 +f 125//125 128//128 126//126 +f 125//125 126//126 123//123 +f 123//123 126//126 124//124 +f 123//123 122//122 121//121 +f 123//123 124//124 122//122 +f 121//121 120//120 119//119 +f 121//121 122//122 120//120 +f 117//117 119//119 120//120 +f 117//117 118//118 119//119 +f 103//103 101//101 115//115 +f 103//103 115//115 116//116 +f 113//113 114//114 116//116 +f 113//113 116//116 115//115 +f 111//111 112//112 114//114 +f 111//111 114//114 113//113 +f 109//109 110//110 111//111 +f 110//110 112//112 111//111 +f 107//107 108//108 109//109 +f 108//108 110//110 109//109 +f 105//105 106//106 107//107 +f 106//106 108//108 107//107 +f 100//100 104//104 105//105 +f 104//104 106//106 105//105 +f 101//101 103//103 104//104 +f 101//101 104//104 100//100 +f 82//82 96//96 95//95 +f 82//82 81//81 96//96 +f 95//95 96//96 93//93 +f 93//93 96//96 94//94 +f 93//93 94//94 91//91 +f 91//91 94//94 92//92 +f 91//91 92//92 89//89 +f 89//89 92//92 90//90 +f 89//89 90//90 87//87 +f 87//87 90//90 88//88 +f 87//87 86//86 85//85 +f 87//87 88//88 86//86 +f 85//85 84//84 83//83 +f 85//85 86//86 84//84 +f 81//81 83//83 84//84 +f 81//81 82//82 83//83 +f 71//71 63//63 70//70 +f 71//71 70//70 78//78 +f 69//69 77//77 78//78 +f 69//69 78//78 70//70 +f 68//68 76//76 77//77 +f 68//68 77//77 69//69 +f 67//67 75//75 68//68 +f 75//75 76//76 68//68 +f 66//66 74//74 67//67 +f 74//74 75//75 67//67 +f 65//65 73//73 66//66 +f 73//73 74//74 66//66 +f 64//64 72//72 65//65 +f 72//72 73//73 65//65 +f 63//63 71//71 72//72 +f 63//63 72//72 64//64 +f 23//23 21//21 35//35 +f 23//23 35//35 36//36 +f 33//33 34//34 36//36 +f 33//33 36//36 35//35 +f 31//31 32//32 34//34 +f 31//31 34//34 33//33 +f 29//29 30//30 32//32 +f 29//29 32//32 31//31 +f 27//27 28//28 30//30 +f 27//27 30//30 29//29 +f 25//25 26//26 28//28 +f 25//25 28//28 27//27 +f 20//20 24//24 26//26 +f 20//20 26//26 25//25 +f 24//24 20//20 21//21 +f 24//24 21//21 23//23 +f 2//2 1//1 16//16 +f 16//16 15//15 2//2 +f 15//15 14//14 13//13 +f 15//15 16//16 14//14 +f 13//13 12//12 11//11 +f 13//13 14//14 12//12 +f 11//11 10//10 9//9 +f 11//11 12//12 10//10 +f 9//9 8//8 7//7 +f 9//9 10//10 8//8 +f 7//7 6//6 5//5 +f 7//7 8//8 6//6 +f 5//5 4//4 3//3 +f 5//5 6//6 4//4 +f 1//1 3//3 4//4 +f 1//1 2//2 3//3 +f 138//138 137//137 136//136 +f 136//136 137//137 135//135 +f 138//138 140//140 139//139 +f 139//139 140//140 135//135 +f 138//138 142//142 141//141 +f 141//141 142//142 135//135 +f 138//138 144//144 143//143 +f 143//143 144//144 135//135 +f 138//138 146//146 145//145 +f 145//145 146//146 135//135 +f 138//138 148//148 147//147 +f 147//147 148//148 135//135 +f 138//138 150//150 149//149 +f 149//149 150//150 135//135 +f 138//138 152//152 151//151 +f 151//151 152//152 135//135 +f 179//179 181//181 180//180 +f 182//182 181//181 179//179 +f 184//184 183//183 180//180 +f 182//182 183//183 184//184 +f 186//186 185//185 180//180 +f 182//182 185//185 186//186 +f 188//188 187//187 180//180 +f 182//182 187//187 188//188 +f 190//190 189//189 180//180 +f 182//182 189//189 190//190 +f 192//192 191//191 180//180 +f 182//182 191//191 192//192 +f 194//194 193//193 180//180 +f 182//182 193//193 194//194 +f 196//196 195//195 180//180 +f 182//182 195//195 196//196 +f 200//200 201//201 198//198 +f 198//198 201//201 199//199 +f 200//200 203//203 202//202 +f 202//202 203//203 199//199 +f 200//200 205//205 204//204 +f 204//204 205//205 199//199 +f 200//200 207//207 206//206 +f 206//206 207//207 199//199 +f 200//200 209//209 208//208 +f 208//208 209//209 199//199 +f 200//200 211//211 210//210 +f 210//210 211//211 199//199 +f 200//200 213//213 212//212 +f 212//212 213//213 199//199 +f 200//200 197//197 214//214 +f 214//214 197//197 199//199 +f 267//267 269//269 268//268 +f 270//270 269//269 267//267 +f 272//272 271//271 268//268 +f 270//270 271//271 272//272 +f 274//274 273//273 268//268 +f 270//270 273//273 274//274 +f 276//276 275//275 268//268 +f 270//270 275//275 276//276 +f 278//278 277//277 268//268 +f 270//270 277//277 278//278 +f 280//280 279//279 268//268 +f 270//270 279//279 280//280 +f 282//282 281//281 268//268 +f 270//270 281//281 282//282 +f 284//284 283//283 268//268 +f 270//270 283//283 284//284 +# 1080 faces, 0 coords texture + +# End of File \ No newline at end of file diff --git a/data/checker_blue.png b/data/checker_blue.png new file mode 100644 index 000000000..0894b91f1 Binary files /dev/null and b/data/checker_blue.png differ diff --git a/data/husky/husky.urdf b/data/husky/husky.urdf new file mode 100644 index 000000000..e9762701b --- /dev/null +++ b/data/husky/husky.urdf @@ -0,0 +1,345 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gazebo/DarkGrey + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gazebo/Grey + false + + + + + + + + + transmission_interface/SimpleTransmission + + 1 + + + VelocityJointInterface + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gazebo/Grey + false + + + + + + + + + transmission_interface/SimpleTransmission + + 1 + + + VelocityJointInterface + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gazebo/Grey + false + + + + + + + + + transmission_interface/SimpleTransmission + + 1 + + + VelocityJointInterface + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gazebo/Grey + false + + + + + + + + + transmission_interface/SimpleTransmission + + 1 + + + VelocityJointInterface + + + + + + + + + + + + + + + + + Gazebo/Yellow + + + + + + + + + + + + + + + + Gazebo/DarkGrey + + + + + + + + + + + + + + + + Gazebo/DarkGrey + + + + + + + + + + + + + + + + Gazebo/DarkGrey + + + diff --git a/data/husky/meshes/bumper.stl b/data/husky/meshes/bumper.stl new file mode 100644 index 000000000..7cccf4b03 Binary files /dev/null and b/data/husky/meshes/bumper.stl differ diff --git a/data/husky/meshes/top_plate.stl b/data/husky/meshes/top_plate.stl new file mode 100644 index 000000000..ef4d137b5 Binary files /dev/null and b/data/husky/meshes/top_plate.stl differ diff --git a/data/husky/meshes/user_rail.stl b/data/husky/meshes/user_rail.stl new file mode 100644 index 000000000..7542c59bc Binary files /dev/null and b/data/husky/meshes/user_rail.stl differ diff --git a/data/husky/meshes/wheel.stl b/data/husky/meshes/wheel.stl new file mode 100644 index 000000000..0e76151ca Binary files /dev/null and b/data/husky/meshes/wheel.stl differ diff --git a/data/kuka_iiwa/meshes/coarse/link_0.stl b/data/kuka_iiwa/meshes/coarse/link_0.stl deleted file mode 100644 index 84b8ea5d2..000000000 Binary files a/data/kuka_iiwa/meshes/coarse/link_0.stl and /dev/null differ diff --git a/data/kuka_iiwa/meshes/coarse/link_1.stl b/data/kuka_iiwa/meshes/coarse/link_1.stl deleted file mode 100644 index ffe3ec981..000000000 Binary files a/data/kuka_iiwa/meshes/coarse/link_1.stl and /dev/null differ diff --git a/data/kuka_iiwa/meshes/coarse/link_2.stl b/data/kuka_iiwa/meshes/coarse/link_2.stl deleted file mode 100644 index 4a51b27ef..000000000 Binary files a/data/kuka_iiwa/meshes/coarse/link_2.stl and /dev/null differ diff --git a/data/kuka_iiwa/meshes/coarse/link_3.stl b/data/kuka_iiwa/meshes/coarse/link_3.stl deleted file mode 100644 index 32d6d5282..000000000 Binary files a/data/kuka_iiwa/meshes/coarse/link_3.stl and /dev/null differ diff --git a/data/kuka_iiwa/meshes/coarse/link_4.stl b/data/kuka_iiwa/meshes/coarse/link_4.stl deleted file mode 100644 index 35d192181..000000000 Binary files a/data/kuka_iiwa/meshes/coarse/link_4.stl and /dev/null differ diff --git a/data/kuka_iiwa/meshes/coarse/link_5.stl b/data/kuka_iiwa/meshes/coarse/link_5.stl deleted file mode 100644 index 35aa1245d..000000000 Binary files a/data/kuka_iiwa/meshes/coarse/link_5.stl and /dev/null differ diff --git a/data/kuka_iiwa/meshes/coarse/link_6.stl b/data/kuka_iiwa/meshes/coarse/link_6.stl deleted file mode 100644 index bce349eb2..000000000 Binary files a/data/kuka_iiwa/meshes/coarse/link_6.stl and /dev/null differ diff --git a/data/kuka_iiwa/meshes/coarse/link_7.stl b/data/kuka_iiwa/meshes/coarse/link_7.stl deleted file mode 100644 index 2d5d6ecfb..000000000 Binary files a/data/kuka_iiwa/meshes/coarse/link_7.stl and /dev/null differ diff --git a/data/kuka_iiwa/meshes/link_0.stl b/data/kuka_iiwa/meshes/link_0.stl index 84b8ea5d2..ed1447056 100644 Binary files a/data/kuka_iiwa/meshes/link_0.stl and b/data/kuka_iiwa/meshes/link_0.stl differ diff --git a/data/kuka_iiwa/meshes/link_1.stl b/data/kuka_iiwa/meshes/link_1.stl index e8e37de9f..d9d043e69 100644 Binary files a/data/kuka_iiwa/meshes/link_1.stl and b/data/kuka_iiwa/meshes/link_1.stl differ diff --git a/data/kuka_iiwa/meshes/link_2.stl b/data/kuka_iiwa/meshes/link_2.stl index 47c7885fc..282aa787b 100644 Binary files a/data/kuka_iiwa/meshes/link_2.stl and b/data/kuka_iiwa/meshes/link_2.stl differ diff --git a/data/kuka_iiwa/meshes/link_3.stl b/data/kuka_iiwa/meshes/link_3.stl index 027eb2211..50d856cb8 100644 Binary files a/data/kuka_iiwa/meshes/link_3.stl and b/data/kuka_iiwa/meshes/link_3.stl differ diff --git a/data/kuka_iiwa/meshes/link_4.stl b/data/kuka_iiwa/meshes/link_4.stl index c0c1213c1..ade9b0cf1 100644 Binary files a/data/kuka_iiwa/meshes/link_4.stl and b/data/kuka_iiwa/meshes/link_4.stl differ diff --git a/data/kuka_iiwa/meshes/link_5.stl b/data/kuka_iiwa/meshes/link_5.stl index 82a9337a6..663ece5cd 100644 Binary files a/data/kuka_iiwa/meshes/link_5.stl and b/data/kuka_iiwa/meshes/link_5.stl differ diff --git a/data/kuka_iiwa/meshes/link_6.stl b/data/kuka_iiwa/meshes/link_6.stl index 10b558dc5..7fb9fcad2 100644 Binary files a/data/kuka_iiwa/meshes/link_6.stl and b/data/kuka_iiwa/meshes/link_6.stl differ diff --git a/data/kuka_iiwa/meshes/link_7.stl b/data/kuka_iiwa/meshes/link_7.stl index 5909e7e01..e4e301b53 100644 Binary files a/data/kuka_iiwa/meshes/link_7.stl and b/data/kuka_iiwa/meshes/link_7.stl differ diff --git a/data/kuka_iiwa/model.urdf b/data/kuka_iiwa/model.urdf index 56123c36d..d8fe60293 100644 --- a/data/kuka_iiwa/model.urdf +++ b/data/kuka_iiwa/model.urdf @@ -77,7 +77,7 @@ - + @@ -106,7 +106,7 @@ - + @@ -135,7 +135,7 @@ - + @@ -164,7 +164,7 @@ - + @@ -193,7 +193,7 @@ - + @@ -222,7 +222,7 @@ - + @@ -251,7 +251,7 @@ - + @@ -280,7 +280,7 @@ - + diff --git a/data/plane.mtl b/data/plane.mtl index 46c54e4be..cd101528d 100644 --- a/data/plane.mtl +++ b/data/plane.mtl @@ -10,6 +10,6 @@ newmtl Material Ks 0.0000 0.0000 0.0000 Ke 0.0000 0.0000 0.0000 map_Ka cube.tga - map_Kd checker_grid.jpg + map_Kd checker_blue.png + - \ No newline at end of file diff --git a/data/plane.obj b/data/plane.obj index 61e8e047c..0b77a9912 100644 --- a/data/plane.obj +++ b/data/plane.obj @@ -7,9 +7,9 @@ v 5.000000 5.000000 0.000000 v -5.000000 5.000000 0.000000 v -5.000000 -5.000000 0.000000 -vt 1.000000 0.000000 -vt 1.000000 1.000000 -vt 0.000000 1.000000 +vt 5.000000 0.000000 +vt 5.000000 5.000000 +vt 0.000000 5.000000 vt 0.000000 0.000000 usemtl Material diff --git a/data/plane100.obj b/data/plane100.obj index c60a07b05..3a74f590b 100644 --- a/data/plane100.obj +++ b/data/plane100.obj @@ -2,11 +2,21 @@ # www.blender.org mtllib plane.mtl o Plane -v 100.000000 0.000000 -100.000000 -v 100.000000 0.000000 100.000000 -v -100.000000 0.000000 100.000000 -v -100.000000 0.000000 -100.000000 +v 100.000000 -100.000000 0.000000 +v 100.000000 100.000000 0.000000 +v -100.000000 100.000000 0.000000 +v -100.000000 -100.000000 0.000000 + +vt 100.000000 0.000000 +vt 100.000000 100.000000 +vt 0.000000 100.000000 +vt 0.000000 0.000000 + + + usemtl Material s off -f 3 2 1 -f 4 3 1 +f 1/1 2/2 3/3 +f 1/1 3/3 4/4 + + diff --git a/data/plane100.urdf b/data/plane100.urdf new file mode 100644 index 000000000..1c6a01cc6 --- /dev/null +++ b/data/plane100.urdf @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/CommonInterfaces/CommonExampleInterface.h b/examples/CommonInterfaces/CommonExampleInterface.h index f3fb20047..14d19ec3d 100644 --- a/examples/CommonInterfaces/CommonExampleInterface.h +++ b/examples/CommonInterfaces/CommonExampleInterface.h @@ -46,6 +46,8 @@ public: virtual bool mouseButtonCallback(int button, int state, float x, float y)=0; virtual bool keyboardCallback(int key, int state)=0; + virtual void vrControllerMoveCallback(int controllerId, float pos[4], float orientation[4]) {} + virtual void vrControllerButtonCallback(int controllerId, int button, int state, float pos[4], float orientation[4]){} }; class ExampleEntries diff --git a/examples/ExampleBrowser/ExampleEntries.cpp b/examples/ExampleBrowser/ExampleEntries.cpp index 5682275ce..c5901ca34 100644 --- a/examples/ExampleBrowser/ExampleEntries.cpp +++ b/examples/ExampleBrowser/ExampleEntries.cpp @@ -187,7 +187,7 @@ static ExampleEntry gDefaultExamples[]= #endif //INCLUDE_CLOTH_DEMOS ///we disable the benchmarks in debug mode, they are way too slow and benchmarking in debug mode is not recommended -#ifndef _DEBUG +//#ifndef _DEBUG ExampleEntry(0,"Benchmarks"), ExampleEntry(1,"3000 boxes", "Benchmark a stack of 3000 boxes. It will stress the collision detection, a specialized box-box implementation based on the separating axis test, and the constraint solver. ", BenchmarkCreateFunc, 1), ExampleEntry(1,"1000 stack", "Benchmark a stack of 3000 boxes. It will stress the collision detection, a specialized box-box implementation based on the separating axis test, and the constraint solver. ", @@ -197,7 +197,7 @@ static ExampleEntry gDefaultExamples[]= ExampleEntry(1,"Prim vs Mesh", "Benchmark the performance and stability of rigid bodies using primitive collision shapes (btSphereShape, btBoxShape), resting on a triangle mesh, btBvhTriangleMeshShape.", BenchmarkCreateFunc, 5), ExampleEntry(1,"Convex vs Mesh", "Benchmark the performance and stability of rigid bodies using convex hull collision shapes (btConvexHullShape), resting on a triangle mesh, btBvhTriangleMeshShape.", BenchmarkCreateFunc, 6), ExampleEntry(1,"Raycast", "Benchmark the performance of the btCollisionWorld::rayTest. Note that currently the rays are not rendered.", BenchmarkCreateFunc, 7), -#endif +//#endif diff --git a/examples/OpenGLWindow/GLInstancingRenderer.cpp b/examples/OpenGLWindow/GLInstancingRenderer.cpp index 64503dcc3..e9c5e38fa 100644 --- a/examples/OpenGLWindow/GLInstancingRenderer.cpp +++ b/examples/OpenGLWindow/GLInstancingRenderer.cpp @@ -16,9 +16,9 @@ subject to the following restrictions: ///todo: make this configurable in the gui -bool useShadowMap=true;//false;//true; +bool useShadowMap = true;// true;//false;//true; int shadowMapWidth=4096;//8192; -int shadowMapHeight=4096; +int shadowMapHeight= 4096; float shadowMapWorldSize=25; #define MAX_POINTS_IN_BATCH 1024 @@ -363,7 +363,7 @@ void GLInstancingRenderer::writeSingleInstanceScaleToCPU(double* scale, int srcI void GLInstancingRenderer::writeSingleInstanceTransformToGPU(float* position, float* orientation, int objectIndex) { glBindBuffer(GL_ARRAY_BUFFER, m_data->m_vbo); - glFlush(); + //glFlush(); char* orgBase = (char*)glMapBuffer( GL_ARRAY_BUFFER,GL_READ_WRITE); //b3GraphicsInstance* gfxObj = m_graphicsInstances[k]; @@ -393,7 +393,7 @@ void GLInstancingRenderer::writeSingleInstanceTransformToGPU(float* position, fl orientations [objectIndex*4+3] = orientation[3]; glUnmapBuffer( GL_ARRAY_BUFFER); - glFlush(); + //glFlush(); } @@ -500,7 +500,7 @@ void GLInstancingRenderer::writeTransforms() glUnmapBuffer( GL_ARRAY_BUFFER); //if this glFinish is removed, the animation is not always working/blocks //@todo: figure out why - glFlush(); + //glFlush(); #endif @@ -1037,7 +1037,7 @@ void GLInstancingRenderer::renderScene() //avoid some Intel driver on a Macbook Pro to lock-up //todo: figure out what is going on on that machine - glFlush(); + //glFlush(); if (useShadowMap) { @@ -1539,7 +1539,7 @@ b3Assert(glGetError() ==GL_NO_ERROR); B3_PROFILE("glFlush2"); glBindBuffer(GL_ARRAY_BUFFER, m_data->m_vbo); - glFlush(); + //glFlush(); } b3Assert(glGetError() ==GL_NO_ERROR); @@ -1730,7 +1730,7 @@ b3Assert(glGetError() ==GL_NO_ERROR); { B3_PROFILE("glFlush"); - glFlush(); + //glFlush(); } if (renderMode==B3_CREATE_SHADOWMAP_RENDERMODE) { diff --git a/examples/SharedMemory/PhysicsClientC_API.cpp b/examples/SharedMemory/PhysicsClientC_API.cpp index 5a728b0cb..1ff24b66c 100644 --- a/examples/SharedMemory/PhysicsClientC_API.cpp +++ b/examples/SharedMemory/PhysicsClientC_API.cpp @@ -115,6 +115,15 @@ int b3PhysicsParamSetGravity(b3SharedMemoryCommandHandle commandHandle, doub return 0; } +int b3PhysicsParamSetRealTimeSimulation(b3SharedMemoryCommandHandle commandHandle, int enableRealTimeSimulation) +{ + struct SharedMemoryCommand* command = (struct SharedMemoryCommand*) commandHandle; + b3Assert(command->m_type == CMD_SEND_PHYSICS_SIMULATION_PARAMETERS); + command->m_physSimParamArgs.m_allowRealTimeSimulation = enableRealTimeSimulation; + command->m_updateFlags |= SIM_PARAM_UPDATE_REAL_TIME_SIMULATION; + return 0; +} + int b3PhysicsParamSetTimeStep(b3SharedMemoryCommandHandle commandHandle, double timeStep) { struct SharedMemoryCommand* command = (struct SharedMemoryCommand*) commandHandle; diff --git a/examples/SharedMemory/PhysicsClientC_API.h b/examples/SharedMemory/PhysicsClientC_API.h index dcbe9c30c..a3b6dbd5c 100644 --- a/examples/SharedMemory/PhysicsClientC_API.h +++ b/examples/SharedMemory/PhysicsClientC_API.h @@ -81,6 +81,7 @@ void b3GetCameraImageData(b3PhysicsClientHandle physClient, struct b3CameraImage b3SharedMemoryCommandHandle b3InitPhysicsParamCommand(b3PhysicsClientHandle physClient); int b3PhysicsParamSetGravity(b3SharedMemoryCommandHandle commandHandle, double gravx,double gravy, double gravz); int b3PhysicsParamSetTimeStep(b3SharedMemoryCommandHandle commandHandle, double timeStep); +int b3PhysicsParamSetRealTimeSimulation(b3SharedMemoryCommandHandle commandHandle, int enableRealTimeSimulation); b3SharedMemoryCommandHandle b3InitStepSimulationCommand(b3PhysicsClientHandle physClient); diff --git a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp index 5c82e3381..420fe37b6 100644 --- a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp +++ b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp @@ -374,6 +374,8 @@ struct PhysicsServerCommandProcessorInternalData ///end handle management + bool m_allowRealTimeSimulation; + bool m_hasGround; CommandLogger* m_commandLogger; CommandLogPlayback* m_logPlayback; @@ -417,7 +419,8 @@ struct PhysicsServerCommandProcessorInternalData TinyRendererVisualShapeConverter m_visualConverter; PhysicsServerCommandProcessorInternalData() - : + :m_hasGround(false), + m_allowRealTimeSimulation(false), m_commandLogger(0), m_logPlayback(0), m_physicsDeltaTime(1./240.), @@ -496,6 +499,9 @@ void PhysicsServerCommandProcessor::setGuiHelper(struct GUIHelperInterface* guiH } } m_data->m_guiHelper = guiHelper; + + + } @@ -504,6 +510,7 @@ PhysicsServerCommandProcessor::PhysicsServerCommandProcessor() m_data = new PhysicsServerCommandProcessorInternalData(); createEmptyDynamicsWorld(); + } PhysicsServerCommandProcessor::~PhysicsServerCommandProcessor() @@ -983,7 +990,7 @@ int PhysicsServerCommandProcessor::createBodyInfoStream(int bodyUniqueId, char* bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryCommand& clientCmd, struct SharedMemoryStatus& serverStatusOut, char* bufferServerToClient, int bufferSizeInBytes ) { - + bool hasStatus = false; { @@ -1768,6 +1775,10 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm { m_data->m_physicsDeltaTime = clientCmd.m_physSimParamArgs.m_deltaTime; } + if (clientCmd.m_updateFlags & SIM_PARAM_UPDATE_REAL_TIME_SIMULATION) + { + m_data->m_allowRealTimeSimulation = clientCmd.m_physSimParamArgs.m_allowRealTimeSimulation; + } if (clientCmd.m_updateFlags&SIM_PARAM_UPDATE_GRAVITY) { btVector3 grav(clientCmd.m_physSimParamArgs.m_gravityAcceleration[0], @@ -1873,7 +1884,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm SharedMemoryStatus& serverCmd =serverStatusOut; serverCmd.m_type = CMD_RESET_SIMULATION_COMPLETED; hasStatus = true; - + m_data->m_hasGround = false; break; } case CMD_CREATE_RIGID_BODY: @@ -2307,6 +2318,26 @@ void PhysicsServerCommandProcessor::replayFromLogFile(const char* fileName) m_data->m_logPlayback = pb; } +void PhysicsServerCommandProcessor::stepSimulationRealTime(double dtInSec) +{ + if (m_data->m_allowRealTimeSimulation) + { + if (!m_data->m_hasGround) + { + m_data->m_hasGround = true; + + int bodyId = 0; + btAlignedObjectArray bufferServerToClient; + bufferServerToClient.resize(32768); + + + loadUrdf("plane.urdf", btVector3(0, 0, 0), btQuaternion(0, 0, 0, 1), true, true, &bodyId, &bufferServerToClient[0], bufferServerToClient.size()); + } + + m_data->m_dynamicsWorld->stepSimulation(dtInSec); + } +} + void PhysicsServerCommandProcessor::applyJointDamping(int bodyUniqueId) { InteralBodyData* body = m_data->getHandle(bodyUniqueId); diff --git a/examples/SharedMemory/PhysicsServerCommandProcessor.h b/examples/SharedMemory/PhysicsServerCommandProcessor.h index bc74a0a27..7cbc87ab4 100644 --- a/examples/SharedMemory/PhysicsServerCommandProcessor.h +++ b/examples/SharedMemory/PhysicsServerCommandProcessor.h @@ -53,7 +53,8 @@ public: void enableCommandLogging(bool enable, const char* fileName); void replayFromLogFile(const char* fileName); - void replayLogCommand(char* bufferServerToClient, int bufferSizeInBytes ); + void replayLogCommand(char* bufferServerToClient, int bufferSizeInBytes ); + void stepSimulationRealTime(double dtInSec); void applyJointDamping(int bodyUniqueId); }; diff --git a/examples/SharedMemory/PhysicsServerExample.cpp b/examples/SharedMemory/PhysicsServerExample.cpp index a4ac05f67..6ae9a654d 100644 --- a/examples/SharedMemory/PhysicsServerExample.cpp +++ b/examples/SharedMemory/PhysicsServerExample.cpp @@ -9,11 +9,12 @@ #include "PhysicsServerSharedMemory.h" #include "SharedMemoryCommon.h" - +#include "Bullet3Common/b3Matrix3x3.h" #include "../Utils/b3Clock.h" #include "../MultiThreading/b3ThreadSupportInterface.h" + void MotionThreadFunc(void* userPtr,void* lsMemory); void* MotionlsMemoryFunc(); #define MAX_MOTION_NUM_THREADS 1 @@ -80,13 +81,23 @@ b3ThreadSupportInterface* createMotionThreadSupport(int numThreads) struct MotionArgs { MotionArgs() - :m_physicsServerPtr(0) + :m_physicsServerPtr(0), + m_isPicking(false), + m_isDragging(false), + m_isReleasing(false) { } b3CriticalSection* m_cs; PhysicsServerSharedMemory* m_physicsServerPtr; b3AlignedObjectArray m_positions; + + btVector3 m_pos; + btQuaternion m_orn; + bool m_isPicking; + bool m_isDragging; + bool m_isReleasing; + }; struct MotionThreadLocalStorage @@ -113,23 +124,58 @@ void MotionThreadFunc(void* userPtr,void* lsMemory) args->m_cs->setSharedParam(0,eMotionIsInitialized); args->m_cs->unlock(); + do { //todo(erwincoumans): do we want some sleep to reduce CPU resources in this thread? -#if 0 + double deltaTimeInSeconds = double(clock.getTimeMicroseconds())/1000000.; - if (deltaTimeInSeconds<(1./260.)) + if (deltaTimeInSeconds<(1./5000.)) { skip++; - if (deltaTimeInSeconds<.001) - continue; + } else + { + //process special controller commands, such as + //VR controller button press/release and controller motion + + btVector3 from = args->m_pos; + btMatrix3x3 mat(args->m_orn); + + btVector3 toX = args->m_pos+mat.getColumn(0); + btVector3 toY = args->m_pos+mat.getColumn(1); + btVector3 toZ = args->m_pos+mat.getColumn(2)*50.; + + + if (args->m_isPicking) + { + args->m_isPicking = false; + args->m_isDragging = true; + args->m_physicsServerPtr->pickBody(from,-toZ); + //printf("PICK!\n"); + } + + if (args->m_isDragging) + { + args->m_physicsServerPtr->movePickedBody(from,-toZ); + // printf("."); + } + + if (args->m_isReleasing) + { + args->m_isDragging = false; + args->m_isReleasing = false; + args->m_physicsServerPtr->removePickingConstraint(); + //printf("Release pick\n"); + } + + //don't simulate over a huge timestep if we had some interruption (debugger breakpoint etc) + btClamp(deltaTimeInSeconds,0.,0.1); + args->m_physicsServerPtr->stepSimulationRealTime(deltaTimeInSeconds); + clock.reset(); } - clock.reset(); -#endif args->m_physicsServerPtr->processClientCommands(); - } while (args->m_cs->getSharedParam(0)!=eRequestTerminateMotion); } else { @@ -375,7 +421,7 @@ class PhysicsServerExample : public SharedMemoryCommon btClock m_clock; bool m_replay; int m_options; - + public: PhysicsServerExample(MultiThreadedOpenGLGuiHelper* helper, SharedMemoryInterface* sharedMem=0, int options=0); @@ -417,6 +463,9 @@ public: btVector3 getRayTo(int x,int y); + virtual void vrControllerButtonCallback(int controllerId, int button, int state, float pos[4], float orientation[4]); + virtual void vrControllerMoveCallback(int controllerId, float pos[4], float orientation[4]); + virtual bool mouseMoveCallback(float x,float y) { if (m_replay) @@ -720,6 +769,28 @@ void PhysicsServerExample::renderScene() //m_args[0].m_cs->lock(); m_physicsServer.renderScene(); + + if (m_args[0].m_isPicking || m_args[0].m_isDragging) + { + btVector3 from = m_args[0].m_pos; + btMatrix3x3 mat(m_args[0].m_orn); + + btVector3 toX = m_args[0].m_pos+mat.getColumn(0); + btVector3 toY = m_args[0].m_pos+mat.getColumn(1); + btVector3 toZ = m_args[0].m_pos+mat.getColumn(2); + + int width = 2; + + + btVector4 color; + color=btVector4(1,0,0,1); + m_guiHelper->getAppInterface()->m_renderer->drawLine(from,toX,color,width); + color=btVector4(0,1,0,1); + m_guiHelper->getAppInterface()->m_renderer->drawLine(from,toY,color,width); + color=btVector4(0,0,1,1); + m_guiHelper->getAppInterface()->m_renderer->drawLine(from,toZ,color,width); + + } if (m_guiHelper->getAppInterface()->m_renderer->getActiveCamera()->isVRCamera()) { @@ -856,4 +927,17 @@ class CommonExampleInterface* PhysicsServerCreateFunc(struct CommonExampleOpt } -B3_STANDALONE_EXAMPLE(PhysicsServerCreateFunc) \ No newline at end of file +void PhysicsServerExample::vrControllerButtonCallback(int controllerId, int button, int state, float pos[4], float orn[4]) +{ + m_args[0].m_isPicking = (state!=0); + m_args[0].m_isReleasing = (state==0); + m_args[0].m_pos.setValue(pos[0],pos[1],pos[2]); + m_args[0].m_orn.setValue(orn[0],orn[1],orn[2],orn[3]); +} + +void PhysicsServerExample::vrControllerMoveCallback(int controllerId, float pos[4], float orn[4]) +{ + m_args[0].m_pos.setValue(pos[0],pos[1],pos[2]); + m_args[0].m_orn.setValue(orn[0],orn[1],orn[2],orn[3]); +} +B3_STANDALONE_EXAMPLE(PhysicsServerCreateFunc) diff --git a/examples/SharedMemory/PhysicsServerSharedMemory.cpp b/examples/SharedMemory/PhysicsServerSharedMemory.cpp index d0b583969..111ac07f5 100644 --- a/examples/SharedMemory/PhysicsServerSharedMemory.cpp +++ b/examples/SharedMemory/PhysicsServerSharedMemory.cpp @@ -236,8 +236,10 @@ void PhysicsServerSharedMemory::releaseSharedMemory() } - - +void PhysicsServerSharedMemory::stepSimulationRealTime(double dtInSec) +{ + m_data->m_commandProcessor->stepSimulationRealTime(dtInSec); +} void PhysicsServerSharedMemory::processClientCommands() diff --git a/examples/SharedMemory/PhysicsServerSharedMemory.h b/examples/SharedMemory/PhysicsServerSharedMemory.h index 2c08124d0..f96e7ca4b 100644 --- a/examples/SharedMemory/PhysicsServerSharedMemory.h +++ b/examples/SharedMemory/PhysicsServerSharedMemory.h @@ -26,6 +26,8 @@ public: virtual void processClientCommands(); + virtual void stepSimulationRealTime(double dtInSec); + //bool supportsJointMotor(class btMultiBody* body, int linkIndex); //@todo(erwincoumans) Should we have shared memory commands for picking objects? diff --git a/examples/SharedMemory/SharedMemoryCommands.h b/examples/SharedMemory/SharedMemoryCommands.h index d5b50d2ba..64ae61991 100644 --- a/examples/SharedMemory/SharedMemoryCommands.h +++ b/examples/SharedMemory/SharedMemoryCommands.h @@ -215,6 +215,7 @@ enum EnumSimParamUpdateFlags SIM_PARAM_UPDATE_GRAVITY=2, SIM_PARAM_UPDATE_NUM_SOLVER_ITERATIONS=4, SIM_PARAM_UPDATE_NUM_SIMULATION_SUB_STEPS=8, + SIM_PARAM_UPDATE_REAL_TIME_SIMULATION = 16, }; ///Controlling a robot involves sending the desired state to its joint motor controllers. @@ -225,6 +226,7 @@ struct SendPhysicsSimulationParameters double m_gravityAcceleration[3]; int m_numSimulationSubSteps; int m_numSolverIterations; + bool m_allowRealTimeSimulation; }; struct RequestActualStateArgs diff --git a/examples/StandaloneMain/hellovr_opengl_main.cpp b/examples/StandaloneMain/hellovr_opengl_main.cpp index dcb7aa22f..630c2d3e8 100644 --- a/examples/StandaloneMain/hellovr_opengl_main.cpp +++ b/examples/StandaloneMain/hellovr_opengl_main.cpp @@ -4,6 +4,8 @@ #include "../OpenGLWindow/SimpleOpenGL3App.h" #include "../OpenGLWindow/OpenGLInclude.h" #include "Bullet3Common/b3Quaternion.h" +#include "Bullet3Common/b3Transform.h" + #include "../ExampleBrowser/OpenGLGuiHelper.h" #include "../CommonInterfaces/CommonExampleInterface.h" #include "../CommonInterfaces/CommonGUIHelperInterface.h" @@ -28,6 +30,8 @@ int gSharedMemoryKey = -1; #include "pathtools.h" CommonExampleInterface* sExample; +int sIsPressed=-1; +int sPrevPacketNum=0; GUIHelperInterface* sGuiPtr = 0; @@ -82,7 +86,7 @@ public: bool BInit(); bool BInitGL(); bool BInitCompositor(); - + void getControllerTransform(int unDevice, b3Transform& tr); void SetupRenderModels(); void Shutdown(); @@ -619,6 +623,26 @@ void CMainApplication::Shutdown() } + +void CMainApplication::getControllerTransform(int unDevice, b3Transform& tr) +{ + const Matrix4 & matOrg = m_rmat4DevicePose[unDevice]; + tr.setIdentity(); + tr.setOrigin(b3MakeVector3(matOrg[12],matOrg[13],matOrg[14]));//pos[1])); + b3Matrix3x3 bmat; + for (int i=0;i<3;i++) + { + for (int j=0;j<3;j++) + { + bmat[i][j] = matOrg[i+4*j]; + } + } + tr.setBasis(bmat); + b3Transform y2z; + y2z.setIdentity(); + y2z.setRotation(b3Quaternion(0,B3_HALF_PI,0)); + tr = y2z*tr; +} //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- @@ -639,14 +663,61 @@ bool CMainApplication::HandleInput() vr::VRControllerState_t state; if( m_pHMD->GetControllerState( unDevice, &state ) ) { - if (state.ulButtonPressed) + uint64_t trigger = vr::ButtonMaskFromId(vr::k_EButton_SteamVR_Trigger); + + if (sPrevPacketNum != state.unPacketNum) { - b3Printf("state.ulButtonPressed=%d\n",state.ulButtonPressed); - sExample->exitPhysics(); - m_app->m_instancingRenderer->removeAllInstances(); - sExample->initPhysics(); + + static int counter=0; + sPrevPacketNum = state.unPacketNum; + //b3Printf("."); + bool isTrigger = (state.ulButtonPressed&trigger)!=0; + if (isTrigger) + { + //printf("unDevice=%d\n",unDevice); + b3Transform tr; + getControllerTransform(unDevice,tr); + float pos[3] = {tr.getOrigin()[0],tr.getOrigin()[1],tr.getOrigin()[2]}; + b3Quaternion born = tr.getRotation(); + float orn[4] = {born[0],born[1],born[2],born[3]}; + + + if (sIsPressed!=unDevice) + { + b3Printf("trigger pressed %d, %d\n",counter++, unDevice); + sIsPressed=unDevice; + + sExample->vrControllerButtonCallback(unDevice,1,1,pos, orn); + + // + //virtual void vrControllerMoveCallback(int controllerId, float pos[4], float orientation[4]) {} + //virtual void vrControllerButtonCallback(int controllerId, int button, int state, float pos[4], float orientation[4]){} + + //sExample->start + } else + { + sExample->vrControllerMoveCallback(unDevice,pos,orn); + } + //sExample->exitPhysics(); + //m_app->m_instancingRenderer->removeAllInstances(); + ///sExample->initPhysics(); + } else + { + if (unDevice==sIsPressed) + { + b3Transform tr; + getControllerTransform(unDevice,tr); + float pos[3] = {tr.getOrigin()[0],tr.getOrigin()[1],tr.getOrigin()[2]}; + b3Quaternion born = tr.getRotation(); + float orn[4] = {born[0],born[1],born[2],born[3]}; + + sIsPressed=-1; + printf("device released: %d",unDevice); + sExample->vrControllerButtonCallback(unDevice,1,0,pos, orn); + } + } + } - } m_rbShowTrackedDevice[ unDevice ] = state.ulButtonPressed == 0; } } @@ -1480,7 +1551,7 @@ void CMainApplication::RenderStereoTargets() rotYtoZ.rotateX(-90); } - RenderScene( vr::Eye_Left ); + // Left Eye { @@ -1527,7 +1598,7 @@ void CMainApplication::RenderStereoTargets() m_app->m_window->startRendering(); - + RenderScene( vr::Eye_Left ); @@ -1560,7 +1631,7 @@ void CMainApplication::RenderStereoTargets() // Right Eye - RenderScene( vr::Eye_Right ); + { Matrix4 viewMatRight = m_mat4eyePosRight * m_mat4HMDPose * rotYtoZ; @@ -1573,7 +1644,7 @@ void CMainApplication::RenderStereoTargets() m_app->m_window->startRendering(); - + RenderScene( vr::Eye_Right ); m_app->m_instancingRenderer->setRenderFrameBuffer((unsigned int)rightEyeDesc.m_nRenderFramebufferId); //m_app->m_renderer->renderScene(); diff --git a/examples/Utils/b3ResourcePath.cpp b/examples/Utils/b3ResourcePath.cpp index 44952d61a..bc50ef5cb 100644 --- a/examples/Utils/b3ResourcePath.cpp +++ b/examples/Utils/b3ResourcePath.cpp @@ -33,8 +33,10 @@ int b3ResourcePath::getExePath(char* path, int maxPathLenInBytes) #else #ifdef _WIN32 //https://msdn.microsoft.com/en-us/library/windows/desktop/ms683197(v=vs.85).aspx + HMODULE hModule = GetModuleHandle(NULL); - numBytes = GetModuleFileName(hModule, path, maxPathLenInBytes); + numBytes = GetModuleFileNameA(hModule, path, maxPathLenInBytes); + #else ///http://stackoverflow.com/questions/933850/how-to-find-the-location-of-the-executable-in-c numBytes = (int)readlink("/proc/self/exe", path, maxPathLenInBytes-1); diff --git a/examples/pybullet/pybullet.c b/examples/pybullet/pybullet.c index 2a2d9b2d1..be5994c16 100644 --- a/examples/pybullet/pybullet.c +++ b/examples/pybullet/pybullet.c @@ -410,6 +410,41 @@ static PyObject* pybullet_setJointMotorControl(PyObject* self, PyObject* args) } + +static PyObject * +pybullet_setRealTimeSimulation(PyObject* self, PyObject* args) +{ + if (0 == sm) + { + PyErr_SetString(SpamError, "Not connected to physics server."); + return NULL; + } + + { + int enableRealTimeSimulation = 0; + int ret; + + b3SharedMemoryCommandHandle command = b3InitPhysicsParamCommand(sm); + b3SharedMemoryStatusHandle statusHandle; + + if (!PyArg_ParseTuple(args, "i", &enableRealTimeSimulation)) + { + PyErr_SetString(SpamError, "setRealTimeSimulation expected a single value (integer)."); + return NULL; + } + ret = b3PhysicsParamSetRealTimeSimulation(command, enableRealTimeSimulation); + + statusHandle = b3SubmitClientCommandAndWaitStatus(sm, command); + //ASSERT_EQ(b3GetStatusType(statusHandle), CMD_CLIENT_COMMAND_COMPLETED); + } + + Py_INCREF(Py_None); + return Py_None; +} + + + + // Set the gravity of the world with (x, y, z) arguments static PyObject * pybullet_setGravity(PyObject* self, PyObject* args) @@ -1453,6 +1488,9 @@ static PyMethodDef SpamMethods[] = { {"setTimeStep", pybullet_setTimeStep, METH_VARARGS, "Set the amount of time to proceed at each call to stepSimulation. (unit is seconds, typically range is 0.01 or 0.001)"}, + { "setRealTimeSimulation", pybullet_setRealTimeSimulation, METH_VARARGS, + "Enable or disable real time simulation (using the real time clock, RTC) in the physics server. Expects one integer argument, 0 or 1" }, + {"loadURDF", pybullet_loadURDF, METH_VARARGS, "Create a multibody by loading a URDF file."}, diff --git a/src/Bullet3OpenCL/Initialize/b3OpenCLUtils.cpp b/src/Bullet3OpenCL/Initialize/b3OpenCLUtils.cpp index 264c7b9f0..369f1d750 100644 --- a/src/Bullet3OpenCL/Initialize/b3OpenCLUtils.cpp +++ b/src/Bullet3OpenCL/Initialize/b3OpenCLUtils.cpp @@ -636,10 +636,10 @@ cl_program b3OpenCLUtils_compileCLProgramFromString(cl_context clContext, cl_dev FILETIME modtimeBinary; - CreateDirectory(sCachedBinaryPath,0); + CreateDirectoryA(sCachedBinaryPath,0); { - HANDLE binaryFileHandle = CreateFile(binaryFileName,GENERIC_READ,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); + HANDLE binaryFileHandle = CreateFileA(binaryFileName,GENERIC_READ,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); if (binaryFileHandle ==INVALID_HANDLE_VALUE) { DWORD errorCode; @@ -677,7 +677,7 @@ cl_program b3OpenCLUtils_compileCLProgramFromString(cl_context clContext, cl_dev if (binaryFileValid) { - HANDLE srcFileHandle = CreateFile(clFileNameForCaching,GENERIC_READ,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); + HANDLE srcFileHandle = CreateFileA(clFileNameForCaching,GENERIC_READ,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); if (srcFileHandle==INVALID_HANDLE_VALUE) { @@ -686,7 +686,7 @@ cl_program b3OpenCLUtils_compileCLProgramFromString(cl_context clContext, cl_dev { char relativeFileName[1024]; sprintf(relativeFileName,"%s%s",prefix[i],clFileNameForCaching); - srcFileHandle = CreateFile(relativeFileName,GENERIC_READ,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); + srcFileHandle = CreateFileA(relativeFileName,GENERIC_READ,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); } } diff --git a/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h b/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h index e90d06eb1..93d842ef5 100644 --- a/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h +++ b/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h @@ -26,14 +26,16 @@ class btDispatcher; #include "btCollisionCreateFunc.h" ///For each triangle in the concave mesh that overlaps with the AABB of a convex (m_convexProxy), processTriangle is called. -class btConvexTriangleCallback : public btTriangleCallback +ATTRIBUTE_ALIGNED16(class) btConvexTriangleCallback : public btTriangleCallback { - const btCollisionObjectWrapper* m_convexBodyWrap; - const btCollisionObjectWrapper* m_triBodyWrap; btVector3 m_aabbMin; btVector3 m_aabbMax ; + const btCollisionObjectWrapper* m_convexBodyWrap; + const btCollisionObjectWrapper* m_triBodyWrap; + + btManifoldResult* m_resultOut; btDispatcher* m_dispatcher; @@ -41,6 +43,8 @@ class btConvexTriangleCallback : public btTriangleCallback btScalar m_collisionMarginTriangle; public: + BT_DECLARE_ALIGNED_ALLOCATOR(); + int m_triangleCount; btPersistentManifold* m_manifoldPtr; @@ -75,17 +79,19 @@ int m_triangleCount; /// btConvexConcaveCollisionAlgorithm supports collision between convex shapes and (concave) trianges meshes. -class btConvexConcaveCollisionAlgorithm : public btActivatingCollisionAlgorithm +ATTRIBUTE_ALIGNED16(class) btConvexConcaveCollisionAlgorithm : public btActivatingCollisionAlgorithm { - bool m_isSwapped; - btConvexTriangleCallback m_btConvexTriangleCallback; + bool m_isSwapped; + public: + BT_DECLARE_ALIGNED_ALLOCATOR(); + btConvexConcaveCollisionAlgorithm( const btCollisionAlgorithmConstructionInfo& ci,const btCollisionObjectWrapper* body0Wrap,const btCollisionObjectWrapper* body1Wrap,bool isSwapped); virtual ~btConvexConcaveCollisionAlgorithm(); diff --git a/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp b/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp index d42f00a63..9a2e3394d 100644 --- a/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp +++ b/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp @@ -123,6 +123,7 @@ btDefaultCollisionConfiguration::btDefaultCollisionConfiguration(const btDefault m_persistentManifoldPool = new (mem) btPoolAllocator(sizeof(btPersistentManifold),constructionInfo.m_defaultMaxPersistentManifoldPoolSize); } + collisionAlgorithmMaxElementSize = (collisionAlgorithmMaxElementSize+16)&0xffffffffffff0; if (constructionInfo.m_collisionAlgorithmPool) { m_ownsCollisionAlgorithmPool = false;