Add the Arduino Code, the Processing code,

Add comments in all the code
Add a new version of Goku
master
JeanotP1314 2016-12-26 01:03:14 -08:00
parent 9d20dc1f74
commit 765246538c
52 changed files with 15411 additions and 31582 deletions

View File

@ -0,0 +1,153 @@
#include <Mouse.h>
#include <Keyboard.h>
//#include <Joystick.h> // the joystick is now transmit on serial
#include <SPI.h> //Call SPI library so you can communicate with the nRF24L01+
#include <nRF24L01.h>
#include <RF24.h>
#define button 4
void read_Bluetooth();
void print_Bluetooth();
void send_Serial(byte id_num);
//Bluetooth
byte ID = 0;
unsigned char bt_rx[4]; // The 4 byte reception bluetooth buffer
unsigned char bt_tx = '1'; // Calibration data
const int pinCE = 9; //This pin is used to set the nRF24 to standby (0) or active mode (1)
const int pinCSN = 10; //This pin is used to tell the nRF24 whether the SPI communication is a command or message to send out
RF24 wirelessSPI(pinCE, pinCSN); // Declare object from nRF24 library (Create your wireless SPI)
// Here we have 5 bluetooth nodes communicating with the central. The first address is used for the Wii Nunchuck
//Create pipe addresses for the 5 nodes to recieve data, the "LL" is for LongLong type
const uint64_t rAddress[] = {0xB00B1E50C3LL, 0xB00B1E50D6LL, 0xB00B1E50D2LL, 0xB00B1E50A6LL, 0xB00B1E50A0LL};
//Create pipe addresses for the 5 nodes to transmit data, the "LL" is for LongLong type
const uint64_t wAddress[] = {0xB00B1E50A4LL, 0xB00B1E50B5LL, 0xB00B1E50B1LL, 0xB00B1E50A8LL, 0xB00B1E50A1LL};
void setup()
{
pinMode(button, INPUT); // Safety button, in case of HID debugging
digitalWrite(button, LOW);
Serial.begin(9600); //start serial to communication
wirelessSPI.begin(); //Start the nRF24 module
wirelessSPI.openReadingPipe(1, rAddress[0]); //open pipe o for recieving meassages with pipe address
wirelessSPI.openReadingPipe(2, rAddress[1]); //open pipe o for recieving meassages with pipe address
wirelessSPI.openReadingPipe(3, rAddress[2]); //open pipe o for recieving meassages with pipe address
wirelessSPI.openReadingPipe(4, rAddress[3]); //open pipe o for recieving meassages with pipe address
wirelessSPI.openReadingPipe(5, rAddress[4]); //open pipe o for recieving meassages with pipe address
wirelessSPI.startListening(); // Start listening for messages
}
void loop()
{
ID = 0;
read_Bluetooth();
if (digitalRead(button) == HIGH && 1 <= ID && ID <= 10) { // From nodes 1 to 10
//print_Bluetooth();
send_Serial(ID);
}
delay(1); // check if necessary
}
void send_Serial(byte id_num) {
int tmp[4];
tmp[0] = (unsigned char)bt_rx[0];
tmp[1] = (unsigned char)bt_rx[1];
tmp[2] = (unsigned char)bt_rx[2];
tmp[3] = (unsigned char)bt_rx[3];
if (id_num == 1 && bt_rx[3] == 0) {
Serial.print('J');
Serial.print(','); // before the joystick didn't had any virgule, check if still ok
}
if (id_num == 2) {
Serial.print('A');
Serial.print(',');
}
if (id_num == 3) {
Serial.print('B');
Serial.print(',');
}
if (id_num == 4) {
Serial.print('C');
Serial.print(',');
}
if (id_num == 5) {
Serial.print('D');
Serial.print(',');
}
// Here we can add some node if necessary
if ((2 <= id_num && id_num <= 10) || (id_num == 1 && bt_rx[3] == 0)) {
Serial.print(tmp[0]);
Serial.print(",");
Serial.print(tmp[1]);
Serial.print(",");
Serial.print(tmp[2]);
Serial.print(",");
Serial.print(",");
Serial.print('\n');
delay(20); //***** check if necessary
}
if (id_num == 1 && bt_rx[3] == 1)
{
calibrate_nodes();
}
}
void calibrate_nodes() {
int timeout = 100; // To have a non blocking calibration **** need to check the timeout
wirelessSPI.stopListening(); //Stop listening, stop recieving data.
for (int i = 1; i < 5; i++) {
wirelessSPI.openWritingPipe(wAddress[i]);
timeout = 100;
while (!wirelessSPI.write(&bt_tx, 1) && timeout > 0) {
//Serial.print("Failed sending ");
//Serial.println(i);
//delayMicroseconds(100);
delay(1);
timeout--;
}
if (timeout > 0 ) {
//Serial.print("Success sending ");
//Serial.println(i);
} else {
//Serial.println("FAILED 0");
}
}
wirelessSPI.startListening(); //Switch back to a reciever
}
void read_Bluetooth() {
while (wirelessSPI.available(&ID)) { //Check if recieved data
wirelessSPI.read(&bt_rx, 4); //read one byte of data and store it in gotByte variable
}
}
void print_Bluetooth() {
Serial.print("BT rx : ");
Serial.print(ID);
Serial.print(" - ");
Serial.print(bt_rx[0], DEC);
Serial.print(" - ");
Serial.print(bt_rx[1], DEC);
Serial.print(" - ");
Serial.print(bt_rx[2], DEC);
Serial.print(" - ");
Serial.print(bt_rx[3], DEC);
Serial.println();
}

View File

@ -0,0 +1,271 @@
/**
Visualize a cube which will assumes the orientation described
in a quaternion coming from the serial port.
INSTRUCTIONS:
This program has to be run when you have the FreeIMU_quaternion
program running on your Arduino and the Arduino connected to your PC.
Remember to set the serialPort variable below to point to the name the
Arduino serial port has in your system. You can get the port using the
Arduino IDE from Tools->Serial Port: the selected entry is what you have
to use as serialPort variable.
Copyright (C) 2011 Fabio Varesano - http://www.varesano.net/
This program is free software: you can redistribute it and/or modify
it under the terms of the version 3 GNU General Public License as
published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import processing.serial.*;
Serial myPort; // Create object from Serial class
//final String serialPort = "/dev/tty.usbmodem1421"; // replace this with your serial port. On windows you will need something like "COM1".
final String serialPort = "/dev/cu.usbmodemHIDK1"; // replace this with your serial port. On windows you will need something like "COM1".
float [] q = new float [4];
float [] hq = null;
float [] Euler = new float [3]; // psi, theta, phi
int lf = 10; // 10 is '\n' in ASCII
byte[] inBuffer = new byte[22]; // this is the number of chars on each line from the Arduino (including /r/n)
PFont font;
final int VIEW_SIZE_X = 1024, VIEW_SIZE_Y = 768;
//final int VIEW_SIZE_X = 10, VIEW_SIZE_Y = 7;
void setup()
{
size(1024, 768, P3D);
myPort = new Serial(this, serialPort, 9600);
// The font must be located in the sketch's "data" directory to load successfully
font = loadFont("CourierNew36.vlw");
/*
float [] axis = new float[3];
axis[0] = 0.0;
axis[1] = 0.0;
axis[2] = 1.0;
float angle = PI/2.0;
hq = quatAxisAngle(axis, angle);
hq = new float[4];
hq[0] = 0.0;
hq[1] = 0.0;
hq[2] = 0.0;
hq[3] = 1.0;
*/
delay(100);
myPort.clear();
myPort.write("1");
}
float decodeFloat(String inString) {
byte [] inData = new byte[4];
if(inString.length() == 8) {
inData[0] = (byte) unhex(inString.substring(0, 2));
inData[1] = (byte) unhex(inString.substring(2, 4));
inData[2] = (byte) unhex(inString.substring(4, 6));
inData[3] = (byte) unhex(inString.substring(6, 8));
}
int intbits = (inData[3] << 24) | ((inData[2] & 0xff) << 16) | ((inData[1] & 0xff) << 8) | (inData[0] & 0xff);
return Float.intBitsToFloat(intbits);
}
void readQ() {
if(myPort.available() >= 18) {
String inputString = myPort.readStringUntil('\n');
//print(inputString);
if (inputString != null && inputString.length() > 0) {
String [] inputStringArr = split(inputString, ",");
if(inputStringArr.length >= 4) { // q1,q2,q3,q4,\r\n so we have 5 elements
Euler[0] = float(inputStringArr[1]);
Euler[0] = ((Euler[0] * 2.5)-320)/100;
Euler[1] = float(inputStringArr[2]);
Euler[1] = ((Euler[1] * 2.5)-320)/100;
Euler[2] = float(inputStringArr[3]);
Euler[2] = ((Euler[2] * 2.5)-320)/100;
//println(Euler[0]);
/*
q[0] = decodeFloat(inputStringArr[0]);
q[1] = decodeFloat(inputStringArr[1]);
q[2] = decodeFloat(inputStringArr[2]);
q[3] = decodeFloat(inputStringArr[3]);
*/
}
}
}
}
void buildBoxShape() {
//box(60, 10, 40);
noStroke();
beginShape(QUADS);
//Z+ (to the drawing area)
fill(#00ff00);
vertex(-30, -5, 20);
vertex(30, -5, 20);
vertex(30, 5, 20);
vertex(-30, 5, 20);
//Z-
fill(#0000ff);
vertex(-30, -5, -20);
vertex(30, -5, -20);
vertex(30, 5, -20);
vertex(-30, 5, -20);
//X-
fill(#ff0000);
vertex(-30, -5, -20);
vertex(-30, -5, 20);
vertex(-30, 5, 20);
vertex(-30, 5, -20);
//X+
fill(#ffff00);
vertex(30, -5, -20);
vertex(30, -5, 20);
vertex(30, 5, 20);
vertex(30, 5, -20);
//Y-
fill(#ff00ff);
vertex(-30, -5, -20);
vertex(30, -5, -20);
vertex(30, -5, 20);
vertex(-30, -5, 20);
//Y+
fill(#00ffff);
vertex(-30, 5, -20);
vertex(30, 5, -20);
vertex(30, 5, 20);
vertex(-30, 5, 20);
endShape();
}
void drawCube() {
pushMatrix();
translate(VIEW_SIZE_X/2, VIEW_SIZE_Y/2 + 50, 0);
scale(5,5,5);
// a demonstration of the following is at
// http://www.varesano.net/blog/fabio/ahrs-sensor-fusion-orientation-filter-3d-graphical-rotating-cube
rotateZ(-Euler[2]);
rotateX(-Euler[1]);
rotateY(-Euler[0]);
buildBoxShape();
popMatrix();
}
void draw() {
background(#000000);
fill(#ffffff);
readQ();
if(hq != null) { // use home quaternion
//quaternionToEuler(quatProd(hq, q), Euler);
text("Disable home position by pressing \"n\"", 20, VIEW_SIZE_Y - 30);
}
else {
//quaternionToEuler(q, Euler);
text("Point FreeIMU's X axis to your monitor then press \"h\"", 20, VIEW_SIZE_Y - 30);
}
textFont(font, 20);
textAlign(LEFT, TOP);
text("Q:\n" + q[0] + "\n" + q[1] + "\n" + q[2] + "\n" + q[3], 20, 20);
text("Euler Angles:\nYaw (psi) : " + degrees(Euler[0]) + "\nPitch (theta): " + degrees(Euler[1]) + "\nRoll (phi) : " + degrees(Euler[2]), 200, 20);
drawCube();
}
void keyPressed() {
if(key == 'h') {
println("pressed h");
// set hq the home quaternion as the quatnion conjugate coming from the sensor fusion
hq = quatConjugate(q);
}
else if(key == 'n') {
println("pressed n");
hq = null;
}
}
// See Sebastian O.H. Madwick report
// "An efficient orientation filter for inertial and intertial/magnetic sensor arrays" Chapter 2 Quaternion representation
void quaternionToEuler(float [] q, float [] euler) {
euler[0] = atan2(2 * q[1] * q[2] - 2 * q[0] * q[3], 2 * q[0]*q[0] + 2 * q[1] * q[1] - 1); // psi
euler[1] = -asin(2 * q[1] * q[3] + 2 * q[0] * q[2]); // theta
euler[2] = atan2(2 * q[2] * q[3] - 2 * q[0] * q[1], 2 * q[0] * q[0] + 2 * q[3] * q[3] - 1); // phi
}
float [] quatProd(float [] a, float [] b) {
float [] q = new float[4];
q[0] = a[0] * b[0] - a[1] * b[1] - a[2] * b[2] - a[3] * b[3];
q[1] = a[0] * b[1] + a[1] * b[0] + a[2] * b[3] - a[3] * b[2];
q[2] = a[0] * b[2] - a[1] * b[3] + a[2] * b[0] + a[3] * b[1];
q[3] = a[0] * b[3] + a[1] * b[2] - a[2] * b[1] + a[3] * b[0];
return q;
}
// returns a quaternion from an axis angle representation
float [] quatAxisAngle(float [] axis, float angle) {
float [] q = new float[4];
float halfAngle = angle / 2.0;
float sinHalfAngle = sin(halfAngle);
q[0] = cos(halfAngle);
q[1] = -axis[0] * sinHalfAngle;
q[2] = -axis[1] * sinHalfAngle;
q[3] = -axis[2] * sinHalfAngle;
return q;
}
// return the quaternion conjugate of quat
float [] quatConjugate(float [] quat) {
float [] conj = new float[4];
conj[0] = quat[0];
conj[1] = -quat[1];
conj[2] = -quat[2];
conj[3] = -quat[3];
return conj;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@ -0,0 +1,900 @@
#include <Wire.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#define MPU_ADDR 0x68
#define MEM_START_ADDR 0x6E
#define MEM_R_W 0x6F
#define NODE_NUMBER 1
#include <SPI.h> //Call SPI library so you can communicate with the nRF24L01+
#include <nRF24L01.h> //nRF2401 libarary found at https://github.com/tmrh20/RF24/
#include <RF24.h> //nRF2401 libarary found at https://github.com/tmrh20/RF24/
const int pinCE = 3; //This pin is used to set the nRF24 to standby (0) or active mode (1)
const int pinCSN = 10; //This pin is used to tell the nRF24 whether the SPI communication is a command or message to send out
byte counter = 1; //used to count the packets sent
bool done = false; //used to know when to stop sending packets
RF24 wirelessSPI(pinCE, pinCSN); // Create your nRF24 object or wireless SPI connection
#if NODE_NUMBER == 1
const uint64_t wAddress = 0xB00B1E50D6LL; // Pipe to write or transmit on
const uint64_t rAddress = 0xB00B1E50B5LL; //pipe to recive data on
#endif
#if NODE_NUMBER == 2
const uint64_t wAddress = 0xB00B1E50D2LL; // Pipe to write or transmit on
const uint64_t rAddress = 0xB00B1E50B1LL; //pipe to recive data on
#endif
#if NODE_NUMBER == 3
const uint64_t wAddress = 0xB00B1E50A6LL;
const uint64_t rAddress = 0xB00B1E50A8LL;
#endif
#if NODE_NUMBER == 4
const uint64_t wAddress = 0xB00B1E50A0LL;
const uint64_t rAddress = 0xB00B1E50A1LL;
#endif
// Variable to read the sensor
long lastRead = 0;
byte processed_packet[8];
byte received_packet[50];
byte temp = 0;
byte fifoCountL = 0;
byte fifoCountL2 = 0;
//byte packetCount = 0x00;
boolean longPacket = false;
boolean firstPacket = true;
// Variable for bluetooth transmission
unsigned char tx_data[4];
unsigned char rx_data;
int flag_calibration = 0;
// Variable for Quaternion an Euler calculation
float q[4]; // QUaternion received
float q2[4];
float hq[4]; // Quaternion Qualibration reference
float Euler[3]; // The three Euler angle calculated from Quaternion
unsigned const char dmpMem[8][16][16] PROGMEM = {
{
{0xFB, 0x00, 0x00, 0x3E, 0x00, 0x0B, 0x00, 0x36, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00},
{0x00, 0x65, 0x00, 0x54, 0xFF, 0xEF, 0x00, 0x00, 0xFA, 0x80, 0x00, 0x0B, 0x12, 0x82, 0x00, 0x01},
{0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x28, 0x00, 0x00, 0xFF, 0xFF, 0x45, 0x81, 0xFF, 0xFF, 0xFA, 0x72, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x03, 0xE8, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x7F, 0xFF, 0xFF, 0xFE, 0x80, 0x01},
{0x00, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x3E, 0x03, 0x30, 0x40, 0x00, 0x00, 0x00, 0x02, 0xCA, 0xE3, 0x09, 0x3E, 0x80, 0x00, 0x00},
{0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00},
{0x41, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x2A, 0x00, 0x00, 0x16, 0x55, 0x00, 0x00, 0x21, 0x82},
{0xFD, 0x87, 0x26, 0x50, 0xFD, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x05, 0x80, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00},
{0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x6F, 0x00, 0x02, 0x65, 0x32, 0x00, 0x00, 0x5E, 0xC0},
{0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0xFB, 0x8C, 0x6F, 0x5D, 0xFD, 0x5D, 0x08, 0xD9, 0x00, 0x7C, 0x73, 0x3B, 0x00, 0x6C, 0x12, 0xCC},
{0x32, 0x00, 0x13, 0x9D, 0x32, 0x00, 0xD0, 0xD6, 0x32, 0x00, 0x08, 0x00, 0x40, 0x00, 0x01, 0xF4},
{0xFF, 0xE6, 0x80, 0x79, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xD6, 0x00, 0x00, 0x27, 0x10}
},
{
{0xFB, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00},
{0x00, 0x00, 0xFA, 0x36, 0xFF, 0xBC, 0x30, 0x8E, 0x00, 0x05, 0xFB, 0xF0, 0xFF, 0xD9, 0x5B, 0xC8},
{0xFF, 0xD0, 0x9A, 0xBE, 0x00, 0x00, 0x10, 0xA9, 0xFF, 0xF4, 0x1E, 0xB2, 0x00, 0xCE, 0xBB, 0xF7},
{0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x0C},
{0xFF, 0xC2, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xCF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x14},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x03, 0x3F, 0x68, 0xB6, 0x79, 0x35, 0x28, 0xBC, 0xC6, 0x7E, 0xD1, 0x6C},
{0x80, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x6A, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x00, 0x30},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x25, 0x4D, 0x00, 0x2F, 0x70, 0x6D, 0x00, 0x00, 0x05, 0xAE, 0x00, 0x0C, 0x02, 0xD0}
},
{
{0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x54, 0xFF, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x01, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x01, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0xFF, 0xEF, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00},
{0x00, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
},
{
{0xD8, 0xDC, 0xBA, 0xA2, 0xF1, 0xDE, 0xB2, 0xB8, 0xB4, 0xA8, 0x81, 0x91, 0xF7, 0x4A, 0x90, 0x7F},
{0x91, 0x6A, 0xF3, 0xF9, 0xDB, 0xA8, 0xF9, 0xB0, 0xBA, 0xA0, 0x80, 0xF2, 0xCE, 0x81, 0xF3, 0xC2},
{0xF1, 0xC1, 0xF2, 0xC3, 0xF3, 0xCC, 0xA2, 0xB2, 0x80, 0xF1, 0xC6, 0xD8, 0x80, 0xBA, 0xA7, 0xDF},
{0xDF, 0xDF, 0xF2, 0xA7, 0xC3, 0xCB, 0xC5, 0xB6, 0xF0, 0x87, 0xA2, 0x94, 0x24, 0x48, 0x70, 0x3C},
{0x95, 0x40, 0x68, 0x34, 0x58, 0x9B, 0x78, 0xA2, 0xF1, 0x83, 0x92, 0x2D, 0x55, 0x7D, 0xD8, 0xB1},
{0xB4, 0xB8, 0xA1, 0xD0, 0x91, 0x80, 0xF2, 0x70, 0xF3, 0x70, 0xF2, 0x7C, 0x80, 0xA8, 0xF1, 0x01},
{0xB0, 0x98, 0x87, 0xD9, 0x43, 0xD8, 0x86, 0xC9, 0x88, 0xBA, 0xA1, 0xF2, 0x0E, 0xB8, 0x97, 0x80},
{0xF1, 0xA9, 0xDF, 0xDF, 0xDF, 0xAA, 0xDF, 0xDF, 0xDF, 0xF2, 0xAA, 0xC5, 0xCD, 0xC7, 0xA9, 0x0C},
{0xC9, 0x2C, 0x97, 0x97, 0x97, 0x97, 0xF1, 0xA9, 0x89, 0x26, 0x46, 0x66, 0xB0, 0xB4, 0xBA, 0x80},
{0xAC, 0xDE, 0xF2, 0xCA, 0xF1, 0xB2, 0x8C, 0x02, 0xA9, 0xB6, 0x98, 0x00, 0x89, 0x0E, 0x16, 0x1E},
{0xB8, 0xA9, 0xB4, 0x99, 0x2C, 0x54, 0x7C, 0xB0, 0x8A, 0xA8, 0x96, 0x36, 0x56, 0x76, 0xF1, 0xB9},
{0xAF, 0xB4, 0xB0, 0x83, 0xC0, 0xB8, 0xA8, 0x97, 0x11, 0xB1, 0x8F, 0x98, 0xB9, 0xAF, 0xF0, 0x24},
{0x08, 0x44, 0x10, 0x64, 0x18, 0xF1, 0xA3, 0x29, 0x55, 0x7D, 0xAF, 0x83, 0xB5, 0x93, 0xAF, 0xF0},
{0x00, 0x28, 0x50, 0xF1, 0xA3, 0x86, 0x9F, 0x61, 0xA6, 0xDA, 0xDE, 0xDF, 0xD9, 0xFA, 0xA3, 0x86},
{0x96, 0xDB, 0x31, 0xA6, 0xD9, 0xF8, 0xDF, 0xBA, 0xA6, 0x8F, 0xC2, 0xC5, 0xC7, 0xB2, 0x8C, 0xC1},
{0xB8, 0xA2, 0xDF, 0xDF, 0xDF, 0xA3, 0xDF, 0xDF, 0xDF, 0xD8, 0xD8, 0xF1, 0xB8, 0xA8, 0xB2, 0x86}
},
{
{0xB4, 0x98, 0x0D, 0x35, 0x5D, 0xB8, 0xAA, 0x98, 0xB0, 0x87, 0x2D, 0x35, 0x3D, 0xB2, 0xB6, 0xBA},
{0xAF, 0x8C, 0x96, 0x19, 0x8F, 0x9F, 0xA7, 0x0E, 0x16, 0x1E, 0xB4, 0x9A, 0xB8, 0xAA, 0x87, 0x2C},
{0x54, 0x7C, 0xB9, 0xA3, 0xDE, 0xDF, 0xDF, 0xA3, 0xB1, 0x80, 0xF2, 0xC4, 0xCD, 0xC9, 0xF1, 0xB8},
{0xA9, 0xB4, 0x99, 0x83, 0x0D, 0x35, 0x5D, 0x89, 0xB9, 0xA3, 0x2D, 0x55, 0x7D, 0xB5, 0x93, 0xA3},
{0x0E, 0x16, 0x1E, 0xA9, 0x2C, 0x54, 0x7C, 0xB8, 0xB4, 0xB0, 0xF1, 0x97, 0x83, 0xA8, 0x11, 0x84},
{0xA5, 0x09, 0x98, 0xA3, 0x83, 0xF0, 0xDA, 0x24, 0x08, 0x44, 0x10, 0x64, 0x18, 0xD8, 0xF1, 0xA5},
{0x29, 0x55, 0x7D, 0xA5, 0x85, 0x95, 0x02, 0x1A, 0x2E, 0x3A, 0x56, 0x5A, 0x40, 0x48, 0xF9, 0xF3},
{0xA3, 0xD9, 0xF8, 0xF0, 0x98, 0x83, 0x24, 0x08, 0x44, 0x10, 0x64, 0x18, 0x97, 0x82, 0xA8, 0xF1},
{0x11, 0xF0, 0x98, 0xA2, 0x24, 0x08, 0x44, 0x10, 0x64, 0x18, 0xDA, 0xF3, 0xDE, 0xD8, 0x83, 0xA5},
{0x94, 0x01, 0xD9, 0xA3, 0x02, 0xF1, 0xA2, 0xC3, 0xC5, 0xC7, 0xD8, 0xF1, 0x84, 0x92, 0xA2, 0x4D},
{0xDA, 0x2A, 0xD8, 0x48, 0x69, 0xD9, 0x2A, 0xD8, 0x68, 0x55, 0xDA, 0x32, 0xD8, 0x50, 0x71, 0xD9},
{0x32, 0xD8, 0x70, 0x5D, 0xDA, 0x3A, 0xD8, 0x58, 0x79, 0xD9, 0x3A, 0xD8, 0x78, 0x93, 0xA3, 0x4D},
{0xDA, 0x2A, 0xD8, 0x48, 0x69, 0xD9, 0x2A, 0xD8, 0x68, 0x55, 0xDA, 0x32, 0xD8, 0x50, 0x71, 0xD9},
{0x32, 0xD8, 0x70, 0x5D, 0xDA, 0x3A, 0xD8, 0x58, 0x79, 0xD9, 0x3A, 0xD8, 0x78, 0xA8, 0x8A, 0x9A},
{0xF0, 0x28, 0x50, 0x78, 0x9E, 0xF3, 0x88, 0x18, 0xF1, 0x9F, 0x1D, 0x98, 0xA8, 0xD9, 0x08, 0xD8},
{0xC8, 0x9F, 0x12, 0x9E, 0xF3, 0x15, 0xA8, 0xDA, 0x12, 0x10, 0xD8, 0xF1, 0xAF, 0xC8, 0x97, 0x87}
},
{
{0x34, 0xB5, 0xB9, 0x94, 0xA4, 0x21, 0xF3, 0xD9, 0x22, 0xD8, 0xF2, 0x2D, 0xF3, 0xD9, 0x2A, 0xD8},
{0xF2, 0x35, 0xF3, 0xD9, 0x32, 0xD8, 0x81, 0xA4, 0x60, 0x60, 0x61, 0xD9, 0x61, 0xD8, 0x6C, 0x68},
{0x69, 0xD9, 0x69, 0xD8, 0x74, 0x70, 0x71, 0xD9, 0x71, 0xD8, 0xB1, 0xA3, 0x84, 0x19, 0x3D, 0x5D},
{0xA3, 0x83, 0x1A, 0x3E, 0x5E, 0x93, 0x10, 0x30, 0x81, 0x10, 0x11, 0xB8, 0xB0, 0xAF, 0x8F, 0x94},
{0xF2, 0xDA, 0x3E, 0xD8, 0xB4, 0x9A, 0xA8, 0x87, 0x29, 0xDA, 0xF8, 0xD8, 0x87, 0x9A, 0x35, 0xDA},
{0xF8, 0xD8, 0x87, 0x9A, 0x3D, 0xDA, 0xF8, 0xD8, 0xB1, 0xB9, 0xA4, 0x98, 0x85, 0x02, 0x2E, 0x56},
{0xA5, 0x81, 0x00, 0x0C, 0x14, 0xA3, 0x97, 0xB0, 0x8A, 0xF1, 0x2D, 0xD9, 0x28, 0xD8, 0x4D, 0xD9},
{0x48, 0xD8, 0x6D, 0xD9, 0x68, 0xD8, 0xB1, 0x84, 0x0D, 0xDA, 0x0E, 0xD8, 0xA3, 0x29, 0x83, 0xDA},
{0x2C, 0x0E, 0xD8, 0xA3, 0x84, 0x49, 0x83, 0xDA, 0x2C, 0x4C, 0x0E, 0xD8, 0xB8, 0xB0, 0xA8, 0x8A},
{0x9A, 0xF5, 0x20, 0xAA, 0xDA, 0xDF, 0xD8, 0xA8, 0x40, 0xAA, 0xD0, 0xDA, 0xDE, 0xD8, 0xA8, 0x60},
{0xAA, 0xDA, 0xD0, 0xDF, 0xD8, 0xF1, 0x97, 0x86, 0xA8, 0x31, 0x9B, 0x06, 0x99, 0x07, 0xAB, 0x97},
{0x28, 0x88, 0x9B, 0xF0, 0x0C, 0x20, 0x14, 0x40, 0xB8, 0xB0, 0xB4, 0xA8, 0x8C, 0x9C, 0xF0, 0x04},
{0x28, 0x51, 0x79, 0x1D, 0x30, 0x14, 0x38, 0xB2, 0x82, 0xAB, 0xD0, 0x98, 0x2C, 0x50, 0x50, 0x78},
{0x78, 0x9B, 0xF1, 0x1A, 0xB0, 0xF0, 0x8A, 0x9C, 0xA8, 0x29, 0x51, 0x79, 0x8B, 0x29, 0x51, 0x79},
{0x8A, 0x24, 0x70, 0x59, 0x8B, 0x20, 0x58, 0x71, 0x8A, 0x44, 0x69, 0x38, 0x8B, 0x39, 0x40, 0x68},
{0x8A, 0x64, 0x48, 0x31, 0x8B, 0x30, 0x49, 0x60, 0xA5, 0x88, 0x20, 0x09, 0x71, 0x58, 0x44, 0x68}
},
{
{0x11, 0x39, 0x64, 0x49, 0x30, 0x19, 0xF1, 0xAC, 0x00, 0x2C, 0x54, 0x7C, 0xF0, 0x8C, 0xA8, 0x04},
{0x28, 0x50, 0x78, 0xF1, 0x88, 0x97, 0x26, 0xA8, 0x59, 0x98, 0xAC, 0x8C, 0x02, 0x26, 0x46, 0x66},
{0xF0, 0x89, 0x9C, 0xA8, 0x29, 0x51, 0x79, 0x24, 0x70, 0x59, 0x44, 0x69, 0x38, 0x64, 0x48, 0x31},
{0xA9, 0x88, 0x09, 0x20, 0x59, 0x70, 0xAB, 0x11, 0x38, 0x40, 0x69, 0xA8, 0x19, 0x31, 0x48, 0x60},
{0x8C, 0xA8, 0x3C, 0x41, 0x5C, 0x20, 0x7C, 0x00, 0xF1, 0x87, 0x98, 0x19, 0x86, 0xA8, 0x6E, 0x76},
{0x7E, 0xA9, 0x99, 0x88, 0x2D, 0x55, 0x7D, 0x9E, 0xB9, 0xA3, 0x8A, 0x22, 0x8A, 0x6E, 0x8A, 0x56},
{0x8A, 0x5E, 0x9F, 0xB1, 0x83, 0x06, 0x26, 0x46, 0x66, 0x0E, 0x2E, 0x4E, 0x6E, 0x9D, 0xB8, 0xAD},
{0x00, 0x2C, 0x54, 0x7C, 0xF2, 0xB1, 0x8C, 0xB4, 0x99, 0xB9, 0xA3, 0x2D, 0x55, 0x7D, 0x81, 0x91},
{0xAC, 0x38, 0xAD, 0x3A, 0xB5, 0x83, 0x91, 0xAC, 0x2D, 0xD9, 0x28, 0xD8, 0x4D, 0xD9, 0x48, 0xD8},
{0x6D, 0xD9, 0x68, 0xD8, 0x8C, 0x9D, 0xAE, 0x29, 0xD9, 0x04, 0xAE, 0xD8, 0x51, 0xD9, 0x04, 0xAE},
{0xD8, 0x79, 0xD9, 0x04, 0xD8, 0x81, 0xF3, 0x9D, 0xAD, 0x00, 0x8D, 0xAE, 0x19, 0x81, 0xAD, 0xD9},
{0x01, 0xD8, 0xF2, 0xAE, 0xDA, 0x26, 0xD8, 0x8E, 0x91, 0x29, 0x83, 0xA7, 0xD9, 0xAD, 0xAD, 0xAD},
{0xAD, 0xF3, 0x2A, 0xD8, 0xD8, 0xF1, 0xB0, 0xAC, 0x89, 0x91, 0x3E, 0x5E, 0x76, 0xF3, 0xAC, 0x2E},
{0x2E, 0xF1, 0xB1, 0x8C, 0x5A, 0x9C, 0xAC, 0x2C, 0x28, 0x28, 0x28, 0x9C, 0xAC, 0x30, 0x18, 0xA8},
{0x98, 0x81, 0x28, 0x34, 0x3C, 0x97, 0x24, 0xA7, 0x28, 0x34, 0x3C, 0x9C, 0x24, 0xF2, 0xB0, 0x89},
{0xAC, 0x91, 0x2C, 0x4C, 0x6C, 0x8A, 0x9B, 0x2D, 0xD9, 0xD8, 0xD8, 0x51, 0xD9, 0xD8, 0xD8, 0x79}
},
{
{0xD9, 0xD8, 0xD8, 0xF1, 0x9E, 0x88, 0xA3, 0x31, 0xDA, 0xD8, 0xD8, 0x91, 0x2D, 0xD9, 0x28, 0xD8},
{0x4D, 0xD9, 0x48, 0xD8, 0x6D, 0xD9, 0x68, 0xD8, 0xB1, 0x83, 0x93, 0x35, 0x3D, 0x80, 0x25, 0xDA},
{0xD8, 0xD8, 0x85, 0x69, 0xDA, 0xD8, 0xD8, 0xB4, 0x93, 0x81, 0xA3, 0x28, 0x34, 0x3C, 0xF3, 0xAB},
{0x8B, 0xF8, 0xA3, 0x91, 0xB6, 0x09, 0xB4, 0xD9, 0xAB, 0xDE, 0xFA, 0xB0, 0x87, 0x9C, 0xB9, 0xA3},
{0xDD, 0xF1, 0xA3, 0xA3, 0xA3, 0xA3, 0x95, 0xF1, 0xA3, 0xA3, 0xA3, 0x9D, 0xF1, 0xA3, 0xA3, 0xA3},
{0xA3, 0xF2, 0xA3, 0xB4, 0x90, 0x80, 0xF2, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3},
{0xA3, 0xB2, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xB0, 0x87, 0xB5, 0x99, 0xF1, 0xA3, 0xA3, 0xA3},
{0x98, 0xF1, 0xA3, 0xA3, 0xA3, 0xA3, 0x97, 0xA3, 0xA3, 0xA3, 0xA3, 0xF3, 0x9B, 0xA3, 0xA3, 0xDC},
{0xB9, 0xA7, 0xF1, 0x26, 0x26, 0x26, 0xD8, 0xD8, 0xFF}
}
};
//DMP update transmissions (Bank, Start Address, Update Length, Update Data...)
static byte dmp_updates[29][9] =
{
{
0x03, 0x7B, 0x03, 0x4C, 0xCD, 0x6C
} //FCFG_1 inv_set_gyro_calibration
,
{
0x03, 0xAB, 0x03, 0x36, 0x56, 0x76
} //FCFG_3 inv_set_gyro_calibration
,
{
0x00, 0x68, 0x04, 0x02, 0xCB, 0x47, 0xA2
} //D_0_104 inv_set_gyro_calibration
,
{
0x02, 0x18, 0x04, 0x00, 0x05, 0x8B, 0xC1
} //D_0_24 inv_set_gyro_calibration
,
{
0x01, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00
} //D_1_152 inv_set_accel_calibration
,
{
0x03, 0x7F, 0x06, 0x0C, 0xC9, 0x2C, 0x97, 0x97, 0x97
} //FCFG_2 inv_set_accel_calibration
,
{
0x03, 0x89, 0x03, 0x26, 0x46, 0x66
} //FCFG_7 inv_set_accel_calibration
,
{
0x00, 0x6C, 0x02, 0x20, 0x00
} //D_0_108 inv_set_accel_calibration
,
{
0x02, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00
} //CPASS_MTX_00 inv_set_compass_calibration
,
{
0x02, 0x44, 0x04, 0x00, 0x00, 0x00, 0x00
} //CPASS_MTX_01
,
{
0x02, 0x48, 0x04, 0x00, 0x00, 0x00, 0x00
} //CPASS_MTX_02
,
{
0x02, 0x4C, 0x04, 0x00, 0x00, 0x00, 0x00
} //CPASS_MTX_10
,
{
0x02, 0x50, 0x04, 0x00, 0x00, 0x00, 0x00
} //CPASS_MTX_11
,
{
0x02, 0x54, 0x04, 0x00, 0x00, 0x00, 0x00
} //CPASS_MTX_12
,
{
0x02, 0x58, 0x04, 0x00, 0x00, 0x00, 0x00
} //CPASS_MTX_20
,
{
0x02, 0x5C, 0x04, 0x00, 0x00, 0x00, 0x00
} //CPASS_MTX_21
,
{
0x02, 0xBC, 0x04, 0x00, 0x00, 0x00, 0x00
} //CPASS_MTX_22
,
{
0x01, 0xEC, 0x04, 0x00, 0x00, 0x40, 0x00
} //D_1_236 inv_apply_endian_accel
,
{
0x03, 0x7F, 0x06, 0x0C, 0xC9, 0x2C, 0x97, 0x97, 0x97
} //FCFG_2 inv_set_mpu_sensors
,
{
0x04, 0x02, 0x03, 0x0D, 0x35, 0x5D
} //CFG_MOTION_BIAS inv_turn_on_bias_from_no_motion
,
{
0x04, 0x09, 0x04, 0x87, 0x2D, 0x35, 0x3D
} //FCFG_5 inv_set_bias_update
,
{
0x00, 0xA3, 0x01, 0x00
} //D_0_163 inv_set_dead_zone
,
//SET INT_ENABLE at i=22
{
0x07, 0x86, 0x01, 0xFE
} //CFG_6 inv_set_fifo_interupt
,
{
0x07, 0x41, 0x05, 0xF1, 0x20, 0x28, 0x30, 0x38
} //CFG_8 inv_send_quaternion
,
{
0x07, 0x7E, 0x01, 0x30
} //CFG_16 inv_set_footer
,
{
0x07, 0x46, 0x01, 0x9A
} //CFG_GYRO_SOURCE inv_send_gyro
,
{
0x07, 0x47, 0x04, 0xF1, 0x28, 0x30, 0x38
} //CFG_9 inv_send_gyro -> inv_construct3_fifo
,
{
0x07, 0x6C, 0x04, 0xF1, 0x28, 0x30, 0x38
} //CFG_12 inv_send_accel -> inv_construct3_fifo
,
{
0x02, 0x16, 0x02, 0x00, 0x0A
} //D_0_22 inv_set_fifo_rate
};
void setup() {
Serial.begin(9600); //start serial to communicate process
wirelessSPI.begin(); //Start the nRF24 module
wirelessSPI.openWritingPipe(wAddress); //open writing or transmit pipe
wirelessSPI.openReadingPipe(1, rAddress); //open reading or recieve pipe
wirelessSPI.stopListening(); //go into transmit mode
Wire.begin();
delay(1);
check_MPU();
//Serial.println("MPU-6050 6-Axis");
regWrite(0x6B, 0xC0);
regWrite(0x6C, 0x00);
delay(10);
//regWrite(0x6B, 0x70);
regWrite(0x6B, 0x00);
regWrite(0x6D, 0x70);
regWrite(0x6E, 0x06);
temp = regRead(0x6F);
//Serial.print("Bank 1, Reg 6 = ");
//Serial.println(temp, HEX);
// temp = regRead(0x6B);
// Serial.println(temp, HEX);
regWrite(0x6D, 0x00);
temp = regRead(0x00);
//Serial.println(temp, HEX);
temp = regRead(0x01);
//Serial.println(temp, HEX);
temp = regRead(0x02);
//Serial.println(temp, HEX);
temp = regRead(0x6A);
//Serial.println(temp, HEX);
regWrite(0x37, 0x32);
temp = regRead(0x6B);
//Serial.println(temp, HEX);
delay(5);
// regWrite(0x25, 0x68); //Set Slave 0 to self
//
// regWrite(0x6A, 0x02);
mem_init();
delay(20);
}
void loop() {
// =========================================================
// This part is from the DOF sensor exemple
if (millis() >= lastRead + 1) {
lastRead = millis();
int toto = fifoReady();
if ( toto == 1) {
getPacket();
temp = regRead(0x3A);
if (firstPacket) {
delay(1);
bank_sel(0x00);
regWrite(0x6E, 0x60);
Wire.beginTransmission(MPU_ADDR);
Wire.write(0x6F);
Wire.write(0x04); Wire.write(0x00); Wire.write(0x00); Wire.write(0x00);
// Wire.write(0x00); Wire.write(0x80); Wire.write(0x00); Wire.write(0x00);
Wire.endTransmission();
bank_sel(1);
regWrite(0x6E, 0x62);
Wire.beginTransmission(MPU_ADDR);
Wire.write(0x6F);
Wire.endTransmission();
Wire.beginTransmission(MPU_ADDR);
Wire.requestFrom(MPU_ADDR, 2);
temp = Wire.read();
temp = Wire.read();
firstPacket = false;
fifoReady();
}
// resetFifo();
// =====================================================
// If the fifo count is good, enter the function to transform Quaternions to
// Euler, send the Bluetooth data, and read Bluetooth for recalibration.
if (fifoCountL == 42) {
processQuat();
sendQuat();
if (flag_calibration == 1) { // use home quaternion
//Serial.println("HQ Activate");
quatProd(hq, q);
quaternionToEuler(q2, Euler);
print_data(); // use the print data for debugging purposes is you have a Serial port
}
else {
quaternionToEuler(q, Euler);
}
pack_data(); // Function to pack and store the data into tx_data[] for Bluetooth
if (!wirelessSPI.write( &tx_data, 4 )) {
Serial.println("Guess delivery failed");
}
else {
Serial.println("Success sending guess: ");
}
// ================================================================
// This part read shortly the bluetooth in case a recalibration message is send from the central
wirelessSPI.startListening();
rx_data = '0';
for (int i = 0; i < 10; i++) {
if (!wirelessSPI.available()) {
delayMicroseconds(100);
}
else {
wirelessSPI.read( &rx_data, 1); //read value
}
}
if (rx_data == '1') {
Serial.println("Calibration OK");
quatConjugate(q); // store the Quaternions into reference Quaternion hq[]
flag_calibration = 1; // Flag to use the qualibration
}
wirelessSPI.stopListening(); //go back to transmit mode
}
}
}
delay(10);
}
void pack_data() {
int tmp0 = Euler[0] * 100;
int tmp1 = Euler[1] * 100;
int tmp2 = Euler[2] * 100;
tmp0 = map(tmp0, -320, 320, 0, 255);
tmp1 = map(tmp1, -320, 320, 0, 255);
tmp2 = map(tmp2, -320, 320, 0, 255);
tx_data[0] = tmp0;
tx_data[1] = tmp1;
tx_data[2] = tmp2;
// tx_data[3] is empty. So we can add the buttons action in this byte
}
void print_data() {
Serial.print(" HQ : ");
Serial.print(hq[0], 3);
Serial.print(" --- ");
Serial.print(hq[1], 3);
Serial.print(" --- ");
Serial.print(hq[2], 3);
Serial.print(" --- ");
Serial.print(hq[3], 3);
Serial.print(" Q : ");
Serial.print(q[0], 3);
Serial.print(" --- ");
Serial.print(q[1], 3);
Serial.print(" --- ");
Serial.print(q[2], 3);
Serial.print(" --- ");
Serial.print(q[3], 3);
Serial.print(" Euler : ");
Serial.print(Euler[0], 3);
Serial.print(" --- ");
Serial.print(Euler[1], 3);
Serial.print(" --- ");
Serial.print(Euler[2], 3);
Serial.println();
}
void check_MPU() {
Wire.beginTransmission(MPU_ADDR);
Wire.write(0x75);
Wire.endTransmission();
Wire.beginTransmission(MPU_ADDR);
Wire.requestFrom(MPU_ADDR, 1);
byte aByte = Wire.read();
// Wire.endTransmission();
// while(Wire.available() == 0){
// }
// byte temp = Wire.read();
// Serial.println(temp);
if (aByte == 0x68) {
//Serial.println("Found MPU6050");
}
else {
Serial.println("Didn't find MPU6050");
}
}
void processQuat() {
processed_packet[0] = received_packet[0];
processed_packet[1] = received_packet[1];
processed_packet[2] = received_packet[4];
processed_packet[3] = received_packet[5];
processed_packet[4] = received_packet[8];
processed_packet[5] = received_packet[9];
processed_packet[6] = received_packet[12];
processed_packet[7] = received_packet[13];
}
void sendQuat() {
// following conversion adapted from Invensense's TeaPot example
q[0] = (long) ((((unsigned long) processed_packet[0]) << 8) + ((unsigned long) processed_packet[1]));
q[1] = (long) ((((unsigned long) processed_packet[2]) << 8) + ((unsigned long) processed_packet[3]));
q[2] = (long) ((((unsigned long) processed_packet[4]) << 8) + ((unsigned long) processed_packet[5]));
q[3] = (long) ((((unsigned long) processed_packet[6]) << 8) + ((unsigned long) processed_packet[7]));
for (int i = 0; i < 4; i++ ) {
if ( q[i] > 32767 ) {
q[i] -= 65536;
}
q[i] = ((float) q[i]) / 16384.0f;
}
}
void quaternionToEuler(float q[4], float euler[3]) {
euler[0] = atan2(2 * q[1] * q[2] - 2 * q[0] * q[3], 2 * q[0] * q[0] + 2 * q[1] * q[1] - 1); // psi
euler[1] = -asin(2 * q[1] * q[3] + 2 * q[0] * q[2]); // theta
euler[2] = atan2(2 * q[2] * q[3] - 2 * q[0] * q[1], 2 * q[0] * q[0] + 2 * q[3] * q[3] - 1); // phi
}
void quatProd(float a[4], float b[4]) {
q2[0] = a[0] * b[0] - a[1] * b[1] - a[2] * b[2] - a[3] * b[3];
q2[1] = a[0] * b[1] + a[1] * b[0] + a[2] * b[3] - a[3] * b[2];
q2[2] = a[0] * b[2] - a[1] * b[3] + a[2] * b[0] + a[3] * b[1];
q2[3] = a[0] * b[3] + a[1] * b[2] - a[2] * b[1] + a[3] * b[0];
}
void quatConjugate(float quat[]) {
hq[0] = quat[0];
hq[1] = -quat[1];
hq[2] = -quat[2];
hq[3] = -quat[3];
//return conj;
}
void bank_sel(byte bank) {
Wire.beginTransmission(MPU_ADDR);
Wire.write(0x6D);
Wire.write(bank);
Wire.endTransmission();
}
void dmp_init() {
for (int i = 0; i < 7; i++) {
bank_sel(i);
for (byte j = 0; j < 16; j++) {
byte start_addy = j * 0x10;
Wire.beginTransmission(MPU_ADDR);
Wire.write(MEM_START_ADDR);
Wire.write(start_addy);
Wire.endTransmission();
Wire.beginTransmission(MPU_ADDR);
Wire.write(MEM_R_W);
for (int k = 0; k < 16; k++) {
unsigned char byteToSend = pgm_read_byte(&(dmpMem[i][j][k]));
Wire.write((byte) byteToSend);
}
Wire.endTransmission();
}
// Wire.beginTransmission(MPU_ADDR);
// Wire.write(MEM_R_W);
// Wire.endTransmission();
// Wire.requestFrom(MPU_ADDR, 16);
// byte echoback[16];
// for(int j = 0; j < 16; j++){
// echoback[j] = Wire.read();
// }
// for(int j = 0; j < 16; j++){
// Serial.print(echoback[j], HEX);
// }
}
bank_sel(7);
for (byte j = 0; j < 8; j++) {
byte start_addy = j * 0x10;
Wire.beginTransmission(MPU_ADDR);
Wire.write(MEM_START_ADDR);
Wire.write(start_addy);
Wire.endTransmission();
Wire.beginTransmission(MPU_ADDR);
Wire.write(MEM_R_W);
for (int k = 0; k < 16; k++) {
unsigned char byteToSend = pgm_read_byte(&(dmpMem[7][j][k]));
Wire.write((byte) byteToSend);
}
Wire.endTransmission();
}
Wire.beginTransmission(MPU_ADDR);
Wire.write(MEM_START_ADDR);
Wire.write(0x80);
Wire.endTransmission();
Wire.beginTransmission(MPU_ADDR);
Wire.write(MEM_R_W);
for (int k = 0; k < 9; k++) {
unsigned char byteToSend = pgm_read_byte(&(dmpMem[7][8][k]));
Wire.write((byte) byteToSend);
}
Wire.endTransmission();
Wire.beginTransmission(MPU_ADDR);
Wire.write(MEM_R_W);
Wire.endTransmission();
Wire.beginTransmission(MPU_ADDR);
Wire.requestFrom(MPU_ADDR, 9);
// Wire.endTransmission();
byte incoming[9];
for (int i = 0; i < 9; i++) {
incoming[i] = Wire.read();
}
}
void mem_init() {
dmp_init();
for (byte i = 0; i < 22; i++) {
bank_sel(dmp_updates[i][0]);
Wire.beginTransmission(MPU_ADDR);
Wire.write(MEM_START_ADDR);
Wire.write(dmp_updates[i][1]);
Wire.endTransmission();
Wire.beginTransmission(MPU_ADDR);
Wire.write(MEM_R_W);
for (byte j = 0; j < dmp_updates[i][2]; j++) {
Wire.write(dmp_updates[i][j + 3]);
}
Wire.endTransmission();
}
regWrite(0x38, 0x32);
for (byte i = 22; i < 29; i++) {
bank_sel(dmp_updates[i][0]);
Wire.beginTransmission(MPU_ADDR);
Wire.write(MEM_START_ADDR);
Wire.write(dmp_updates[i][1]);
Wire.endTransmission();
Wire.beginTransmission(MPU_ADDR);
Wire.write(MEM_R_W);
for (byte j = 0; j < dmp_updates[i][2]; j++) {
Wire.write(dmp_updates[i][j + 3]);
}
Wire.endTransmission();
}
temp = regRead(0x6B);
//Serial.println(temp, HEX);
temp = regRead(0x6C);
//Serial.println(temp, HEX);
regWrite(0x38, 0x02);
regWrite(0x6B, 0x03);
// regWrite(0x6B, 0x70);
// regWrite(0x38, 0x38);
// regWrite(0x6B, 0x73);
regWrite(0x19, 0x04);
regWrite(0x1B, 0x18);
regWrite(0x1A, 0x0B);
regWrite(0x70, 0x03);
regWrite(0x71, 0x00);
regWrite(0x00, 0x00);
regWrite(0x01, 0x00);
regWrite(0x02, 0x00);
Wire.beginTransmission(MPU_ADDR);
Wire.write(0x13);
for (byte i = 0; i < 6; i++) {
Wire.write(0x00);
}
Wire.endTransmission();
// regWrite(0x24, 0x00);
bank_sel(0x01);
regWrite(0x6E, 0xB2);
Wire.beginTransmission(MPU_ADDR);
Wire.write(0x6F);
Wire.write(0xFF); Wire.write(0xFF);
Wire.endTransmission();
bank_sel(0x01);
regWrite(0x6E, 0x90);
Wire.beginTransmission(MPU_ADDR);
Wire.write(0x6F);
Wire.write(0x09); Wire.write(0x23); Wire.write(0xA1); Wire.write(0x35);
Wire.endTransmission();
temp = regRead(0x6A);
regWrite(0x6A, 0x04);
//Insert FIFO count read?
fifoReady();
regWrite(0x6A, 0x00);
regWrite(0x6B, 0x03);
delay(2);
temp = regRead(0x6C);
// Serial.println(temp, HEX);
regWrite(0x6C, 0x00);
temp = regRead(0x1C);
// Serial.println(temp, HEX);
regWrite(0x1C, 0x00);
delay(2);
temp = regRead(0x6B);
// Serial.println(temp, HEX);
regWrite(0x1F, 0x02);
regWrite(0x21, 0x9C);
regWrite(0x20, 0x50);
regWrite(0x22, 0x00);
regWrite(0x6A, 0x04);
regWrite(0x6A, 0x00);
regWrite(0x6A, 0xC8);
bank_sel(0x01);
regWrite(0x6E, 0x6A);
Wire.beginTransmission(MPU_ADDR);
Wire.write(0x6F);
Wire.write(0x06); Wire.write(0x00);
Wire.endTransmission();
bank_sel(0x01);
regWrite(0x6E, 0x60);
Wire.beginTransmission(MPU_ADDR);
Wire.write(0x6F);
for (byte i = 0; i < 8; i++) {
Wire.write(0x00);
}
Wire.endTransmission();
// bank_sel(0x01);
// regWrite(0x6E, 0x60);
// Wire.beginTransmission(MPU_ADDR);
// Wire.write(0x6F);
// Wire.write(0x04); Wire.write(0x00); Wire.write(0x00); Wire.write(0x00);
// Wire.endTransmission();
bank_sel(0x00);
regWrite(0x6E, 0x60);
Wire.beginTransmission(MPU_ADDR);
Wire.write(0x6F);
Wire.write(0x40); Wire.write(0x00); Wire.write(0x00); Wire.write(0x00);
Wire.endTransmission();
//resetFifo();
}
void regWrite(byte addy, byte regUpdate) {
Wire.beginTransmission(MPU_ADDR);
Wire.write(addy);
Wire.write(regUpdate);
Wire.endTransmission();
}
byte regRead(byte addy) {
Wire.beginTransmission(MPU_ADDR);
Wire.write(addy);
Wire.endTransmission();
Wire.beginTransmission(MPU_ADDR);
Wire.requestFrom(MPU_ADDR, 1);
// Wire.endTransmission();
while (!Wire.available()) {
}
byte incoming = Wire.read();
return incoming;
}
void getPacket() {
if (fifoCountL > 32) {
fifoCountL2 = fifoCountL - 32;
longPacket = true;
}
Wire.beginTransmission(MPU_ADDR);
Wire.write(0x74);
Wire.endTransmission();
// Wire.requestFrom(MPU_ADDR, 42);
// for(byte i = 0; i < fifoCountL; i++){
if (longPacket) {
Wire.beginTransmission(MPU_ADDR);
Wire.requestFrom(MPU_ADDR, 32);
for (byte i = 0; i < 32; i++) {
received_packet[i] = Wire.read();
}
Wire.beginTransmission(MPU_ADDR);
Wire.write(0x74);
Wire.endTransmission();
Wire.beginTransmission(MPU_ADDR);
Wire.requestFrom(MPU_ADDR, (unsigned int)fifoCountL2);
for (byte i = 32; i < fifoCountL; i++) {
received_packet[i] = Wire.read();
}
longPacket = false;
}
else {
Wire.beginTransmission(MPU_ADDR);
Wire.requestFrom(MPU_ADDR, (unsigned int)fifoCountL);
for (byte i = 0; i < fifoCountL; i++) {
received_packet[i] = Wire.read();
}
}
}
byte read_interrupt() {
byte int_status = regRead(0x3A);
return int_status;
}
boolean fifoReady() {
Wire.beginTransmission(MPU_ADDR);
Wire.write(0x72);
Wire.endTransmission();
Wire.beginTransmission(MPU_ADDR);
Wire.requestFrom(MPU_ADDR, 2);
// Wire.endTransmission();
byte fifoCountH = Wire.read();
fifoCountL = Wire.read();
//Serial.print("fifoCount :");
//Serial.println(fifoCountL, DEC);
if (fifoCountL == 42 || fifoCountL == 44) {
return 1;
}
else if (fifoCountL != 0) {
resetFifo();
}
// else if(fifoCountL == 42){
// getPacket();
// bank_sel(0);
// regWrite(0x6E, 0x60);
// Wire.beginTransmission(MPU_ADDR);
// Wire.write(0x40); Wire.write(0x00); Wire.write (0x00); Wire.write(0x00);
// Wire.endTransmission();
// resetFifo();
// }
// if(Wire.read() == 0x2C){
// return 1;
// }
else return 0;
}
void resetFifo() {
byte ctrl = regRead(0x6A);
ctrl |= 0b00000100;
regWrite(0x6A, ctrl);
}

View File

@ -0,0 +1,71 @@
#include "Wire.h"
#include "WiiChuck.h"
#include <SPI.h> //Call SPI library so you can communicate with the nRF24L01+
#include <nRF24L01.h> //nRF2401 libarary found at https://github.com/tmrh20/RF24/
#include <RF24.h> //nRF2401 libarary found at https://github.com/tmrh20/RF24/
const int pinCE = 9; //This pin is used to set the nRF24 to standby (0) or active mode (1)
const int pinCSN = 10; //This pin is used to tell the nRF24 whether the SPI communication is a command or message to send out
//bool done = false; //used to know when to stop sending guesses
RF24 wirelessSPI(pinCE, pinCSN); // Create your nRF24 object or wireless SPI connection
const uint64_t wAddress = 0xB00B1E50C3LL; //pipe for writing or transmitting data
const uint64_t rAddress = 0xB00B1E50A4LL; //pipe for reading or recieving data
int buttonPin = 2;
int flag_zero = 0;
WiiChuck chuck = WiiChuck();
void setup() {
Serial.begin(9600); //for debugging purposes
chuck.begin();
chuck.update();
wirelessSPI.begin(); //Start the nRF24 module
wirelessSPI.openWritingPipe(wAddress); // setup pipe to transmit over
wirelessSPI.openReadingPipe(1, rAddress); //set up pipe to recieve data
wirelessSPI.stopListening(); //turn off recieve capability so you can transmit
}
void loop() {
char tx_data[4];
chuck.update();
tx_data[0] = chuck.readJoyX();
tx_data[1] = chuck.readJoyY();
tx_data[2] = chuck.buttonZ;
tx_data[3] = chuck.buttonC;
Serial.print(tx_data[0], DEC);
Serial.print(",");
Serial.print(tx_data[1], DEC);
Serial.print(",");
Serial.print(tx_data[2], DEC);
Serial.print(",");
Serial.print(tx_data[3], DEC);
Serial.print(",");
Serial.println();
if (digitalRead(buttonPin) == HIGH && ((tx_data[0] < -10 || 10 < tx_data[0] || tx_data[1] < -10 || 10 < tx_data[1] || tx_data[2] == 1 || tx_data[3] == 1) || flag_zero == 1 )) {
flag_zero = 1;
if (!wirelessSPI.write( &tx_data, 4 )) { //if the write fails let the user know over serial monitor
//Serial.println("Guess delivery failed");
}
else { //if the write was successful
//Serial.print("Success sending guess: ");
if (tx_data[0] >= -10 || 10 >= tx_data[0] || tx_data[1] >= -10 || 10 >= tx_data[1] || tx_data[2] != 1 || tx_data[3] != 1)
{
flag_zero = 0;
}
}
}
delay(20); // adapt the speed of the communication
}

0
Blender/DBZ/Goku/Goku.png 100644 → 100755
View File

Before

Width:  |  Height:  |  Size: 145 KiB

After

Width:  |  Height:  |  Size: 145 KiB

0
Blender/DBZ/Goku/eyes.png 100644 → 100755
View File

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

0
Blender/DBZ/Goku/face.png 100644 → 100755
View File

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -1,8 +1,8 @@
# Blender MTL File: 'goku_armL.blend'
# Blender MTL File: 'Full_remake.blend'
# Material Count: 1
newmtl shirt.png
Ns 94.117647
newmtl shirt.png.002
Ns 92.156863
Ka 0.000000 0.000000 0.000000
Kd 0.800000 0.800000 0.800000
Ks 0.250000 0.250000 0.250000

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
# Blender MTL File: 'goku_armR.blend'
# Blender MTL File: 'Full_remake.blend'
# Material Count: 1
newmtl shirt.png
Ns 94.117647
newmtl shirt.png.003
Ns 92.156863
Ka 0.000000 0.000000 0.000000
Kd 0.800000 0.800000 0.800000
Ks 0.250000 0.250000 0.250000

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
# Blender MTL File: 'goku_body.blend'
# Blender MTL File: 'Full_remake.blend'
# Material Count: 2
newmtl face.png
Ns 94.117647
newmtl face.png.002
Ns 92.156863
Ka 0.000000 0.000000 0.000000
Kd 0.800000 0.800000 0.800000
Ks 0.250000 0.250000 0.250000
@ -12,8 +12,8 @@ d 1.000000
illum 2
map_Kd face.png
newmtl shirt.png
Ns 94.117647
newmtl shirt.png.006
Ns 92.156863
Ka 0.000000 0.000000 0.000000
Kd 0.800000 0.800000 0.800000
Ks 0.250000 0.250000 0.250000

File diff suppressed because it is too large Load Diff

View File

@ -1,796 +0,0 @@
# Blender v2.78 (sub 0) OBJ File: 'goku_but.blend'
# www.blender.org
mtllib goku_but.mtl
o Mesh.404_DrawCall_231
v 0.475495 -6.851077 5.927885
v -0.974058 -6.994266 5.969336
v -0.207846 -7.075940 5.738859
v -0.059468 -4.511393 5.219516
v -1.354284 -4.782181 5.310412
v -0.542549 -2.889269 4.745246
v -1.579777 -3.065513 4.764746
v -0.800596 -1.682663 4.363117
v -1.552796 -1.376293 4.253779
v -0.508107 -1.127298 3.959467
v -0.677767 -0.516909 3.765977
v 1.728195 -4.890497 5.560431
v 2.098316 -6.913107 6.113510
v 1.188761 -5.048457 5.299483
v 1.414638 -3.198853 5.025880
v 0.928703 -3.243254 4.785519
v 0.945782 -1.512402 4.504103
v 0.637077 -1.714396 4.350008
v 0.089218 -0.473704 3.787919
v 0.077814 -0.828726 3.746697
v 0.266019 -1.853164 4.476185
v -0.043930 -1.015683 3.940284
v 0.355578 -3.224892 4.857217
v 0.534047 -5.092503 5.363545
v 0.802175 -7.552659 6.120742
v -0.665942 -4.770462 5.067711
v -1.021117 -3.051101 4.565580
v -1.156086 -1.593628 4.137355
v -0.563330 -0.885333 3.733055
v -3.308380 -2.022602 2.087972
v -3.492086 -3.126119 2.389845
v -2.601696 -1.917898 3.266991
v -3.168515 -2.191569 0.874412
v -3.328959 -3.413897 0.995084
v -2.620748 -2.336073 -0.355519
v -2.627681 -4.100455 -0.471426
v -1.414081 -2.404872 -1.174468
v -1.389324 -4.528122 -1.271440
v -0.174890 -2.371409 -1.363810
v -0.020520 -4.628504 -1.330331
v -0.499228 -4.816451 4.570999
v 0.098619 -6.442481 4.623457
v 0.126197 -4.009347 4.452708
v 1.156566 -3.119626 4.488718
v -0.055592 -2.106488 4.147342
v 0.395704 -4.520350 4.633654
v 1.400530 -5.985281 -0.699964
v -0.222493 -2.171215 3.975572
v -0.346658 -4.142872 4.444407
v -0.067103 -4.358532 4.338860
v -0.481874 -2.122838 4.118295
v -1.589537 -3.227942 4.299101
v -1.553793 -1.990388 3.886665
v -2.777637 -2.989382 3.553890
v -0.629519 -0.857790 3.694321
v -0.307605 -0.402968 3.656911
v -1.273941 -0.429334 3.569972
v 0.071683 -0.836344 3.736451
v 0.672540 -0.371441 3.684782
v 0.718640 -0.814875 3.744971
v 1.568678 -0.299411 3.440147
v 1.553067 -0.772707 3.493965
v 2.556939 -0.207146 2.913464
v 2.593673 -0.706221 2.929502
v 3.332409 -0.076207 1.875667
v 3.416229 -0.620244 1.878649
v 3.643308 0.041751 0.526969
v 3.737131 -0.533674 0.509125
v 3.097449 0.106469 -0.523290
v 3.159023 -0.495051 -0.544392
v 1.938309 0.103580 -0.988993
v 1.993210 -0.507127 -1.041104
v 0.815532 0.079779 -1.175797
v 0.895383 -0.533877 -1.230732
v -0.260349 -0.576063 -1.176527
v -0.214785 -0.977867 -1.078466
v -1.496195 -1.029932 -0.777505
v 1.989301 -0.908518 -0.943658
v 0.914303 -0.938666 -1.123326
v 3.090381 -0.885620 -0.496972
v 3.717294 -0.896569 0.531643
v 3.401765 -0.948156 1.857662
v 2.527884 -0.980940 2.855119
v 1.565170 -1.002648 3.399217
v 0.742328 -1.021590 3.649139
v -0.362836 0.035144 -1.124733
v -1.625893 -0.641410 -0.831901
v -1.705173 -0.036372 -0.806600
v -2.680944 -0.729993 0.123489
v -2.720374 -0.147523 0.151577
v -3.010256 -0.816816 1.492513
v -3.039730 -0.265718 1.499789
v -2.702787 -0.868227 2.611261
v -2.759346 -0.365266 2.599886
v -1.955709 -0.880026 3.283155
v -2.037385 -0.406662 3.227425
v -1.262259 -0.875469 3.625961
v -2.593800 -1.095131 0.145633
v -2.917739 -1.146985 1.471137
v -2.549117 -1.140685 2.544586
v -1.878688 -1.111006 3.188574
v -1.201970 -1.082768 3.530210
v -0.240621 -1.053930 3.634494
v -0.576023 -1.063976 3.597478
v 0.102612 -1.042618 3.638991
v 2.853081 -6.387684 -0.817067
v 3.524593 -2.215441 -0.837937
v 4.258815 -2.072193 0.113274
v 4.719586 -3.810664 0.035879
v 4.296258 -3.109034 1.849905
v 1.636792 -6.294012 -0.814885
v 1.316209 -4.569225 -1.004517
v 1.556854 -4.601165 -1.183673
v 1.105581 -2.308226 -1.205743
v 1.233290 -2.314905 -1.278469
v 1.182262 -4.615935 -1.209534
v 1.280740 -6.194402 -0.898185
v 0.115364 -6.281590 -1.104070
v 4.141424 -1.911180 1.372520
v 4.081901 -5.957349 -0.670831
v 2.351356 -1.727915 3.604504
v 3.636052 -1.756237 2.561181
v 1.056519 -1.890267 4.064539
v 2.770620 -4.518417 -1.137609
v 3.693731 -2.838596 3.214322
v 1.020825 -2.323059 -1.292949
v 0.227584 -0.805898 3.515318
v -0.070606 -1.147150 3.978035
v -0.054255 -1.188841 3.431521
v -0.043541 -0.903034 4.080644
v -0.201903 -1.160494 3.972472
v -0.226954 -0.908139 4.094521
v -0.220308 -1.221120 3.969484
v -0.266237 -0.951848 4.161092
v -0.479005 -1.243878 3.954295
v -0.634355 -1.004509 4.139565
v -0.578056 -0.905165 3.468109
v -0.768481 -0.594731 4.040802
v -0.768932 -0.407617 3.770466
v -0.192356 -0.289666 3.804061
v -0.090501 -0.373252 3.530167
v -0.127254 -0.270066 3.527554
v -0.153904 -0.344757 3.756101
v 0.175753 -0.424427 3.546111
v 0.115639 -0.396125 3.790492
v 0.033661 -0.629563 3.996018
v -0.250412 -0.513280 4.071080
v -0.715823 -0.388374 3.493260
v -0.198594 -0.536828 3.981906
v -0.309309 -1.204541 3.416506
v 2.424294 -2.271708 -1.186696
v 4.028558 -4.314429 -0.897350
v 4.770242 -4.504759 -0.027220
v -1.304330 -5.795643 -1.134559
v -2.572629 -4.681137 -0.484993
v 2.610950 -2.776841 3.925970
vt 0.0273 0.7688
vt 0.0984 0.7703
vt 0.0625 0.7570
vt 0.0211 0.8313
vt 0.1055 0.8320
vt 0.0164 0.9078
vt 0.1102 0.9094
vt 0.0133 0.9625
vt 0.1141 0.9617
vt 0.0117 0.9953
vt 0.1156 0.9937
vt 0.0602 0.8305
vt 0.1102 0.9094
vt 0.1055 0.8320
vt 0.0609 0.9086
vt 0.1141 0.9617
vt 0.0617 0.9625
vt 0.1156 0.9937
vt 0.0602 0.9937
vt 0.0133 0.9625
vt 0.0117 0.9953
vt 0.0164 0.9078
vt 0.0211 0.8313
vt 0.0273 0.7688
vt 0.0602 0.8305
vt 0.0609 0.9086
vt 0.0617 0.9625
vt 0.0602 0.9937
vt 0.0984 0.7703
vt 0.4668 0.9043
vt 0.4707 0.8496
vt 0.3769 0.9004
vt 0.5488 0.9082
vt 0.5488 0.8496
vt 0.6504 0.9082
vt 0.6504 0.8418
vt 0.7402 0.9082
vt 0.7402 0.8184
vt 0.8301 0.9082
vt 0.8301 0.8027
vt 0.2012 0.7949
vt 0.2871 0.8193
vt 0.2012 0.8691
vt 0.2168 0.7559
vt 0.1816 0.8691
vt 0.2012 0.7949
vt 0.1816 0.7949
vt 0.2012 0.8691
vt 0.2876 0.8193
vt 0.2832 0.8887
vt 0.3789 0.8384
vt 0.0781 0.0045
vt 0.0092 0.0162
vt 0.0088 0.0767
vt 0.0781 0.0278
vt 0.0088 0.0767
vt 0.0781 0.0767
vt 0.0095 0.1275
vt 0.0742 0.1275
vt 0.0091 0.1729
vt 0.0703 0.1729
vt 0.0085 0.2250
vt 0.0703 0.2250
vt 0.0085 0.2794
vt 0.0703 0.2794
vt 0.0085 0.3397
vt 0.0703 0.3397
vt 0.0085 0.3978
vt 0.0703 0.3978
vt 0.0090 0.4788
vt 0.0703 0.4788
vt 0.0703 0.3978
vt 0.1261 0.3978
vt 0.1261 0.3397
vt 0.0703 0.4795
vt 0.1260 0.3984
vt 0.1260 0.4795
vt 0.0703 0.3984
vt 0.1260 0.3398
vt 0.0703 0.3398
vt 0.1260 0.2803
vt 0.0703 0.2803
vt 0.1260 0.2256
vt 0.0703 0.2256
vt 0.1250 0.1738
vt 0.0703 0.1738
vt 0.1250 0.1279
vt 0.0742 0.1279
vt 0.1250 0.0772
vt 0.0781 0.0772
vt 0.0781 0.0283
vt 0.0085 0.3978
vt 0.0703 0.3397
vt 0.0085 0.3397
vt 0.0703 0.2794
vt 0.0085 0.2794
vt 0.0703 0.2250
vt 0.0085 0.2250
vt 0.0703 0.1729
vt 0.0091 0.1729
vt 0.0742 0.1275
vt 0.0095 0.1275
vt 0.0781 0.0767
vt 0.0781 0.0278
vt 0.1260 0.3398
vt 0.0703 0.3398
vt 0.0703 0.3979
vt 0.1260 0.2798
vt 0.0703 0.2798
vt 0.1260 0.2251
vt 0.0703 0.2251
vt 0.1255 0.1738
vt 0.0703 0.1733
vt 0.1255 0.1279
vt 0.0742 0.1279
vt 0.1255 0.0772
vt 0.1260 0.4790
vt 0.1260 0.3979
vt 0.0703 0.4790
vt 0.0781 0.0049
vt 0.1255 0.0161
vt 0.1255 0.0049
vt 0.1255 0.0278
vt 0.1255 0.0772
vt 0.1255 0.0278
vt 0.7402 0.9668
vt 0.7402 0.9082
vt 0.8340 0.9668
vt 0.6504 0.9082
vt 0.6504 0.8418
vt 0.5488 0.8496
vt 0.9277 0.8027
vt 0.9121 0.7480
vt 0.9277 0.7480
vt 0.9121 0.8027
vt 0.9277 0.9082
vt 0.9121 0.9082
vt 0.9121 0.8027
vt 0.9121 0.7480
vt 0.8301 0.7480
vt 0.1816 0.6777
vt 0.1816 0.9668
vt 0.2363 0.9668
vt 0.3789 0.8384
vt 0.5996 0.9668
vt 0.4902 0.9668
vt 0.5488 0.9082
vt 0.4121 0.9668
vt 0.3301 0.9668
vt 0.3769 0.9004
vt 0.4668 0.9043
vt 0.2754 0.9668
vt 0.2363 0.9668
vt 0.2832 0.8887
vt 0.8301 0.7480
vt 0.8301 0.8027
vt 0.7402 0.7715
vt 0.4707 0.8496
vt 0.8340 0.9668
vt 0.9277 0.9668
vt 0.9121 0.9082
vt 0.1348 0.6621
vt 0.1123 0.6060
vt 0.1035 0.6035
vt 0.1196 0.6299
vt 0.1035 0.6035
vt 0.1025 0.6313
vt 0.0864 0.5913
vt 0.0791 0.6289
vt 0.0449 0.5894
vt 0.0547 0.6270
vt 0.0288 0.6631
vt 0.0439 0.6611
vt 0.0337 0.6714
vt 0.0947 0.6841
vt 0.1025 0.6699
vt 0.0923 0.6773
vt 0.1035 0.6743
vt 0.1265 0.6685
vt 0.1269 0.6733
vt 0.1206 0.6533
vt 0.0833 0.6685
vt 0.0442 0.6611
vt 0.0923 0.6773
vt 0.0339 0.6714
vt 0.0947 0.6838
vt 0.0286 0.6775
vt 0.0830 0.6685
vt 0.1011 0.6602
vt 0.0684 0.6001
vt 0.1074 0.6001
vt 0.1074 0.6001
vt 0.0283 0.6777
vt 0.8301 0.9082
vt 0.7402 0.8184
vt 0.6504 0.8105
vt 0.2754 0.9668
vt 0.3301 0.9668
vt 0.4121 0.9668
vt 0.4902 0.9668
vt 0.5996 0.9668
vt 0.7402 0.9668
vt 0.7402 0.7715
vt 0.6504 0.8105
vt 0.2876 0.8191
vt 0.2168 0.7559
vt 0.2876 0.8191
vn 0.9161 -0.3170 0.2454
vn -0.7765 -0.5483 0.3103
vn 0.1047 -0.9123 -0.3960
vn 0.9650 0.2446 0.0946
vn -0.9731 -0.1090 0.2031
vn 0.9454 0.2834 0.1610
vn -0.9874 -0.0340 0.1542
vn 0.9330 0.1309 0.3352
vn -0.8902 0.4491 0.0761
vn 0.7866 -0.5641 0.2511
vn -0.7468 0.6097 -0.2655
vn 0.1219 -0.2632 -0.9570
vn 0.9274 0.2954 0.2293
vn 0.0732 0.2648 0.9615
vn 0.1777 -0.2328 -0.9561
vn 0.8106 0.5434 0.2182
vn 0.2598 -0.2969 -0.9189
vn 0.7494 0.6034 0.2727
vn 0.5742 -0.1606 -0.8028
vn -0.9760 -0.1551 0.1528
vn -0.9177 -0.2963 0.2647
vn -0.9965 -0.0831 0.0098
vn -0.9826 -0.1849 -0.0138
vn -0.1828 0.2709 0.9451
vn 0.0062 -0.2785 -0.9604
vn 0.0301 -0.2700 -0.9624
vn -0.0896 -0.3493 -0.9327
vn -0.2590 -0.2678 -0.9280
vn -0.1497 0.2639 0.9528
vn -0.9319 0.3237 0.1638
vn -0.9460 -0.2186 0.2394
vn -0.6518 0.3983 0.6453
vn -0.9434 0.1903 -0.2716
vn -0.9311 -0.3258 -0.1640
vn -0.7492 0.1426 -0.6467
vn -0.8591 -0.1747 -0.4810
vn -0.3596 0.1292 -0.9241
vn -0.3128 -0.0521 -0.9484
vn -0.0403 0.1017 -0.9940
vn 0.0263 -0.0748 -0.9968
vn -0.4323 0.1310 0.8921
vn 0.1582 0.1225 0.9798
vn -0.4025 0.2490 0.8809
vn -0.0660 0.0340 0.9972
vn -0.1391 0.2088 0.9680
vn 0.2502 0.1738 0.9525
vn -0.0812 0.1360 0.9874
vn 0.1759 0.2933 0.9397
vn -0.3452 0.0598 0.9366
vn -0.3148 0.3779 0.8707
vn -0.7243 -0.0864 0.6840
vn -0.0858 -0.1528 0.9845
vn -0.0635 0.1397 0.9881
vn -0.2008 0.6745 0.7104
vn -0.0240 -0.1427 0.9894
vn 0.0544 0.6937 0.7182
vn 0.1344 -0.1365 0.9815
vn 0.2347 0.6938 0.6808
vn 0.3767 -0.1265 0.9177
vn 0.4449 0.6703 0.5939
vn 0.6511 -0.1306 0.7476
vn 0.6072 0.7093 0.3581
vn 0.8959 0.0264 0.4434
vn 0.7013 0.7117 -0.0407
vn 0.9898 0.0454 -0.1352
vn 0.4785 0.7056 -0.5225
vn 0.6695 -0.0421 -0.7416
vn 0.1734 0.7514 -0.6366
vn 0.2801 -0.0578 -0.9582
vn 0.0141 0.7481 -0.6634
vn 0.0669 -0.0758 -0.9949
vn -0.1352 -0.0912 -0.9866
vn -0.1137 -0.0298 -0.9930
vn -0.4316 -0.0021 -0.9021
vn 0.2473 -0.0021 -0.9689
vn 0.0623 -0.0641 -0.9960
vn 0.6196 0.1090 -0.7773
vn 0.9615 0.2405 -0.1325
vn 0.8628 0.2745 0.4245
vn 0.6311 0.1558 0.7598
vn 0.3725 0.1118 0.9212
vn 0.1358 0.0312 0.9902
vn -0.1373 0.7334 -0.6657
vn -0.4566 -0.1366 -0.8791
vn -0.3979 0.6671 -0.6297
vn -0.8498 -0.1332 -0.5100
vn -0.6943 0.6380 -0.3328
vn -0.9846 -0.1731 0.0252
vn -0.7815 0.6211 0.0590
vn -0.8179 -0.2970 0.4928
vn -0.6873 0.5827 0.4336
vn -0.5362 -0.2368 0.8101
vn -0.4210 0.6447 0.6380
vn -0.2683 -0.1857 0.9452
vn -0.8486 0.0285 -0.5282
vn -0.9962 0.0869 0.0003
vn -0.8540 0.0252 0.5197
vn -0.5567 0.0233 0.8304
vn -0.2632 -0.0166 0.9646
vn -0.0613 0.0127 0.9980
vn -0.1128 -0.0108 0.9935
vn -0.0128 0.0021 0.9999
vn 0.5323 0.2496 -0.8089
vn 0.8967 0.3361 -0.2880
vn 0.9868 -0.0342 -0.1581
vn 0.9194 -0.1041 0.3791
vn 0.1713 -0.1273 -0.9769
vn -0.3731 -0.6956 -0.6139
vn 0.1020 -0.6857 -0.7206
vn -0.2874 -0.1433 -0.9470
vn 0.1290 0.0154 -0.9915
vn -0.2043 0.0134 -0.9788
vn 0.5183 -0.0589 -0.8532
vn 0.5652 -0.6543 -0.5024
vn -0.0447 -0.7643 -0.6433
vn -0.0779 -0.7083 0.7015
vn 0.4602 0.1130 0.8806
vn 0.9224 0.3386 0.1857
vn 0.4049 0.4664 0.7865
vn 0.7439 0.4522 0.4919
vn 0.1357 0.4012 0.9059
vn 0.1751 -0.7953 -0.5803
vn 0.1223 -0.0837 -0.9890
vn 0.6684 -0.6293 -0.3965
vn 0.7685 -0.0051 0.6398
vn 0.3967 0.0817 -0.9143
vn 0.9310 -0.2445 0.2710
vn 0.4557 -0.7089 0.5382
vn 0.4719 -0.8810 0.0328
vn 0.5004 -0.1226 0.8571
vn 0.5864 -0.5213 0.6199
vn 0.5950 -0.0355 0.8029
vn 0.4752 -0.7534 0.4543
vn 0.4250 -0.1558 0.8917
vn -0.4144 -0.8706 0.2651
vn -0.6290 -0.3693 0.6840
vn -0.8780 -0.4336 -0.2029
vn -0.7886 0.2392 0.5665
vn -0.8210 0.5564 0.1275
vn 0.3926 0.8303 0.3955
vn 0.5811 0.8107 0.0713
vn 0.5124 0.8393 0.1815
vn 0.6495 0.6825 0.3351
vn 0.7852 0.6071 0.1220
vn 0.6215 0.6731 0.4006
vn 0.5845 0.2389 0.7754
vn 0.3905 0.4547 0.8005
vn -0.8162 0.5657 -0.1171
vn 0.5946 0.3897 0.7033
vn -0.2991 -0.9412 -0.1570
vn 0.1773 0.1276 -0.9758
vn 0.5179 0.0168 -0.8553
vn 0.9443 -0.3258 -0.0456
vn -0.4507 -0.6381 -0.6242
vn -0.9122 -0.3293 -0.2437
vn -0.2213 -0.0496 0.9739
usemtl pants.png
s 1
f 1/1/1 2/2/2 3/3/3
f 4/4/4 2/2/2 1/1/1
f 4/4/4 5/5/5 2/2/2
f 6/6/6 5/5/5 4/4/4
f 6/6/6 7/7/7 5/5/5
f 8/8/8 7/7/7 6/6/6
f 8/8/8 9/9/9 7/7/7
f 10/10/10 9/9/9 8/8/8
f 10/10/10 11/11/11 9/9/9
f 14/12/12 15/13/13 12/14/14
f 16/15/15 15/13/13 14/12/12
f 16/15/15 17/16/16 15/13/13
f 18/17/17 17/16/16 16/15/15
f 18/17/17 19/18/18 17/16/16
f 20/19/19 19/18/18 18/17/17
f 20/19/19 21/20/20 22/21/21
f 18/17/17 21/20/20 20/19/19
f 18/17/17 23/22/22 21/20/20
f 16/15/15 23/22/22 18/17/17
f 16/15/15 24/23/23 23/22/22
f 14/12/12 24/23/23 16/15/15
f 14/12/12 25/24/24 24/23/23
f 2/2/2 26/25/25 3/3/3
f 5/5/5 26/25/25 2/2/2
f 5/5/5 27/26/26 26/25/25
f 7/7/7 27/26/26 5/5/5
f 7/7/7 28/27/27 27/26/26
f 9/9/9 28/27/27 7/7/7
f 9/9/9 29/28/28 28/27/27
f 11/11/11 29/28/28 9/9/9
f 13/29/29 24/23/23 25/24/24
f 12/14/14 24/23/23 13/29/29
f 12/14/14 23/22/22 24/23/23
f 15/13/13 23/22/22 12/14/14
f 15/13/13 21/20/20 23/22/22
f 17/16/16 21/20/20 15/13/13
f 17/16/16 22/21/21 21/20/20
f 19/18/18 22/21/21 17/16/16
f 8/8/8 28/27/27 29/28/28
f 6/6/6 28/27/27 8/8/8
f 6/6/6 27/26/26 28/27/27
f 4/4/4 27/26/26 6/6/6
f 4/4/4 26/25/25 27/26/26
f 1/1/1 26/25/25 4/4/4
f 1/1/1 3/3/3 26/25/25
f 10/10/10 8/8/8 29/28/28
f 30/30/30 31/31/31 32/32/32
f 33/33/33 31/31/31 30/30/30
f 33/33/33 34/34/34 31/31/31
f 35/35/35 34/34/34 33/33/33
f 35/35/35 36/36/36 34/34/34
f 37/37/37 36/36/36 35/35/35
f 37/37/37 38/38/38 36/36/36
f 39/39/39 38/38/38 37/37/37
f 39/39/39 40/40/40 38/38/38
f 43/41/41 44/42/42 45/43/43
f 46/44/44 44/42/42 43/41/41
f 48/45/45 49/46/46 50/47/47
f 51/48/48 49/46/46 48/45/45
f 51/48/48 52/49/49 49/46/46
f 53/50/50 52/49/49 51/48/48
f 53/50/50 54/51/51 52/49/49
f 32/32/32 54/51/51 53/50/50
f 32/32/32 31/31/31 54/51/51
f 55/52/52 56/53/53 57/54/54
f 58/55/55 56/53/53 55/52/52
f 58/55/55 59/56/56 56/53/53
f 60/57/57 59/56/56 58/55/55
f 60/57/57 61/58/58 59/56/56
f 62/59/59 61/58/58 60/57/57
f 62/59/59 63/60/60 61/58/58
f 64/61/61 63/60/60 62/59/59
f 64/61/61 65/62/62 63/60/60
f 66/63/63 65/62/62 64/61/61
f 66/63/63 67/64/64 65/62/62
f 68/65/65 67/64/64 66/63/63
f 68/65/65 69/66/66 67/64/64
f 70/67/67 69/66/66 68/65/65
f 70/67/67 71/68/68 69/66/66
f 72/69/69 71/68/68 70/67/67
f 72/69/69 73/70/70 71/68/68
f 74/71/71 73/70/70 72/69/69
f 74/71/71 75/72/72 73/70/70
f 76/73/73 75/72/72 74/71/71
f 76/73/73 77/74/74 75/72/72
f 74/75/71 78/76/75 79/77/76
f 72/78/69 78/76/75 74/75/71
f 72/78/69 80/79/77 78/76/75
f 70/80/67 80/79/77 72/78/69
f 70/80/67 81/81/78 80/79/77
f 68/82/65 81/81/78 70/80/67
f 68/82/65 82/83/79 81/81/78
f 66/84/63 82/83/79 68/82/65
f 66/84/63 83/85/80 82/83/79
f 64/86/61 83/85/80 66/84/63
f 64/86/61 84/87/81 83/85/80
f 62/88/59 84/87/81 64/86/61
f 62/88/59 85/89/82 84/87/81
f 60/90/57 85/89/82 62/88/59
f 60/90/57 58/91/55 85/89/82
f 75/72/72 86/92/83 73/70/70
f 87/93/84 86/92/83 75/72/72
f 87/93/84 88/94/85 86/92/83
f 89/95/86 88/94/85 87/93/84
f 89/95/86 90/96/87 88/94/85
f 91/97/88 90/96/87 89/95/86
f 91/97/88 92/98/89 90/96/87
f 93/99/90 92/98/89 91/97/88
f 93/99/90 94/100/91 92/98/89
f 95/101/92 94/100/91 93/99/90
f 95/101/92 96/102/93 94/100/91
f 97/103/94 96/102/93 95/101/92
f 97/103/94 57/54/54 96/102/93
f 55/104/52 57/54/54 97/103/94
f 77/105/74 87/106/84 75/107/72
f 98/108/95 87/106/84 77/105/74
f 98/108/95 89/109/86 87/106/84
f 99/110/96 89/109/86 98/108/95
f 99/110/96 91/111/88 89/109/86
f 100/112/97 91/111/88 99/110/96
f 100/112/97 93/113/90 91/111/88
f 101/114/98 93/113/90 100/112/97
f 101/114/98 95/115/92 93/113/90
f 102/116/99 95/115/92 101/114/98
f 102/116/99 97/103/94 95/115/92
f 55/104/52 97/103/94 102/116/99
f 79/117/76 76/118/73 74/119/71
f 55/120/52 103/121/100 58/55/55
f 104/122/101 103/121/100 55/120/52
f 105/123/102 85/124/82 58/55/55
f 105/123/102 58/55/55 103/121/100
f 104/125/101 55/104/52 102/116/99
f 80/126/77 107/127/103 78/128/75
f 108/129/104 107/127/103 80/126/77
f 108/129/104 109/130/105 107/127/103
f 110/131/106 109/130/105 108/129/104
f 112/132/107 111/133/108 47/134/109
f 112/132/107 113/135/110 111/133/108
f 114/136/111 113/135/110 112/132/107
f 114/136/111 115/137/112 113/135/110
f 112/132/107 116/138/113 114/136/111
f 117/139/114 116/138/113 112/132/107
f 117/139/114 118/140/115 116/138/113
f 43/41/41 42/141/116 46/44/44
f 51/48/48 48/45/45 103/142/100
f 104/143/101 51/48/48 103/142/100
f 51/48/48 104/143/101 53/50/50
f 156/144/117 46/44/44 42/141/116
f 81/145/78 82/146/79 119/147/118
f 47/134/109 42/141/116 117/139/114
f 119/147/118 110/131/106 108/129/104
f 83/148/80 84/149/81 121/150/119
f 121/150/119 122/151/120 83/148/80
f 85/152/82 105/153/102 123/154/121
f 81/145/78 108/129/104 80/126/77
f 108/129/104 81/145/78 119/147/118
f 106/155/122 124/156/123 120/157/124
f 122/151/120 121/150/119 125/158/125
f 76/159/73 79/160/76 126/161/126
f 127/162/127 128/163/128 129/164/129
f 130/165/130 128/163/128 127/162/127
f 130/165/130 131/166/131 128/163/128
f 132/167/132 131/166/131 130/165/130
f 132/167/132 133/168/133 131/166/131
f 134/169/134 133/168/133 132/167/132
f 134/169/134 135/170/135 133/168/133
f 136/171/136 135/170/135 134/169/134
f 136/171/136 137/172/137 135/170/135
f 138/173/138 137/172/137 136/171/136
f 138/173/138 139/174/139 137/172/137
f 140/175/140 141/176/141 142/177/142
f 143/178/143 141/176/141 140/175/140
f 143/178/143 144/179/144 141/176/141
f 145/180/145 144/179/144 143/178/143
f 145/180/145 127/162/127 144/179/144
f 146/181/146 127/162/127 145/180/145
f 146/181/146 130/165/130 127/162/127
f 132/167/132 130/165/130 146/181/146
f 147/182/147 138/183/138 136/171/136
f 140/184/140 138/183/138 147/182/147
f 140/184/140 139/185/139 138/183/138
f 142/186/142 139/185/139 140/184/140
f 142/186/142 148/187/148 139/185/139
f 147/188/147 143/178/143 140/184/140
f 149/189/149 143/178/143 147/188/147
f 149/189/149 145/180/145 143/178/143
f 146/181/146 145/180/145 149/189/149
f 150/190/150 129/164/129 133/168/133
f 131/166/131 129/191/129 128/163/128
f 135/170/135 150/190/150 133/168/133
f 131/192/131 133/168/133 129/164/129
f 148/193/148 137/172/137 139/174/139
f 132/167/132 149/189/149 134/169/134
f 134/169/134 147/188/147 136/171/136
f 149/189/149 132/167/132 146/181/146
f 147/188/147 134/169/134 149/189/149
f 150/190/150 135/170/135 137/172/137
f 151/194/151 124/156/123 115/137/112
f 152/195/152 124/156/123 151/194/151
f 152/195/152 120/157/124 124/156/123
f 153/196/153 120/157/124 152/195/152
f 119/147/118 125/158/125 110/131/106
f 119/147/118 122/151/120 125/158/125
f 82/146/79 122/151/120 119/147/118
f 82/146/79 83/148/80 122/151/120
f 102/197/99 53/50/50 104/143/101
f 101/198/98 53/50/50 102/197/99
f 101/198/98 32/32/32 53/50/50
f 100/199/97 32/32/32 101/198/98
f 100/199/97 30/30/30 32/32/32
f 99/200/96 30/30/30 100/199/97
f 99/200/96 33/33/33 30/30/30
f 98/201/95 33/33/33 99/200/96
f 98/201/95 35/35/35 33/33/33
f 77/202/74 35/35/35 98/201/95
f 77/202/74 37/37/37 35/35/35
f 76/159/73 37/37/37 77/202/74
f 76/159/73 39/39/39 37/37/37
f 126/161/126 39/39/39 76/159/73
f 126/161/126 40/40/40 39/39/39
f 152/195/152 109/130/105 153/196/153
f 152/195/152 107/127/103 109/130/105
f 151/194/151 107/127/103 152/195/152
f 151/194/151 78/128/75 107/127/103
f 115/137/112 78/128/75 151/194/151
f 115/137/112 79/160/76 78/128/75
f 114/136/111 79/160/76 115/137/112
f 114/136/111 126/161/126 79/160/76
f 116/138/113 126/161/126 114/136/111
f 116/138/113 40/40/40 126/161/126
f 118/140/115 40/40/40 116/138/113
f 118/140/115 154/203/154 40/40/40
f 155/204/155 154/203/154 42/141/116
f 42/141/116 154/203/154 118/140/115
f 121/150/119 156/144/117 125/158/125
f 121/150/119 123/154/121 156/144/117
f 84/149/81 123/154/121 121/150/119
f 84/149/81 85/152/82 123/154/121
f 112/132/107 47/134/109 117/139/114
f 123/154/121 44/205/42 156/144/117
f 123/154/121 45/43/43 44/205/42
f 105/153/102 45/43/43 123/154/121
f 105/153/102 103/142/100 45/43/43
f 124/156/123 113/135/110 115/137/112
f 106/155/122 113/135/110 124/156/123
f 106/155/122 111/133/108 113/135/110
f 154/203/154 38/38/38 40/40/40
f 155/204/155 38/38/38 154/203/154
f 155/204/155 36/36/36 38/38/38
f 41/206/156 49/46/46 52/207/49
f 42/141/116 49/46/46 41/206/156
f 42/141/116 50/47/47 49/46/46
f 43/41/41 50/47/47 42/141/116
f 43/41/41 48/45/45 50/47/47
f 45/43/43 48/45/45 43/41/41
f 45/43/43 103/142/100 48/45/45
f 73/70/70 86/92/83 88/94/85 90/96/87 92/98/89 94/100/91 96/102/93 57/54/54 59/56/56 61/58/58 63/60/60 65/62/62 67/64/64 69/66/66 71/68/68
f 156/144/117 44/42/42 46/44/44
f 52/49/49 54/51/51 41/206/156
f 54/51/51 31/31/31 41/206/156
f 41/206/156 31/31/31 42/141/116
f 31/31/31 34/34/34 42/141/116
f 36/36/36 42/141/116 34/34/34
f 155/204/155 42/141/116 36/36/36
f 42/141/116 118/140/115 117/139/114
f 47/134/109 111/133/108 42/141/116
f 111/133/108 106/155/122 42/141/116
f 120/157/124 42/141/116 106/155/122
f 153/196/153 42/141/116 120/157/124
f 153/196/153 109/130/105 110/131/106 125/158/125 42/141/116
f 156/144/117 42/141/116 125/158/125

View File

@ -1,8 +1,8 @@
# Blender MTL File: 'goku_but.blend'
# Blender MTL File: 'Full_remake.blend'
# Material Count: 1
newmtl pants.png
Ns 94.117647
Ns 92.156863
Ka 0.000000 0.000000 0.000000
Kd 0.800000 0.800000 0.800000
Ks 0.250000 0.250000 0.250000

View File

@ -0,0 +1,768 @@
# Blender v2.78 (sub 0) OBJ File: 'Full_remake.blend'
# www.blender.org
mtllib goku_butt.mtl
o Mesh.404_DrawCall_231.001
v 1.616103 17.341854 4.480275
v 0.188419 17.247728 4.756474
v 0.902027 17.150394 4.398479
v 1.071702 19.730114 3.968482
v -0.200778 19.500820 4.262344
v 0.586488 21.389040 3.648927
v -0.439901 21.248520 3.833491
v 0.320544 22.620878 3.365453
v -0.425680 22.958309 3.395656
v 0.565887 23.184364 2.942127
v 0.392772 23.808897 2.805059
v 2.628906 16.839628 4.294509
v 2.873350 19.272690 3.991040
v 3.243209 17.214165 4.390433
v 2.292082 19.146423 3.817207
v 2.548214 20.997963 3.586757
v 2.027883 20.982191 3.429010
v 2.071926 22.722879 3.220697
v 1.733754 22.539450 3.111899
v 1.154029 23.824097 2.700791
v 1.120912 23.472078 2.647358
v 1.382990 22.407881 3.292220
v 1.024882 23.280434 2.850587
v 1.475702 21.017168 3.595812
v 1.655590 19.122326 3.987480
v 1.939966 16.620815 4.586800
v 0.438052 19.500032 3.909142
v 0.078423 21.252878 3.544878
v -0.063167 22.733036 3.205906
v 0.484459 23.438690 2.738298
v -2.539894 22.478489 1.527400
v -2.718103 21.368885 1.809618
v -1.644854 22.501722 2.575643
v -2.609145 22.363094 0.301541
v -2.799328 21.142761 0.396445
v -2.278096 22.258610 -1.007332
v -2.379014 20.503141 -1.193532
v -1.226837 22.186907 -2.017861
v -1.308661 20.071186 -2.205563
v -0.035475 22.185963 -2.409292
v 0.026224 19.925837 -2.495602
v 1.149692 20.261526 3.202955
v 2.208791 21.111845 3.103804
v 1.001133 22.182037 3.011284
v 0.805619 22.131508 2.867160
v 0.676687 20.145206 3.267953
v 0.925615 19.925190 3.108492
v 0.575585 22.182049 3.052952
v -0.533122 21.109041 3.369638
v -0.513235 22.362934 3.008684
v -1.816515 21.424541 2.843145
v 0.414026 23.470362 2.712298
v 0.744416 23.914894 2.640716
v -0.223276 23.926605 2.714834
v 1.112859 23.465179 2.637968
v 1.716207 23.910683 2.506320
v 1.752701 23.463530 2.539555
v 2.562049 23.962908 2.119124
v 2.535412 23.488415 2.155116
v 3.453072 24.045626 1.439564
v 3.470700 23.545376 1.428554
v 4.051860 24.198910 0.293493
v 4.111827 23.652754 0.259917
v 4.141086 24.370419 -1.082073
v 4.206143 23.793577 -1.139133
v 3.432938 24.504501 -2.023211
v 3.464571 23.902895 -2.079194
v 2.213860 24.564562 -2.289173
v 2.233420 23.955507 -2.374976
v 1.075668 24.589104 -2.287292
v 1.119223 23.976366 -2.380152
v -0.012529 23.972157 -2.136110
v 0.031445 23.564764 -2.063749
v -1.183927 23.543268 -1.556099
v 2.228558 23.550289 -2.294968
v 1.138353 23.566479 -2.294273
v 3.388140 23.513149 -2.037247
v 4.174881 23.430939 -1.128694
v 4.080179 23.326933 0.228052
v 3.381941 23.277012 1.354833
v 2.521959 23.262997 2.050224
v 1.751473 23.260941 2.432629
v -0.079011 24.583393 -2.042677
v -1.304180 23.938257 -1.571987
v -1.352421 24.543793 -1.508775
v -2.190249 23.841003 -0.458805
v -2.199720 24.422482 -0.400416
v -2.292947 23.700245 0.941142
v -2.297368 24.251053 0.976070
v -1.807868 23.584517 1.989989
v -1.844096 24.089121 2.009056
v -0.961507 23.514351 2.527071
v -1.031052 23.992413 2.505393
v -0.221504 23.478165 2.749548
v -2.116246 23.472395 -0.466636
v -2.219334 23.368441 0.890990
v -1.679001 23.310352 1.887424
v -0.911005 23.285612 2.411492
v -0.186677 23.273708 2.636585
v 0.779063 23.263807 2.580487
v 0.442026 23.267307 2.599436
v 1.118516 23.262856 2.528251
v 3.703337 22.186802 -2.500582
v 4.589627 22.258469 -1.679756
v 4.957042 20.510628 -1.904795
v 5.024763 21.150759 -0.362123
v 1.399657 19.922546 -2.394680
v 1.635674 18.402954 -2.380980
v 1.472725 18.491434 -2.167398
v 1.605927 19.890820 -2.612563
v 1.255055 22.196583 -2.464102
v 1.368639 22.188927 -2.557286
v 1.231906 19.890442 -2.576297
v 1.313143 18.296383 -2.351412
v 0.127134 18.260059 -2.363865
v 4.688212 22.362944 -0.412959
v 3.299674 22.501617 2.091519
v 4.392587 22.478340 0.848632
v 2.092585 22.362873 2.753547
v 2.750013 18.736845 -2.691362
v 2.813106 19.928679 -2.765799
v 4.003302 19.116348 -2.734004
v 4.667258 21.376427 1.093580
v 1.156540 22.188927 -2.536521
v 1.231356 23.500708 2.395423
v 0.999226 23.148327 2.886768
v 0.923545 23.132334 2.343906
v 1.053172 23.386143 2.993472
v 0.868359 23.139874 2.902590
v 0.874503 23.386810 3.037464
v 0.847152 23.080141 2.900197
v 0.844900 23.341362 3.107776
v 0.588758 23.067217 2.927354
v 0.476364 23.302727 3.145663
v 0.425463 23.432112 2.478909
v 0.345340 23.721218 3.087684
v 0.308320 23.920977 2.829189
v 0.887040 24.016903 2.771198
v 0.938742 23.943024 2.480943
v 0.906481 24.047441 2.488766
v 0.914690 23.962860 2.715264
v 1.201567 23.881845 2.450207
v 1.183786 23.900490 2.702145
v 1.126935 23.660482 2.908590
v 0.864308 23.782919 3.034650
v 0.315813 23.951612 2.548050
v 0.899682 23.761871 2.937196
v 0.669069 23.126320 2.370919
v 2.559237 22.185911 -2.663343
v 4.100954 20.076706 -2.730047
v 4.967063 19.819008 -2.004174
v -1.256234 18.796360 -2.137421
v 3.563852 21.430037 2.321510
v -2.351681 19.922205 -1.240142
vt 0.0273 0.7688
vt 0.0984 0.7703
vt 0.0625 0.7570
vt 0.0211 0.8313
vt 0.1055 0.8320
vt 0.0164 0.9078
vt 0.1102 0.9094
vt 0.0133 0.9625
vt 0.1141 0.9617
vt 0.0117 0.9953
vt 0.1156 0.9937
vt 0.0625 0.7570
vt 0.1055 0.8320
vt 0.0984 0.7703
vt 0.0602 0.8305
vt 0.1102 0.9094
vt 0.0609 0.9086
vt 0.1141 0.9617
vt 0.0617 0.9625
vt 0.1156 0.9937
vt 0.0602 0.9937
vt 0.0133 0.9625
vt 0.0117 0.9953
vt 0.0164 0.9078
vt 0.0211 0.8313
vt 0.0273 0.7688
vt 0.0602 0.8305
vt 0.0609 0.9086
vt 0.0617 0.9625
vt 0.0602 0.9937
vt 0.4668 0.9043
vt 0.4707 0.8496
vt 0.3769 0.9004
vt 0.5488 0.9082
vt 0.5488 0.8496
vt 0.6504 0.9082
vt 0.6504 0.8418
vt 0.7402 0.9082
vt 0.7402 0.8184
vt 0.8301 0.9082
vt 0.8301 0.8027
vt 0.2012 0.7949
vt 0.2871 0.8193
vt 0.2012 0.8691
vt 0.1816 0.8691
vt 0.2012 0.7949
vt 0.1816 0.7949
vt 0.2012 0.8691
vt 0.2876 0.8193
vt 0.2832 0.8887
vt 0.3789 0.8384
vt 0.0781 0.0045
vt 0.0092 0.0162
vt 0.0088 0.0767
vt 0.0781 0.0278
vt 0.0088 0.0767
vt 0.0781 0.0767
vt 0.0095 0.1275
vt 0.0742 0.1275
vt 0.0091 0.1729
vt 0.0703 0.1729
vt 0.0085 0.2250
vt 0.0703 0.2250
vt 0.0085 0.2794
vt 0.0703 0.2794
vt 0.0085 0.3397
vt 0.0703 0.3397
vt 0.0085 0.3978
vt 0.0703 0.3978
vt 0.0090 0.4788
vt 0.0703 0.4788
vt 0.0703 0.3978
vt 0.1261 0.3978
vt 0.1261 0.3397
vt 0.0703 0.4795
vt 0.1260 0.3984
vt 0.1260 0.4795
vt 0.0703 0.3984
vt 0.1260 0.3398
vt 0.0703 0.3398
vt 0.1260 0.2803
vt 0.0703 0.2803
vt 0.1260 0.2256
vt 0.0703 0.2256
vt 0.1250 0.1738
vt 0.0703 0.1738
vt 0.1250 0.1279
vt 0.0742 0.1279
vt 0.1250 0.0772
vt 0.0781 0.0772
vt 0.0781 0.0283
vt 0.0085 0.3978
vt 0.0703 0.3397
vt 0.0085 0.3397
vt 0.0703 0.2794
vt 0.0085 0.2794
vt 0.0703 0.2250
vt 0.0085 0.2250
vt 0.0703 0.1729
vt 0.0091 0.1729
vt 0.0742 0.1275
vt 0.0095 0.1275
vt 0.0781 0.0767
vt 0.0781 0.0278
vt 0.1260 0.3398
vt 0.0703 0.3398
vt 0.0703 0.3979
vt 0.1260 0.2798
vt 0.0703 0.2798
vt 0.1260 0.2251
vt 0.0703 0.2251
vt 0.1255 0.1738
vt 0.0703 0.1733
vt 0.1255 0.1279
vt 0.0742 0.1279
vt 0.1255 0.0772
vt 0.1260 0.4790
vt 0.1260 0.3979
vt 0.0703 0.4790
vt 0.0781 0.0049
vt 0.1255 0.0161
vt 0.1255 0.0049
vt 0.1255 0.0278
vt 0.1255 0.0772
vt 0.1255 0.0278
vt 0.7402 0.9668
vt 0.7402 0.9082
vt 0.8340 0.9668
vt 0.6504 0.9082
vt 0.6504 0.8418
vt 0.5488 0.8496
vt 0.9277 0.8027
vt 0.9121 0.7480
vt 0.9277 0.7480
vt 0.9121 0.8027
vt 0.9277 0.9082
vt 0.9121 0.9082
vt 0.9121 0.8027
vt 0.9121 0.7480
vt 0.8301 0.7480
vt 0.1816 0.9668
vt 0.2363 0.9668
vt 0.5996 0.9668
vt 0.4902 0.9668
vt 0.5488 0.9082
vt 0.4121 0.9668
vt 0.3301 0.9668
vt 0.3769 0.9004
vt 0.4668 0.9043
vt 0.2754 0.9668
vt 0.2363 0.9668
vt 0.2832 0.8887
vt 0.8301 0.7480
vt 0.8301 0.8027
vt 0.7402 0.7715
vt 0.4707 0.8496
vt 0.8340 0.9668
vt 0.9277 0.9668
vt 0.9121 0.9082
vt 0.1348 0.6621
vt 0.1123 0.6060
vt 0.1035 0.6035
vt 0.1196 0.6299
vt 0.1035 0.6035
vt 0.1025 0.6313
vt 0.0864 0.5913
vt 0.0791 0.6289
vt 0.0449 0.5894
vt 0.0547 0.6270
vt 0.0288 0.6631
vt 0.0439 0.6611
vt 0.0337 0.6714
vt 0.0947 0.6841
vt 0.1025 0.6699
vt 0.0923 0.6773
vt 0.1035 0.6743
vt 0.1265 0.6685
vt 0.1269 0.6733
vt 0.1206 0.6533
vt 0.0833 0.6685
vt 0.0442 0.6611
vt 0.0923 0.6773
vt 0.0339 0.6714
vt 0.0947 0.6838
vt 0.0286 0.6775
vt 0.0830 0.6685
vt 0.1011 0.6602
vt 0.0684 0.6001
vt 0.1074 0.6001
vt 0.1074 0.6001
vt 0.0283 0.6777
vt 0.8301 0.9082
vt 0.7402 0.8184
vt 0.6504 0.8105
vt 0.2754 0.9668
vt 0.3301 0.9668
vt 0.4121 0.9668
vt 0.4902 0.9668
vt 0.5996 0.9668
vt 0.7402 0.9668
vt 0.7402 0.7715
vt 0.3789 0.8384
vt 0.2876 0.8191
vt 0.6504 0.8105
vn 0.9297 -0.3603 0.0761
vn -0.7374 -0.5350 0.4123
vn -0.0008 -0.8953 -0.4454
vn 0.9769 0.2059 -0.0573
vn -0.9301 -0.0845 0.3575
vn 0.9702 0.2421 0.0129
vn -0.9491 -0.0067 0.3149
vn 0.9802 0.0819 0.1804
vn -0.8456 0.4759 0.2418
vn 0.7925 -0.6027 0.0930
vn -0.7538 0.6475 -0.1120
vn 0.2549 -0.8078 -0.5315
vn 0.9770 0.1511 0.1507
vn 0.9781 -0.1599 0.1331
vn 0.0325 -0.2064 -0.9779
vn 0.9643 0.2514 0.0838
vn 0.0077 -0.1928 -0.9812
vn 0.8578 0.5036 0.1026
vn 0.0920 -0.2614 -0.9608
vn 0.8090 0.5630 0.1690
vn 0.4268 -0.1419 -0.8932
vn -0.9432 -0.1279 0.3066
vn -0.8733 -0.2763 0.4012
vn -0.9839 -0.0485 0.1721
vn -0.9785 -0.1495 0.1423
vn -0.6573 -0.6919 0.2988
vn -0.1639 -0.2322 -0.9588
vn -0.1403 -0.2244 -0.9643
vn -0.2568 -0.3008 -0.9185
vn -0.4195 -0.2138 -0.8822
vn -0.8775 0.3480 0.3299
vn -0.9034 0.2329 0.3601
vn -0.5191 0.3895 0.7608
vn -0.9663 0.2361 -0.1026
vn -0.9820 0.1296 -0.1374
vn -0.8388 0.1996 -0.5065
vn -0.7711 0.0777 -0.6320
vn -0.5011 0.1859 -0.8452
vn -0.4667 0.0044 -0.8844
vn -0.1992 0.1506 -0.9683
vn -0.1414 -0.0278 -0.9896
vn -0.3494 0.0796 0.9336
vn 0.2111 0.2129 0.9540
vn -0.2410 0.2204 0.9452
vn 0.0312 0.1670 0.9855
vn 0.4978 0.1194 0.8591
vn 0.1664 0.1162 0.9792
vn 0.3406 0.2416 0.9086
vn -0.0415 0.2108 0.9767
vn -0.1507 0.3465 0.9259
vn -0.5260 0.2809 0.8028
vn 0.0711 -0.1967 0.9779
vn 0.1061 0.0943 0.9899
vn -0.0957 0.0813 0.9921
vn 0.1332 -0.1891 0.9729
vn 0.2775 0.0980 0.9557
vn 0.2883 -0.1880 0.9389
vn 0.5285 0.0424 0.8479
vn 0.5169 -0.1835 0.8361
vn 0.7707 0.0158 0.6370
vn 0.7593 -0.1890 0.6227
vn 0.9562 0.0823 0.2808
vn 0.9570 -0.0263 0.2888
vn 0.9501 0.1350 -0.2811
vn 0.9550 0.0171 -0.2961
vn 0.5216 0.1137 -0.8456
vn 0.5357 -0.0300 -0.8438
vn 0.1133 0.1364 -0.9841
vn 0.1157 -0.0216 -0.9930
vn -0.1085 0.1388 -0.9844
vn -0.1012 -0.0303 -0.9944
vn -0.2997 -0.0390 -0.9532
vn -0.2769 0.0219 -0.9607
vn -0.5740 0.0563 -0.8170
vn 0.0840 0.0356 -0.9958
vn -0.1054 -0.0185 -0.9943
vn 0.4872 0.1244 -0.8644
vn 0.9359 0.2128 -0.2807
vn 0.9318 0.2234 0.2860
vn 0.7537 0.0970 0.6500
vn 0.5236 0.0544 0.8502
vn 0.2983 -0.0211 0.9543
vn -0.3113 0.1059 -0.9444
vn -0.6006 -0.0783 -0.7957
vn -0.6147 0.0396 -0.7878
vn -0.9271 -0.0787 -0.3665
vn -0.9347 0.0211 -0.3547
vn -0.9734 -0.1395 0.1815
vn -0.9864 -0.0246 0.1627
vn -0.7374 -0.2914 0.6093
vn -0.7777 -0.0750 0.6242
vn -0.4050 -0.2564 0.8776
vn -0.4215 -0.0104 0.9068
vn -0.1167 -0.2213 0.9682
vn -0.9221 0.0835 -0.3779
vn -0.9780 0.1216 0.1698
vn -0.7549 0.0302 0.6552
vn -0.4108 0.0030 0.9117
vn -0.1012 -0.0536 0.9934
vn 0.1045 -0.0330 0.9940
vn 0.0520 -0.0545 0.9972
vn 0.1522 -0.0453 0.9873
vn 0.4019 0.2693 -0.8752
vn 0.8355 0.3345 -0.4359
vn 0.7656 0.1959 -0.6128
vn 0.9669 0.2548 0.0130
vn -0.0006 -0.0802 -0.9968
vn -0.5572 -0.1510 -0.8165
vn 0.0778 -0.1525 -0.9852
vn -0.4502 -0.0732 -0.8899
vn -0.0356 0.0583 -0.9977
vn -0.3620 0.0675 -0.9297
vn 0.3677 -0.0360 -0.9293
vn 0.3521 -0.1171 -0.9286
vn -0.0933 -0.1052 -0.9901
vn 0.9345 0.3523 0.0504
vn 0.5591 0.4052 0.7233
vn 0.8201 0.4084 0.4007
vn 0.2999 0.3523 0.8865
vn -0.1162 -0.0923 -0.9889
vn -0.0504 -0.0067 -0.9987
vn 0.2237 -0.0403 -0.9738
vn 0.8555 0.3033 0.4196
vn 0.2438 0.1115 -0.9634
vn 0.9517 -0.2897 0.1019
vn 0.5076 -0.7495 0.4250
vn 0.4330 -0.8976 -0.0828
vn 0.6291 -0.1810 0.7560
vn 0.6579 -0.5707 0.4914
vn 0.7171 -0.0948 0.6905
vn 0.5111 -0.7906 0.3373
vn 0.5590 -0.2132 0.8013
vn -0.4017 -0.8672 0.2941
vn -0.5229 -0.3794 0.7633
vn -0.9170 -0.3923 -0.0717
vn -0.6736 0.2392 0.6993
vn -0.7644 0.5781 0.2854
vn 0.4873 0.7961 0.3587
vn 0.6188 0.7855 0.0072
vn 0.5705 0.8112 0.1283
vn 0.7243 0.6425 0.2503
vn 0.8196 0.5727 0.0147
vn 0.7071 0.6310 0.3191
vn 0.7139 0.1808 0.6765
vn 0.5360 0.4018 0.7425
vn -0.7996 0.5990 0.0440
vn 0.7183 0.3345 0.6100
vn -0.3606 -0.9216 -0.1440
vn 0.0194 0.1680 -0.9856
vn 0.3806 0.0603 -0.9228
vn 0.6510 0.0555 -0.7571
vn -0.3632 -0.0757 -0.9286
vn 0.5802 0.3029 0.7560
vn -0.6789 -0.0046 -0.7342
usemtl pants.png
s 1
f 1/1/1 2/2/2 3/3/3
f 4/4/4 2/2/2 1/1/1
f 4/4/4 5/5/5 2/2/2
f 6/6/6 5/5/5 4/4/4
f 6/6/6 7/7/7 5/5/5
f 8/8/8 7/7/7 6/6/6
f 8/8/8 9/9/9 7/7/7
f 10/10/10 9/9/9 8/8/8
f 10/10/10 11/11/11 9/9/9
f 12/12/12 13/13/13 14/14/14
f 15/15/15 13/13/13 12/12/12
f 15/15/15 16/16/16 13/13/13
f 17/17/17 16/16/16 15/15/15
f 17/17/17 18/18/18 16/16/16
f 19/19/19 18/18/18 17/17/17
f 19/19/19 20/20/20 18/18/18
f 21/21/21 20/20/20 19/19/19
f 21/21/21 22/22/22 23/23/23
f 19/19/19 22/22/22 21/21/21
f 19/19/19 24/24/24 22/22/22
f 17/17/17 24/24/24 19/19/19
f 17/17/17 25/25/25 24/24/24
f 15/15/15 25/25/25 17/17/17
f 15/15/15 26/26/26 25/25/25
f 12/12/12 26/26/26 15/15/15
f 2/2/2 27/27/27 3/3/3
f 5/5/5 27/27/27 2/2/2
f 5/5/5 28/28/28 27/27/27
f 7/7/7 28/28/28 5/5/5
f 7/7/7 29/29/29 28/28/28
f 9/9/9 29/29/29 7/7/7
f 9/9/9 30/30/30 29/29/29
f 11/11/11 30/30/30 9/9/9
f 14/14/14 25/25/25 26/26/26
f 13/13/13 25/25/25 14/14/14
f 13/13/13 24/24/24 25/25/25
f 16/16/16 24/24/24 13/13/13
f 16/16/16 22/22/22 24/24/24
f 18/18/18 22/22/22 16/16/16
f 18/18/18 23/23/23 22/22/22
f 20/20/20 23/23/23 18/18/18
f 8/8/8 29/29/29 30/30/30
f 6/6/6 29/29/29 8/8/8
f 6/6/6 28/28/28 29/29/29
f 4/4/4 28/28/28 6/6/6
f 4/4/4 27/27/27 28/28/28
f 1/1/1 27/27/27 4/4/4
f 1/1/1 3/3/3 27/27/27
f 10/10/10 8/8/8 30/30/30
f 14/14/14 26/26/26 12/12/12
f 31/31/31 32/32/32 33/33/33
f 34/34/34 32/32/32 31/31/31
f 34/34/34 35/35/35 32/32/32
f 36/36/36 35/35/35 34/34/34
f 36/36/36 37/37/37 35/35/35
f 38/38/38 37/37/37 36/36/36
f 38/38/38 39/39/39 37/37/37
f 40/40/40 39/39/39 38/38/38
f 40/40/40 41/41/41 39/39/39
f 42/42/42 43/43/43 44/44/44
f 45/45/45 46/46/46 47/47/47
f 48/48/48 46/46/46 45/45/45
f 48/48/48 49/49/49 46/46/46
f 50/50/50 49/49/49 48/48/48
f 50/50/50 51/51/51 49/49/49
f 33/33/33 51/51/51 50/50/50
f 33/33/33 32/32/32 51/51/51
f 52/52/52 53/53/53 54/54/54
f 55/55/55 53/53/53 52/52/52
f 55/55/55 56/56/56 53/53/53
f 57/57/57 56/56/56 55/55/55
f 57/57/57 58/58/58 56/56/56
f 59/59/59 58/58/58 57/57/57
f 59/59/59 60/60/60 58/58/58
f 61/61/61 60/60/60 59/59/59
f 61/61/61 62/62/62 60/60/60
f 63/63/63 62/62/62 61/61/61
f 63/63/63 64/64/64 62/62/62
f 65/65/65 64/64/64 63/63/63
f 65/65/65 66/66/66 64/64/64
f 67/67/67 66/66/66 65/65/65
f 67/67/67 68/68/68 66/66/66
f 69/69/69 68/68/68 67/67/67
f 69/69/69 70/70/70 68/68/68
f 71/71/71 70/70/70 69/69/69
f 71/71/71 72/72/72 70/70/70
f 73/73/73 72/72/72 71/71/71
f 73/73/73 74/74/74 72/72/72
f 71/75/71 75/76/75 76/77/76
f 69/78/69 75/76/75 71/75/71
f 69/78/69 77/79/77 75/76/75
f 67/80/67 77/79/77 69/78/69
f 67/80/67 78/81/78 77/79/77
f 65/82/65 78/81/78 67/80/67
f 65/82/65 79/83/79 78/81/78
f 63/84/63 79/83/79 65/82/65
f 63/84/63 80/85/80 79/83/79
f 61/86/61 80/85/80 63/84/63
f 61/86/61 81/87/81 80/85/80
f 59/88/59 81/87/81 61/86/61
f 59/88/59 82/89/82 81/87/81
f 57/90/57 82/89/82 59/88/59
f 57/90/57 55/91/55 82/89/82
f 72/72/72 83/92/83 70/70/70
f 84/93/84 83/92/83 72/72/72
f 84/93/84 85/94/85 83/92/83
f 86/95/86 85/94/85 84/93/84
f 86/95/86 87/96/87 85/94/85
f 88/97/88 87/96/87 86/95/86
f 88/97/88 89/98/89 87/96/87
f 90/99/90 89/98/89 88/97/88
f 90/99/90 91/100/91 89/98/89
f 92/101/92 91/100/91 90/99/90
f 92/101/92 93/102/93 91/100/91
f 94/103/94 93/102/93 92/101/92
f 94/103/94 54/54/54 93/102/93
f 52/104/52 54/54/54 94/103/94
f 74/105/74 84/106/84 72/107/72
f 95/108/95 84/106/84 74/105/74
f 95/108/95 86/109/86 84/106/84
f 96/110/96 86/109/86 95/108/95
f 96/110/96 88/111/88 86/109/86
f 97/112/97 88/111/88 96/110/96
f 97/112/97 90/113/90 88/111/88
f 98/114/98 90/113/90 97/112/97
f 98/114/98 92/115/92 90/113/90
f 99/116/99 92/115/92 98/114/98
f 99/116/99 94/103/94 92/115/92
f 52/104/52 94/103/94 99/116/99
f 76/117/76 73/118/73 71/119/71
f 52/120/52 100/121/100 55/55/55
f 101/122/101 100/121/100 52/120/52
f 102/123/102 82/124/82 55/55/55
f 102/123/102 55/55/55 100/121/100
f 101/125/101 52/104/52 99/116/99
f 77/126/77 103/127/103 75/128/75
f 104/129/104 103/127/103 77/126/77
f 104/129/104 105/130/105 103/127/103
f 106/131/106 105/130/105 104/129/104
f 107/132/107 108/133/108 109/134/109
f 107/132/107 110/135/110 108/133/108
f 111/136/111 110/135/110 107/132/107
f 111/136/111 112/137/112 110/135/110
f 107/132/107 113/138/113 111/136/111
f 114/139/114 113/138/113 107/132/107
f 114/139/114 115/140/115 113/138/113
f 48/48/48 45/45/45 100/141/100
f 101/142/101 48/48/48 100/141/100
f 48/48/48 101/142/101 50/50/50
f 78/143/78 79/144/79 116/145/116
f 116/145/116 106/131/106 104/129/104
f 80/146/80 81/147/81 117/148/117
f 117/148/117 118/149/118 80/146/80
f 82/150/82 102/151/102 119/152/119
f 78/143/78 104/129/104 77/126/77
f 104/129/104 78/143/78 116/145/116
f 120/153/120 121/154/121 122/155/122
f 118/149/118 117/148/117 123/156/123
f 73/157/73 76/158/76 124/159/124
f 125/160/125 126/161/126 127/162/127
f 128/163/128 126/161/126 125/160/125
f 128/163/128 129/164/129 126/161/126
f 130/165/130 129/164/129 128/163/128
f 130/165/130 131/166/131 129/164/129
f 132/167/132 131/166/131 130/165/130
f 132/167/132 133/168/133 131/166/131
f 134/169/134 133/168/133 132/167/132
f 134/169/134 135/170/135 133/168/133
f 136/171/136 135/170/135 134/169/134
f 136/171/136 137/172/137 135/170/135
f 138/173/138 139/174/139 140/175/140
f 141/176/141 139/174/139 138/173/138
f 141/176/141 142/177/142 139/174/139
f 143/178/143 142/177/142 141/176/141
f 143/178/143 125/160/125 142/177/142
f 144/179/144 125/160/125 143/178/143
f 144/179/144 128/163/128 125/160/125
f 130/165/130 128/163/128 144/179/144
f 145/180/145 136/181/136 134/169/134
f 138/182/138 136/181/136 145/180/145
f 138/182/138 137/183/137 136/181/136
f 140/184/140 137/183/137 138/182/138
f 140/184/140 146/185/146 137/183/137
f 145/186/145 141/176/141 138/182/138
f 147/187/147 141/176/141 145/186/145
f 147/187/147 143/178/143 141/176/141
f 144/179/144 143/178/143 147/187/147
f 148/188/148 127/162/127 131/166/131
f 129/164/129 127/189/127 126/161/126
f 133/168/133 148/188/148 131/166/131
f 129/190/129 131/166/131 127/162/127
f 146/191/146 135/170/135 137/172/137
f 130/165/130 147/187/147 132/167/132
f 132/167/132 145/186/145 134/169/134
f 147/187/147 130/165/130 144/179/144
f 145/186/145 132/167/132 147/187/147
f 148/188/148 133/168/133 135/170/135
f 149/192/149 121/154/121 112/137/112
f 150/193/150 121/154/121 149/192/149
f 150/193/150 122/155/122 121/154/121
f 151/194/151 122/155/122 150/193/150
f 116/145/116 123/156/123 106/131/106
f 116/145/116 118/149/118 123/156/123
f 79/144/79 118/149/118 116/145/116
f 79/144/79 80/146/80 118/149/118
f 99/195/99 50/50/50 101/142/101
f 98/196/98 50/50/50 99/195/99
f 98/196/98 33/33/33 50/50/50
f 97/197/97 33/33/33 98/196/98
f 97/197/97 31/31/31 33/33/33
f 96/198/96 31/31/31 97/197/97
f 96/198/96 34/34/34 31/31/31
f 95/199/95 34/34/34 96/198/96
f 95/199/95 36/36/36 34/34/34
f 74/200/74 36/36/36 95/199/95
f 74/200/74 38/38/38 36/36/36
f 73/157/73 38/38/38 74/200/74
f 73/157/73 40/40/40 38/38/38
f 124/159/124 40/40/40 73/157/73
f 124/159/124 41/41/41 40/40/40
f 150/193/150 105/130/105 151/194/151
f 150/193/150 103/127/103 105/130/105
f 149/192/149 103/127/103 150/193/150
f 149/192/149 75/128/75 103/127/103
f 112/137/112 75/128/75 149/192/149
f 112/137/112 76/158/76 75/128/75
f 111/136/111 76/158/76 112/137/112
f 111/136/111 124/159/124 76/158/76
f 113/138/113 124/159/124 111/136/111
f 113/138/113 41/41/41 124/159/124
f 115/140/115 41/41/41 113/138/113
f 115/140/115 152/201/152 41/41/41
f 117/148/117 153/202/153 123/156/123
f 117/148/117 119/152/119 153/202/153
f 81/147/81 119/152/119 117/148/117
f 81/147/81 82/150/82 119/152/119
f 107/132/107 109/134/109 114/139/114
f 119/152/119 43/203/43 153/202/153
f 119/152/119 44/44/44 43/203/43
f 102/151/102 44/44/44 119/152/119
f 102/151/102 100/141/100 44/44/44
f 121/154/121 110/135/110 112/137/112
f 120/153/120 110/135/110 121/154/121
f 120/153/120 108/133/108 110/135/110
f 152/201/152 39/39/39 41/41/41
f 154/204/154 39/39/39 152/201/152
f 154/204/154 37/37/37 39/39/39
f 42/42/42 45/45/45 47/47/47
f 44/44/44 45/45/45 42/42/42
f 44/44/44 100/141/100 45/45/45

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
# Blender MTL File: 'goku_foot.blend'
# Blender MTL File: 'Full_remake.blend'
# Material Count: 2
newmtl face.png
Ns 94.117647
newmtl face.png.007
Ns 92.156863
Ka 0.000000 0.000000 0.000000
Kd 0.800000 0.800000 0.800000
Ks 0.250000 0.250000 0.250000
@ -12,8 +12,8 @@ d 1.000000
illum 2
map_Kd face.png
newmtl pants.png
Ns 94.117647
newmtl pants.png.008
Ns 92.156863
Ka 0.000000 0.000000 0.000000
Kd 0.800000 0.800000 0.800000
Ks 0.250000 0.250000 0.250000

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
# Blender MTL File: 'goku_legs.blend'
# Blender MTL File: 'Full_remake.blend'
# Material Count: 2
newmtl face.png
Ns 94.117647
newmtl face.png.006
Ns 92.156863
Ka 0.000000 0.000000 0.000000
Kd 0.800000 0.800000 0.800000
Ks 0.250000 0.250000 0.250000
@ -12,8 +12,8 @@ d 1.000000
illum 2
map_Kd face.png
newmtl pants.png
Ns 94.117647
newmtl pants.png.007
Ns 92.156863
Ka 0.000000 0.000000 0.000000
Kd 0.800000 0.800000 0.800000
Ks 0.250000 0.250000 0.250000

File diff suppressed because it is too large Load Diff

View File

@ -1,57 +0,0 @@
# Blender MTL File: 'goku_full.blend'
# Material Count: 5
newmtl eyes.png
Ns 94.117647
Ka 0.000000 0.000000 0.000000
Kd 0.800000 0.800000 0.800000
Ks 0.250000 0.250000 0.250000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
map_Kd eyes.png
newmtl face.png
Ns 94.117647
Ka 0.000000 0.000000 0.000000
Kd 0.800000 0.800000 0.800000
Ks 0.250000 0.250000 0.250000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
map_Kd face.png
newmtl hair.png
Ns 94.117647
Ka 0.000000 0.000000 0.000000
Kd 0.027208 0.027208 0.027208
Ks 0.024625 0.024625 0.024625
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
map_Kd hair.png
newmtl pants.png
Ns 94.117647
Ka 0.000000 0.000000 0.000000
Kd 0.800000 0.800000 0.800000
Ks 0.250000 0.250000 0.250000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
map_Kd pants.png
newmtl shirt.png
Ns 94.117647
Ka 0.000000 0.000000 0.000000
Kd 0.800000 0.800000 0.800000
Ks 0.250000 0.250000 0.250000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
map_Kd shirt.png

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
# Blender MTL File: 'goku_handL.blend'
# Blender MTL File: 'Full_remake.blend'
# Material Count: 3
newmtl face.png
Ns 94.117647
newmtl face.png.004
Ns 92.156863
Ka 0.000000 0.000000 0.000000
Kd 0.800000 0.800000 0.800000
Ks 0.250000 0.250000 0.250000
@ -12,8 +12,8 @@ d 1.000000
illum 2
map_Kd face.png
newmtl pants.png
Ns 94.117647
newmtl pants.png.003
Ns 92.156863
Ka 0.000000 0.000000 0.000000
Kd 0.800000 0.800000 0.800000
Ks 0.250000 0.250000 0.250000
@ -23,8 +23,8 @@ d 1.000000
illum 2
map_Kd pants.png
newmtl shirt.png
Ns 94.117647
newmtl shirt.png.004
Ns 92.156863
Ka 0.000000 0.000000 0.000000
Kd 0.800000 0.800000 0.800000
Ks 0.250000 0.250000 0.250000

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
# Blender MTL File: 'goku_handR.blend'
# Blender MTL File: 'Full_remake.blend'
# Material Count: 3
newmtl face.png
Ns 94.117647
newmtl face.png.005
Ns 92.156863
Ka 0.000000 0.000000 0.000000
Kd 0.800000 0.800000 0.800000
Ks 0.250000 0.250000 0.250000
@ -12,8 +12,8 @@ d 1.000000
illum 2
map_Kd face.png
newmtl pants.png
Ns 94.117647
newmtl pants.png.004
Ns 92.156863
Ka 0.000000 0.000000 0.000000
Kd 0.800000 0.800000 0.800000
Ks 0.250000 0.250000 0.250000
@ -23,10 +23,10 @@ d 1.000000
illum 2
map_Kd pants.png
newmtl shirt.png
Ns 94.117647
newmtl shirt.png.005
Ns 92.156863
Ka 0.000000 0.000000 0.000000
Kd 1.000000 0.617207 0.417885
Kd 0.800000 0.800000 0.800000
Ks 0.250000 0.250000 0.250000
Ke 0.000000 0.000000 0.000000
Ni 1.000000

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
# Blender MTL File: 'goku_head.blend'
# Blender MTL File: 'Full_remake.blend'
# Material Count: 4
newmtl eyes.png
Ns 94.117647
Ns 92.156863
Ka 0.000000 0.000000 0.000000
Kd 0.800000 0.800000 0.800000
Ks 0.250000 0.250000 0.250000
@ -12,8 +12,8 @@ d 1.000000
illum 2
map_Kd eyes.png
newmtl face.png
Ns 94.117647
newmtl face.png.001
Ns 92.156863
Ka 0.000000 0.000000 0.000000
Kd 0.800000 0.800000 0.800000
Ks 0.250000 0.250000 0.250000
@ -24,7 +24,7 @@ illum 2
map_Kd face.png
newmtl hair.png
Ns 94.117647
Ns 92.156863
Ka 0.000000 0.000000 0.000000
Kd 0.027208 0.027208 0.027208
Ks 0.024625 0.024625 0.024625
@ -34,8 +34,8 @@ d 1.000000
illum 2
map_Kd hair.png
newmtl shirt.png
Ns 94.117647
newmtl shirt.png.001
Ns 92.156863
Ka 0.000000 0.000000 0.000000
Kd 0.800000 0.800000 0.800000
Ks 0.250000 0.250000 0.250000

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
# Blender MTL File: 'goku_legL.blend'
# Blender MTL File: 'Full_remake.blend'
# Material Count: 1
newmtl pants.png
Ns 94.117647
newmtl pants.png.005
Ns 92.156863
Ka 0.000000 0.000000 0.000000
Kd 0.800000 0.800000 0.800000
Ks 0.250000 0.250000 0.250000

View File

@ -1,98 +1,100 @@
# Blender v2.78 (sub 0) OBJ File: 'goku_legL.blend'
# Blender v2.78 (sub 0) OBJ File: 'Full_remake.blend'
# www.blender.org
mtllib goku_legL.mtl
o Mesh.404_DrawCall_231
v 0.424893 -10.608627 4.949482
v 2.236749 -10.923356 2.956954
v 1.169725 -9.011127 -0.536196
v 2.509670 -8.868757 1.008370
v 1.049754 -8.268933 -0.005599
v 1.336176 -7.799356 -0.805991
v 2.665817 -7.434734 0.781920
v 1.501240 -5.455472 -1.018057
v 2.770802 -5.046062 0.535011
v 2.838188 -3.110165 0.227148
v -1.588822 1.188293 -0.093029
v -1.166129 1.249268 0.275240
v -3.113583 -0.984687 2.190746
v -1.514320 -1.537658 4.393212
v -2.640762 -1.843260 3.331730
v -1.555381 -3.301793 4.753983
v -2.541874 -3.484594 3.894073
v -1.607124 -5.540161 5.168834
v -0.888409 1.444823 -1.392287
v 0.170019 2.047507 -0.962185
v 0.781002 2.110733 -1.081212
v 0.111911 -2.952235 -2.014582
v 1.661732 -3.315480 -1.315830
v -0.361378 -5.381123 -1.299529
v 1.400618 -0.598601 -1.848615
v 2.924168 -0.350000 -0.431315
v 1.129401 1.959420 -0.423583
v 0.997167 1.953464 0.024818
v 0.895570 2.129233 0.449503
v 0.611979 1.588895 0.574292
v 2.639492 -2.567126 2.103298
v -2.738574 -11.042049 2.151810
v -2.548887 -10.313929 0.389402
v -2.808148 -11.313427 1.404513
v 2.900565 -10.085162 1.398479
v -2.055000 -5.035690 -0.575956
v 1.462533 2.027933 0.151416
v 2.388088 -9.022149 1.137576
v 1.046068 -8.154587 0.049234
v 0.012781 1.741028 0.989278
v -3.081303 -9.788935 1.474140
v -2.728865 -10.762455 -0.307974
v -2.593912 -1.784508 -1.300813
v -1.455562 -10.656979 4.847445
v -3.303941 -2.376185 0.239862
v -2.855936 -4.356300 1.193287
v -3.088882 -3.744618 2.998609
v -3.055365 -6.594646 1.479124
v -3.224320 -6.004218 3.260995
v -3.107483 -8.328135 1.860465
v -3.258180 -8.009151 3.607301
v -3.082253 -9.356806 1.952987
v -3.271134 -9.322953 3.659410
v -3.173038 -10.107235 3.269696
v 1.408831 1.879226 0.512200
v 3.161309 -0.949660 0.948460
v -0.542306 -7.658642 -1.037759
v -0.740115 -8.892838 -0.741831
v -0.900984 -8.294271 -0.214678
v -0.894387 -8.247567 -0.174009
v 2.494693 -9.458380 2.851106
v 1.969406 -9.493563 4.496408
v 2.035431 -10.179667 4.065444
v 2.583841 -8.552948 2.851421
v 2.029069 -8.202947 4.530171
v 2.673131 -6.838091 2.659020
v 2.027262 -6.216575 4.329606
v 2.665550 -4.405717 2.370766
v 2.010479 -3.852947 3.966494
v 1.955416 -1.981083 3.662743
v -2.328866 -7.253160 -0.274087
v -2.458092 -8.710184 0.077790
v -2.434717 -8.933702 0.297064
v -2.330808 -8.902542 0.338142
v -1.738756 -9.552923 -1.188127
v -2.335021 -8.866680 0.006010
v -0.527923 -8.719878 -1.668589
v -0.711917 -8.044925 -0.872505
v 1.262752 -7.918886 -0.634314
v 2.659429 -8.823822 0.889056
v 2.429645 -8.918675 1.162346
v 2.779288 -9.764681 2.420541
v -1.828040 -9.749414 -1.624528
v 0.289565 -9.603724 5.558864
v 0.306160 -7.950502 5.601969
v 0.298832 -5.725500 5.250430
v 0.304699 -3.441369 4.807540
v 0.272662 -1.613887 4.400406
v -0.719593 1.218324 0.594728
v -1.605539 -9.570544 5.472885
v -1.581856 -7.812755 5.506594
o Mesh.404_DrawCall_231.009
v 4.792623 11.225986 -2.179282
v 5.758189 11.628549 1.255615
v 4.705511 10.621392 0.099228
v 4.982580 11.441686 -1.335826
v 1.419380 13.363386 -2.115514
v 3.431467 13.543381 -2.462662
v 1.805862 14.088643 -1.701494
v 1.261859 14.586769 -2.333233
v 3.303717 14.987380 -2.637677
v 1.142340 16.939522 -2.460912
v 3.123014 17.382515 -2.729444
v 2.875029 19.324783 -2.843987
v 1.481770 21.114315 3.373194
v 4.198130 20.600563 3.105379
v 3.577706 23.873878 0.304819
v 2.711722 20.259167 3.509171
v 4.503391 18.830135 3.233526
v 3.260633 18.614567 3.627373
v 4.854084 16.584602 3.373785
v -0.450212 19.388687 -1.651694
v 0.948893 19.090038 -2.639347
v -0.056708 16.926315 -1.006193
v 0.331730 21.800037 -2.547169
v 2.327943 22.097630 -3.111368
v 1.118120 22.620426 -2.629398
v 2.008129 23.375267 -2.444626
v 1.737057 11.090570 2.505981
v 0.315572 11.860040 1.476652
v 1.062797 10.830080 2.167665
v 3.978569 12.340864 -2.660781
v -1.083037 22.104649 -0.291575
v 3.043839 22.689529 -2.861322
v 3.481318 13.381741 -2.300205
v 1.849919 14.201619 -1.664201
v 0.967647 12.337520 2.517111
v 3.601652 10.362538 1.576842
v 4.705085 11.488576 2.811327
v 1.839851 11.197412 1.961797
v -1.239052 20.406746 1.093452
v -0.276404 19.751770 2.461743
v 0.790600 17.778934 2.464010
v 2.213884 18.344418 3.622500
v 0.954745 15.528487 2.664522
v 2.390985 16.076370 3.755048
v 1.271678 13.787728 2.814303
v 2.689836 14.066113 3.857005
v 1.373837 12.760039 2.786397
v 2.740431 12.752551 3.826143
v 2.463976 11.981544 3.500997
v 4.541834 22.224205 -2.128143
v 0.096666 14.638120 -0.835936
v 0.260713 13.390292 -0.579111
v 0.624601 13.970152 -0.139341
v 0.662435 14.016358 -0.121668
v 5.010294 12.919408 -1.534486
v 6.152294 12.827378 -0.241601
v 5.823036 12.153586 -0.555323
v 5.047718 13.827990 -1.563324
v 6.199586 14.118507 -0.207864
v 4.912149 15.548461 -1.648903
v 6.007621 16.105728 -0.205409
v 4.637733 17.982407 -1.663201
v 5.664914 18.471966 -0.253857
v 4.377327 19.822098 -1.682056
v 5.358163 20.344120 -0.264760
v 4.850428 21.959091 -1.015879
v -0.309298 17.173439 0.834014
v -0.169839 14.939831 1.107606
v 0.079566 13.471860 1.322762
v 0.281826 13.245724 1.403641
v 0.370149 13.281243 1.337364
v 3.522929 13.486672 -2.317668
v 3.405612 13.597938 -2.649846
v 1.372563 14.460547 -2.188445
v 4.790037 12.635753 -2.015346
v 0.082705 13.323051 1.172308
v 0.154995 14.240851 -0.626012
v 6.201863 12.613906 1.736982
v 6.231582 14.264809 1.831368
v 5.904984 16.492867 1.773513
v 5.506230 18.782337 1.660543
v 5.123037 20.613251 1.574513
v 5.154233 12.554318 3.317751
v 5.178533 14.310170 3.406710
v 1.387578 24.091576 -1.676538
v 5.358163 20.344120 -0.264760
v 4.850428 21.959091 -1.015879
v 4.541834 22.224205 -2.128143
v 4.850428 21.959091 -1.015879
vt 0.4695 0.2234
vt 0.3875 0.2945
vt 0.3875 0.2562
vt 0.4694 0.2559
vt 0.7363 0.3613
vt 0.6426 0.3613
vt 0.7357 0.3073
@ -102,9 +104,8 @@ vt 0.7363 0.5410
vt 0.6465 0.5410
vt 0.6543 0.6855
vt 0.2168 0.7559
vt 0.2871 0.8193
vt 0.2012 0.7949
vt 0.3066 0.6816
vt 0.2871 0.8193
vt 0.2519 0.6777
vt 0.3066 0.5410
vt 0.2559 0.5410
@ -116,21 +117,26 @@ vt 0.8418 0.6855
vt 0.7402 0.7480
vt 0.8340 0.7168
vt 0.8301 0.7480
vt 0.5488 0.8496
vt 0.5488 0.6895
vt 0.6504 0.8418
vt 0.2156 0.2549
vt 0.1504 0.2139
vt 0.2148 0.2197
vt 0.4692 0.2559
vt 0.4695 0.2236
vt 0.5501 0.2122
vt 0.2012 0.7949
vt 0.1816 0.6777
vt 0.7402 0.7715
vt 0.7356 0.3074
vt 0.6418 0.3074
vt 0.7354 0.2803
vt 0.8301 0.8027
vt 0.1504 0.2817
vt 0.1514 0.1807
vt 0.1465 0.5410
vt 0.2090 0.6152
vt 0.3069 0.2564
vt 0.3061 0.2939
vt 0.2148 0.1807
vt 0.1660 0.6230
vt 0.2090 0.6152
vt 0.1465 0.5410
vt 0.2090 0.5410
vt 0.1465 0.4473
vt 0.2090 0.4473
@ -158,11 +164,14 @@ vt 0.5488 0.4473
vt 0.4707 0.4473
vt 0.5488 0.5410
vt 0.4707 0.5410
vt 0.5488 0.6895
vt 0.4707 0.6895
vt 0.4707 0.8496
vt 0.5488 0.8496
vt 0.5488 0.7695
vt 0.9199 0.5410
vt 0.9824 0.5410
vt 0.9941 0.6426
vt 0.9707 0.6387
vt 0.9824 0.5410
vt 0.9082 0.4473
vt 0.9863 0.4473
vt 0.9082 0.3613
@ -171,15 +180,6 @@ vt 0.9043 0.3073
vt 0.9857 0.3073
vt 0.9043 0.2816
vt 0.9855 0.2806
vt 0.9852 0.2109
vt 0.9039 0.1727
vt 0.9852 0.1727
vt 0.9043 0.2559
vt 0.8258 0.1727
vt 0.8258 0.2555
vt 0.5501 0.2122
vt 0.4692 0.2559
vt 0.6418 0.2566
vt 0.6419 0.2819
vt 0.6419 0.2565
vt 0.7354 0.2559
@ -187,290 +187,271 @@ vt 0.5501 0.2816
vt 0.5501 0.3073
vt 0.4694 0.2943
vt 0.9854 0.2808
vt 0.9043 0.2559
vt 0.9851 0.2109
vt 0.9043 0.2817
vt 0.8257 0.2556
vt 0.6418 0.2820
vt 0.9038 0.1728
vt 0.9038 0.1445
vt 0.9851 0.1728
vt 0.3875 0.2947
vt 0.6504 0.8418
vt 0.5996 0.7656
vt 0.5501 0.2817
vt 0.6418 0.2566
vt 0.3875 0.2947
vt 0.3857 0.3259
vt 0.3848 0.3613
vt 0.3848 0.4473
vt 0.3848 0.5410
vt 0.3809 0.6855
vt 0.3789 0.8384
vt 0.3061 0.2939
vt 0.4707 0.8496
vt 0.3875 0.2564
vt 0.3069 0.3242
vt 0.3066 0.3613
vt 0.2876 0.8191
vt 0.3789 0.8384
vt 0.9121 0.7480
vt 0.9121 0.8027
vt 0.9160 0.7090
vt 0.9160 0.6797
vt 0.9199 0.6387
vt 0.9043 0.3076
vt 0.3066 0.3242
vn 0.1846 -0.9355 -0.3012
vn 0.7562 -0.5071 -0.4135
vn -0.4051 -0.5140 0.7561
vn 0.4735 -0.1828 -0.8616
vn 0.9387 -0.1089 -0.3271
vn 0.5015 -0.1293 -0.8554
vn 0.9532 -0.0685 -0.2945
vn 0.9536 -0.1176 -0.2770
vn -0.9402 0.2535 0.2274
vn -0.2537 0.9206 0.2968
vn -0.7170 0.6922 -0.0820
vn -0.3204 0.5013 0.8038
vn -0.8419 0.2339 0.4862
vn -0.3647 0.1949 0.9105
vn -0.7684 0.1360 0.6254
vn -0.4227 0.1415 0.8951
vn -0.1847 -0.1311 -0.9740
vn 0.5766 -0.1788 -0.7972
vn -0.1531 -0.1168 -0.9813
vn 0.3055 0.1726 -0.9364
vn 0.8748 0.2641 -0.4061
vn 0.5843 0.8094 -0.0597
vn 0.3875 0.9021 -0.1898
vn 0.0936 0.7341 0.6725
vn 0.9394 0.1533 0.3067
vn -0.1686 0.8457 0.5062
vn -0.7846 -0.5973 0.1662
vn -0.9617 0.1619 -0.2212
vn -0.7074 -0.6988 -0.1058
vn 0.4909 0.7984 -0.3486
vn -0.3170 -0.9480 0.0287
vn -0.2055 0.5493 0.8099
vn -0.9649 -0.0257 -0.2611
vn -0.9107 -0.0302 -0.4119
vn -0.9644 -0.1058 -0.2422
vn -0.9570 0.1869 -0.2218
vn -0.5590 0.0414 -0.8281
vn -0.9695 0.0764 0.2328
vn -0.9685 0.0169 -0.2485
vn -0.9610 0.0656 0.2686
vn -0.9761 -0.0388 -0.2137
vn -0.9477 0.0378 0.3169
vn -0.9769 0.0806 -0.1979
vn -0.9295 -0.1241 0.3473
vn -0.8719 -0.4219 0.2485
vn -0.2878 -0.7669 0.5735
vn 0.8988 0.2443 0.3638
vn 0.3529 0.6057 0.7131
vn -0.1522 -0.1532 -0.9764
vn -0.1722 -0.9218 -0.3472
vn 0.1889 -0.6662 0.7214
vn -0.1122 0.4147 0.9030
vn 0.9580 0.0975 0.2697
vn 0.7539 -0.1837 0.6307
vn 0.7445 -0.3990 0.5352
vn 0.9851 -0.0672 0.1582
vn 0.7786 0.0022 0.6275
vn 0.9832 -0.0040 0.1825
vn 0.7621 0.0892 0.6413
vn 0.9757 0.0329 0.2166
vn 0.7472 0.1189 0.6539
vn 0.7128 0.3806 0.5891
vn -0.1260 0.8733 0.4705
vn -0.6724 -0.0772 -0.7362
vn -0.7138 -0.0568 -0.6980
vn -0.6067 -0.4550 -0.6518
vn -0.3312 -0.8443 -0.4212
vn -0.8336 -0.4769 -0.2788
vn -0.7863 0.4833 -0.3849
vn -0.7678 0.5807 -0.2706
vn -0.5975 0.5342 -0.5980
vn -0.4077 0.9032 -0.1342
vn 0.8061 -0.4397 -0.3959
vn 0.5621 -0.8156 0.1372
vn 0.6139 0.7853 -0.0800
vn -0.2513 0.7544 0.6064
vn 0.0295 0.9428 0.3320
vn 0.9616 0.1184 0.2474
vn -0.8042 0.5860 -0.0993
vn 0.2093 -0.7597 0.6156
vn 0.2328 -0.2588 0.9374
vn 0.2468 0.0570 0.9674
vn 0.2379 0.1624 0.9576
vn 0.2289 0.1929 0.9541
vn 0.2045 0.5013 0.8407
vn -0.4382 0.8181 0.3724
vn -0.4119 -0.2544 0.8750
vn -0.4185 0.0657 0.9058
vn 0.2815 0.7696 -0.5730
vn -0.2490 0.8579 -0.4495
vn -0.3760 0.6124 -0.6953
usemtl pants.png
vn 0.9121 0.2745 -0.3044
vn 0.7686 -0.6241 0.1409
vn 0.6777 -0.7350 0.0233
vn 0.8988 0.0810 -0.4307
vn -0.1547 -0.9194 -0.3617
vn 0.0386 -0.4610 -0.8866
vn 0.4454 -0.5476 0.7084
vn -0.4941 -0.1428 -0.8576
vn 0.2026 -0.0559 -0.9777
vn -0.4750 -0.0882 -0.8756
vn 0.2377 -0.0154 -0.9712
vn 0.2523 -0.0618 -0.9657
vn -0.3287 0.5505 0.7674
vn 0.5179 0.3842 0.7643
vn 0.3920 0.8930 0.2213
vn -0.0289 0.2488 0.9681
vn 0.5919 0.1594 0.7901
vn 0.1405 0.0858 0.9864
vn 0.5494 0.1035 0.8291
vn -0.8477 -0.1637 -0.5046
vn -0.3860 -0.1350 -0.9126
vn -0.9086 -0.1393 -0.3937
vn -0.6000 0.2231 -0.7683
vn 0.0244 0.1335 -0.9907
vn -0.4367 0.4219 -0.7946
vn 0.0689 0.7060 -0.7048
vn -0.2548 -0.6386 0.7261
vn -0.7674 -0.1216 0.6296
vn -0.4716 -0.1431 0.8701
vn 0.6617 0.1477 -0.7350
vn -0.8821 0.4692 0.0415
vn 0.3552 0.4567 -0.8156
vn -0.1291 -0.9630 0.2367
vn 0.5840 0.5232 0.6206
vn -0.7195 -0.0688 0.6910
vn 0.1961 -0.8102 0.5523
vn 0.3836 -0.6937 0.6096
vn 0.1850 -0.9347 -0.3035
vn -0.9569 0.0986 0.2732
vn -0.7190 -0.0536 0.6929
vn -0.7022 -0.1492 0.6962
vn -0.2991 0.0237 0.9539
vn -0.7109 -0.0267 0.7028
vn -0.2639 0.0127 0.9645
vn -0.6844 -0.0833 0.7243
vn -0.2153 -0.0153 0.9764
vn -0.6724 0.0356 0.7393
vn -0.1783 -0.1768 0.9680
vn -0.2306 -0.4693 0.8524
vn 0.7456 0.3540 -0.5646
vn -0.9144 -0.1423 -0.3790
vn -0.3776 -0.9226 -0.0791
vn 0.7223 -0.6694 0.1738
vn 0.7131 0.3916 0.5815
vn 0.7226 0.1400 -0.6770
vn 0.9302 -0.1577 -0.3315
vn 0.8455 -0.3714 -0.3838
vn 0.6424 -0.0210 -0.7660
vn 0.9383 0.0293 -0.3446
vn 0.6617 0.0416 -0.7486
vn 0.9408 0.1150 -0.3188
vn 0.6868 0.0774 -0.7227
vn 0.9437 0.1437 -0.2980
vn 0.7829 0.0595 -0.6193
vn 0.9567 0.2533 -0.1435
vn 0.9517 0.2643 -0.1560
vn -0.9664 -0.1333 0.2199
vn -0.9650 -0.0793 0.2500
vn -0.8665 -0.4724 0.1612
vn -0.5235 -0.8517 0.0233
vn -0.6629 -0.5125 0.5458
vn 0.3840 0.7295 0.5661
vn 0.5290 0.8465 -0.0593
vn 0.2910 0.9367 0.1945
vn 0.7052 0.1615 -0.6904
vn -0.3603 0.7318 0.5785
vn 0.0943 0.9425 0.3205
vn 0.9263 -0.2644 0.2684
vn 0.9562 0.0511 0.2883
vn 0.9422 0.1561 0.2964
vn 0.9343 0.1862 0.3039
vn 0.8855 0.3541 0.3010
vn 0.5415 -0.2909 0.7888
vn 0.5615 0.0278 0.8270
vn -0.2575 0.9350 -0.2440
usemtl pants.png.005
s 1
f 3/1/1 4/2/2 5/3/3
f 6/4/4 4/2/2 3/1/1
f 6/4/4 7/5/5 4/2/2
f 8/6/6 7/5/5 6/4/4
f 8/6/6 9/7/7 7/5/5
f 10/8/8 9/7/7 8/6/6
f 13/9/9 12/10/10 11/11/11
f 13/9/9 14/12/12 12/10/10
f 15/13/13 14/12/12 13/9/9
f 15/13/13 16/14/14 14/12/12
f 17/15/15 16/14/14 15/13/13
f 17/15/15 18/16/16 16/14/14
f 22/17/17 23/18/18 24/19/19
f 25/20/20 23/18/18 22/17/17
f 25/20/20 26/21/21 23/18/18
f 27/22/22 26/21/21 25/20/20
f 27/22/22 28/23/23 26/21/21
f 30/24/24 31/25/25 29/26/26
f 32/27/27 33/28/28 34/29/29
f 37/30/30 26/21/21 28/23/23
f 5/31/3 38/32/31 39/33/32
f 38/32/31 5/31/3 4/2/2
f 33/28/28 32/27/27 41/34/33
f 42/35/34 34/29/29 33/28/28
f 46/36/35 45/37/36 43/38/37
f 46/36/35 47/39/38 45/37/36
f 48/40/39 47/39/38 46/36/35
f 48/40/39 49/41/40 47/39/38
f 50/42/41 49/41/40 48/40/39
f 50/42/41 51/43/42 49/41/40
f 52/44/43 51/43/42 50/42/41
f 52/44/43 53/45/44 51/43/42
f 41/46/33 53/45/44 52/44/43
f 41/46/33 54/47/45 53/45/44
f 32/48/27 54/47/45 41/46/33
f 32/48/27 44/49/46 54/47/45
f 34/29/29 44/49/46 32/48/27
f 56/50/47 37/30/30 55/51/48
f 56/50/47 26/21/21 37/30/30
f 10/8/8 26/21/21 56/50/47
f 10/8/8 23/18/18 26/21/21
f 8/6/6 23/18/18 10/8/8
f 8/6/6 24/19/19 23/18/18
f 6/4/4 24/19/19 8/6/6
f 6/4/4 57/52/49 24/19/19
f 3/1/1 57/52/49 6/4/4
f 3/1/1 58/53/50 57/52/49
f 5/54/3 58/53/50 3/1/1
f 5/54/3 59/55/51 58/53/50
f 39/33/32 59/55/51 5/54/3
f 39/33/32 60/56/52 59/55/51
f 61/57/53 62/58/54 63/59/55
f 64/60/56 62/58/54 61/57/53
f 64/60/56 65/61/57 62/58/54
f 66/62/58 65/61/57 64/60/56
f 66/62/58 67/63/59 65/61/57
f 68/64/60 67/63/59 66/62/58
f 68/64/60 69/65/61 67/63/59
f 31/25/25 69/65/61 68/64/60
f 31/25/25 70/66/62 69/65/61
f 30/24/24 70/66/62 31/25/25
f 30/24/24 40/67/63 70/66/62
f 36/68/64 46/69/35 43/70/37
f 71/71/65 46/69/35 36/68/64
f 71/71/65 48/72/39 46/69/35
f 72/73/66 48/72/39 71/71/65
f 72/73/66 50/74/41 48/72/39
f 73/75/67 50/74/41 72/73/66
f 73/75/67 52/76/43 50/74/41
f 74/77/68 52/76/43 73/75/67
f 74/77/68 41/78/33 52/76/43
f 33/79/28 75/80/69 42/81/34
f 76/82/70 75/80/69 33/79/28
f 76/82/70 77/83/71 75/80/69
f 78/84/72 77/83/71 76/82/70
f 42/35/34 35/85/73 2/86/74 34/29/29
f 80/87/75 35/85/73 42/35/34
f 81/88/76 80/89/75 79/90/77
f 81/88/76 82/91/78 80/89/75
f 61/92/53 82/91/78 81/88/76
f 61/92/53 63/93/55 82/91/78
f 41/94/33 76/82/70 33/95/28
f 74/96/68 76/82/70 41/94/33
f 74/96/68 78/97/72 76/82/70
f 60/56/52 78/97/72 74/96/68
f 60/56/52 79/90/77 78/97/72
f 39/33/32 79/90/77 60/56/52
f 39/33/32 81/98/76 79/90/77
f 38/32/31 81/98/76 39/33/32
f 38/32/31 61/57/53 81/98/76
f 4/2/2 61/57/53 38/32/31
f 4/2/2 64/60/56 61/57/53
f 7/5/5 64/60/56 4/2/2
f 7/5/5 66/62/58 64/60/56
f 9/7/7 66/62/58 7/5/5
f 9/7/7 68/64/60 66/62/58
f 10/8/8 68/64/60 9/7/7
f 10/8/8 31/25/25 68/64/60
f 56/50/47 31/25/25 10/8/8
f 56/50/47 29/26/26 31/25/25
f 55/51/48 29/26/26 56/50/47
f 75/99/69 83/100/79 42/101/34
f 44/49/46 34/29/29 1/102/80
f 2/86/74 1/102/80 34/29/29
f 82/103/78 35/85/73 80/87/75
f 82/103/78 2/86/74 35/85/73
f 63/59/55 2/86/74 82/103/78
f 63/59/55 1/102/80 2/86/74
f 62/58/54 1/102/80 63/59/55
f 62/58/54 84/104/81 1/102/80
f 65/61/57 84/104/81 62/58/54
f 65/61/57 85/105/82 84/104/81
f 67/63/59 85/105/82 65/61/57
f 67/63/59 86/106/83 85/105/82
f 69/65/61 86/106/83 67/63/59
f 69/65/61 87/107/84 86/106/83
f 70/66/62 87/107/84 69/65/61
f 70/66/62 88/108/85 87/107/84
f 40/67/63 88/108/85 70/66/62
f 40/67/63 89/109/86 88/108/85
f 84/104/81 44/110/46 1/102/80
f 84/104/81 90/111/87 44/110/46
f 85/105/82 90/111/87 84/104/81
f 85/105/82 91/112/88 90/111/87
f 86/106/83 91/112/88 85/105/82
f 86/106/83 18/16/16 91/112/88
f 87/107/84 18/16/16 86/106/83
f 87/107/84 16/14/14 18/16/16
f 88/108/85 16/14/14 87/107/84
f 88/108/85 14/12/12 16/14/14
f 89/109/86 14/12/12 88/108/85
f 89/109/86 12/113/10 14/12/12
f 25/20/20 21/114/89 27/22/22
f 25/20/20 20/115/90 21/114/89
f 22/17/17 20/115/90 25/20/20
f 22/17/17 19/116/91 20/115/90
f 24/19/19 19/116/91 22/17/17
f 24/19/19 36/68/64 19/116/91
f 57/52/49 36/68/64 24/19/19
f 57/52/49 71/71/65 36/68/64
f 58/53/50 71/71/65 57/52/49
f 58/53/50 72/73/66 71/71/65
f 59/55/51 72/73/66 58/53/50
f 59/55/51 73/117/67 72/73/66
f 60/56/52 73/117/67 59/55/51
f 60/56/52 74/96/68 73/117/67
f 36/68/64 43/70/37 19/116/91
f 47/39/38 15/13/13 45/37/36
f 47/39/38 17/15/15 15/13/13
f 49/41/40 17/15/15 47/39/38
f 49/41/40 18/16/16 17/15/15
f 51/43/42 18/16/16 49/41/40
f 51/43/42 91/112/88 18/16/16
f 53/45/44 91/112/88 51/43/42
f 53/45/44 90/118/87 91/112/88
f 54/47/45 90/118/87 53/45/44
f 54/47/45 44/49/46 90/118/87
f 55/51/48 37/30/30 28/23/23 29/26/26
f 27/22/22 21/114/89 20/115/90 28/23/23
f 28/23/23 20/115/90 29/26/26
f 30/24/24 29/26/26 20/115/90
f 40/67/63 30/24/24 20/115/90
f 89/109/86 40/67/63 20/115/90
f 20/115/90 19/116/91 89/109/86
f 89/109/86 19/116/91 12/113/10
f 12/113/10 19/116/91 11/11/11
f 13/9/9 11/11/11 19/116/91
f 19/116/91 43/70/37 13/9/9
f 13/9/9 43/70/37 15/13/13
f 45/37/36 15/13/13 43/38/37
f 1/1/1 2/2/2 3/3/3
f 4/4/4 2/2/2 1/1/1
f 5/5/5 6/6/6 7/7/7
f 8/8/8 6/6/6 5/5/5
f 8/8/8 9/9/9 6/6/6
f 10/10/10 9/9/9 8/8/8
f 10/10/10 11/11/11 9/9/9
f 12/12/12 11/11/11 10/10/10
f 13/13/13 14/14/14 15/15/15
f 16/16/16 14/14/14 13/13/13
f 16/16/16 17/17/17 14/14/14
f 18/18/18 17/17/17 16/16/16
f 18/18/18 19/19/19 17/17/17
f 20/20/20 21/21/21 22/22/22
f 23/23/23 21/21/21 20/20/20
f 23/23/23 24/24/24 21/21/21
f 25/25/25 24/24/24 23/23/23
f 25/25/25 26/26/26 24/24/24
f 27/27/27 28/28/28 29/29/29
f 4/30/4 1/31/1 30/32/30
f 15/33/15 31/34/31 13/13/13
f 32/35/32 24/24/24 26/26/26
f 7/36/7 33/37/33 34/38/34
f 26/26/26 15/39/15 32/35/32
f 33/37/33 7/36/7 6/6/6
f 28/28/28 27/27/27 35/40/35
f 36/41/36 37/42/37 38/43/38
f 39/44/39 40/45/40 31/34/31
f 41/46/41 40/45/40 39/44/39
f 41/46/41 42/47/42 40/45/40
f 43/48/43 42/47/42 41/46/41
f 43/48/43 44/49/44 42/47/42
f 45/50/45 44/49/44 43/48/43
f 45/50/45 46/51/46 44/49/44
f 47/52/47 46/51/46 45/50/45
f 47/52/47 48/53/48 46/51/46
f 35/54/35 48/53/48 47/52/47
f 35/54/35 49/55/49 48/53/48
f 27/56/27 49/55/49 35/54/35
f 27/56/27 37/57/37 49/55/49
f 29/29/29 37/57/37 27/56/27
f 29/29/29 38/43/38 37/57/37
f 50/58/50 32/35/32 15/59/15
f 50/58/50 24/24/24 32/35/32
f 12/12/12 24/24/24 50/58/50
f 12/12/12 21/21/21 24/24/24
f 10/10/10 21/21/21 12/12/12
f 10/10/10 22/22/22 21/21/21
f 8/8/8 22/22/22 10/10/10
f 8/8/8 51/60/51 22/22/22
f 5/5/5 51/60/51 8/8/8
f 5/5/5 52/61/52 51/60/51
f 7/62/7 52/61/52 5/5/5
f 7/62/7 53/63/53 52/61/52
f 34/38/34 53/63/53 7/62/7
f 34/38/34 54/64/54 53/63/53
f 55/65/55 56/66/56 57/67/57
f 58/68/58 56/66/56 55/65/55
f 58/68/58 59/69/59 56/66/56
f 60/70/60 59/69/59 58/68/58
f 60/70/60 61/71/61 59/69/59
f 62/72/62 61/71/61 60/70/60
f 62/72/62 63/73/63 61/71/61
f 64/74/64 63/73/63 62/72/62
f 64/74/64 65/75/65 63/73/63
f 15/76/15 65/75/65 64/74/64 66/77/66
f 67/78/67 39/79/39 31/80/31
f 67/78/67 41/81/41 39/79/39
f 68/82/68 41/81/41 67/78/67
f 68/82/68 43/83/43 41/81/41
f 69/84/69 43/83/43 68/82/68
f 69/84/69 45/85/45 43/83/43
f 70/86/70 45/85/45 69/84/69
f 70/86/70 47/87/47 45/85/45
f 71/88/71 47/87/47 70/86/70
f 71/88/71 35/89/35 47/87/47
f 72/90/72 73/91/73 74/92/74
f 72/90/72 75/93/75 73/91/73
f 55/94/55 75/93/75 72/90/72
f 55/94/55 57/95/57 75/93/75
f 35/96/35 76/97/76 28/98/28
f 71/99/71 76/97/76 35/96/35
f 71/99/71 77/100/77 76/97/76
f 54/64/54 77/100/77 71/99/71
f 54/64/54 74/92/74 77/100/77
f 34/38/34 74/92/74 54/64/54
f 34/38/34 72/101/72 74/92/74
f 33/37/33 72/101/72 34/38/34
f 33/37/33 55/65/55 72/101/72
f 6/6/6 55/65/55 33/37/33
f 6/6/6 58/68/58 55/65/55
f 9/9/9 58/68/58 6/6/6
f 9/9/9 60/70/60 58/68/58
f 11/11/11 60/70/60 9/9/9
f 11/11/11 62/72/62 60/70/60
f 12/12/12 62/72/62 11/11/11
f 12/12/12 64/74/64 62/72/62
f 50/58/50 64/74/64 12/12/12
f 50/58/50 15/102/15 66/103/66 64/74/64
f 75/104/75 30/32/30 73/105/73
f 75/104/75 4/30/4 30/32/30
f 57/67/57 4/30/4 75/104/75
f 57/67/57 2/106/2 4/30/4
f 56/66/56 2/106/2 57/67/57
f 56/66/56 78/107/78 2/106/2
f 59/69/59 78/107/78 56/66/56
f 59/69/59 79/108/79 78/107/78
f 61/71/61 79/108/79 59/69/59
f 61/71/61 80/109/80 79/108/79
f 63/73/63 80/109/80 61/71/61
f 63/73/63 81/110/81 80/109/80
f 65/75/65 81/110/81 63/73/63
f 65/75/65 82/111/82 81/110/81
f 15/112/15 82/111/82 65/75/65
f 2/106/2 36/41/36 3/113/3
f 2/106/2 37/42/37 36/41/36
f 78/107/78 37/42/37 2/106/2
f 78/107/78 83/114/83 37/42/37
f 79/108/79 83/114/83 78/107/78
f 79/108/79 84/115/84 83/114/83
f 80/109/80 84/115/84 79/108/79
f 80/109/80 19/19/19 84/115/84
f 81/110/81 19/19/19 80/109/80
f 81/110/81 17/17/17 19/19/19
f 82/111/82 17/17/17 81/110/81
f 82/111/82 14/14/14 17/17/17
f 15/116/15 14/14/14 82/111/82
f 26/26/26 85/117/85 15/118/15
f 25/25/25 85/117/85 26/26/26
f 25/25/25 31/119/31 85/117/85
f 23/23/23 31/119/31 25/25/25
f 20/20/20 31/120/31 23/23/23
f 22/22/22 31/121/31 20/20/20
f 22/22/22 67/78/67 31/121/31
f 51/60/51 67/78/67 22/22/22
f 51/60/51 68/82/68 67/78/67
f 52/61/52 68/82/68 51/60/51
f 52/61/52 69/84/69 68/82/68
f 53/63/53 69/84/69 52/61/52
f 53/63/53 70/122/70 69/84/69
f 54/64/54 70/122/70 53/63/53
f 54/64/54 71/99/71 70/122/70
f 42/47/42 16/16/16 40/45/40
f 42/47/42 18/18/18 16/16/16
f 44/49/44 18/18/18 42/47/42
f 44/49/44 19/19/19 18/18/18
f 46/51/46 19/19/19 44/49/44
f 46/51/46 84/115/84 19/19/19
f 48/53/48 84/115/84 46/51/46
f 48/53/48 83/123/83 84/115/84
f 49/55/49 83/123/83 48/53/48
f 49/55/49 37/57/37 83/123/83
f 31/34/31 15/118/15 85/117/85
f 16/16/16 13/13/13 31/34/31 40/45/40

View File

@ -0,0 +1,13 @@
# Blender MTL File: 'Full_remake.blend'
# Material Count: 1
newmtl pants.png.002
Ns 92.156863
Ka 0.000000 0.000000 0.000000
Kd 0.800000 0.800000 0.800000
Ks 0.250000 0.250000 0.250000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
map_Kd pants.png

View File

@ -0,0 +1,272 @@
# Blender v2.78 (sub 0) OBJ File: 'Full_remake.blend'
# www.blender.org
mtllib goku_legR.mtl
o Mesh.404_DrawCall_231.005
v -2.868948 19.284849 -1.103089
v -2.654046 21.448448 -0.748653
v -1.165034 21.336220 -1.480672
v -3.508905 19.204569 0.382987
v -3.114214 21.340710 0.734748
v -3.196019 19.022778 1.944768
v -2.784688 21.083992 2.223972
v -1.657984 20.915960 3.037105
v 1.062518 24.174778 1.291783
v 1.441321 24.604208 1.567713
v -1.155969 18.692434 3.127156
v 0.231306 20.440346 3.520150
v -2.164540 18.854668 2.723790
v -1.481101 16.080057 2.925763
v -3.636201 16.413776 1.605575
v -1.942717 13.761362 2.654280
v -4.003160 13.816885 1.160168
v -3.904684 16.539463 -0.003838
v 3.010944 23.962084 1.126976
v 2.424584 24.342396 1.971204
v 2.424892 18.370289 2.032597
v 1.591134 14.259579 0.531490
v 1.723407 13.986858 2.138353
v 1.991736 14.738779 0.899303
v 2.137142 15.749077 2.087034
v 2.764485 15.821661 0.564137
v 2.943390 18.491846 0.567412
v 3.207965 20.773058 0.546177
v 3.109288 24.463417 1.025765
v 1.688580 15.062572 -0.733291
v 1.650308 15.149340 -0.726290
v 1.084263 14.257994 -0.976946
v 2.341531 15.953905 -1.019494
v 0.681627 21.169943 -1.795449
v 1.506531 25.279507 0.183840
v 1.710903 25.248650 -0.023350
v -1.298309 19.204132 -1.749426
v -3.105738 16.545378 -1.486282
v -4.181901 13.979244 -0.430913
v -1.417017 16.395271 -2.071722
v -1.396514 14.390347 -2.214160
v -3.133063 14.270258 -1.822084
v 0.550150 16.204372 -2.107341
v 0.599899 18.983505 -1.955046
v 2.393082 18.688004 -0.983614
v 2.460543 21.020260 -0.907571
v 2.768272 24.840399 0.853376
v 0.538071 14.475813 -2.068935
v 1.136643 25.552120 0.396969
v 1.115064 25.622540 0.620813
v 0.630953 25.271051 0.430549
v 0.284704 24.663168 0.913682
v 0.537529 24.913460 1.369058
v 0.369551 15.904594 2.742700
v -0.118277 13.860155 2.606006
v 0.692037 18.520206 2.819758
v 2.013036 24.324469 1.548359
vt 0.4707 0.5410
vt 0.4707 0.6895
vt 0.5488 0.6895
vt 0.3848 0.5410
vt 0.3809 0.6855
vt 0.3066 0.5410
vt 0.3066 0.6816
vt 0.2519 0.6777
vt 0.2168 0.7559
vt 0.1816 0.6777
vt 0.2090 0.5410
vt 0.2090 0.6152
vt 0.2559 0.5410
vt 0.2090 0.4473
vt 0.3066 0.4473
vt 0.2129 0.3613
vt 0.3066 0.3613
vt 0.3848 0.4473
vt 0.9199 0.6387
vt 0.9707 0.6387
vt 0.9199 0.5410
vt 0.8262 0.3613
vt 0.9082 0.3613
vt 0.8268 0.3073
vt 0.9082 0.4473
vt 0.8262 0.4473
vt 0.8262 0.5410
vt 0.8574 0.6426
vt 0.9160 0.6797
vt 0.7357 0.3073
vt 0.7354 0.2803
vt 0.7363 0.3613
vt 0.7363 0.4473
vt 0.6543 0.6855
vt 0.6504 0.8105
vt 0.7402 0.7480
vt 0.5488 0.5410
vt 0.4707 0.4473
vt 0.3848 0.3613
vt 0.5488 0.4473
vt 0.5488 0.3613
vt 0.4707 0.3613
vt 0.6426 0.4473
vt 0.6465 0.5410
vt 0.7363 0.5410
vt 0.7598 0.6699
vt 0.8418 0.6855
vt 0.6426 0.3613
vt 0.6504 0.8418
vt 0.5488 0.8496
vt 0.4707 0.8496
vt 0.3789 0.8384
vt 0.2876 0.8191
vt 0.9863 0.4473
vt 0.9863 0.3613
vt 0.9824 0.5410
vt 0.9941 0.6426
vt 0.1660 0.6230
vt 0.1465 0.5410
vt 0.1465 0.4473
vt 0.1504 0.3613
vn -0.6888 0.1735 -0.7039
vn -0.6944 0.4337 -0.5742
vn -0.2736 0.3363 -0.9011
vn -0.9823 0.1677 -0.0833
vn -0.8921 0.4510 0.0286
vn -0.8369 0.0810 0.5413
vn -0.7299 0.3756 0.5712
vn -0.3836 0.3089 0.8703
vn -0.5159 0.5919 0.6193
vn -0.1509 0.5710 0.8070
vn -0.1525 -0.0886 0.9843
vn 0.2753 0.0691 0.9589
vn -0.5011 -0.0187 0.8652
vn -0.2182 -0.0658 0.9737
vn -0.8325 0.0432 0.5524
vn -0.2176 -0.7147 0.6647
vn -0.6878 -0.6544 0.3142
vn -0.9781 0.1443 -0.1500
vn 0.8332 -0.0304 0.5521
vn -0.0573 0.0103 0.9983
vn 0.7276 -0.0130 0.6859
vn 0.2104 0.1776 0.9613
vn 0.5705 -0.6285 0.5286
vn -0.8310 0.5195 0.1990
vn 0.7312 -0.1966 0.6532
vn 0.9401 -0.3390 0.0360
vn 0.9987 -0.0514 0.0004
vn 0.9942 -0.0419 0.0995
vn 0.6838 0.1120 -0.7210
vn -0.9577 0.1333 0.2550
vn -0.9088 -0.4079 0.0878
vn -0.3935 -0.8866 0.2432
vn 0.7969 -0.2412 -0.5538
vn 0.1504 0.2248 -0.9627
vn -0.3300 0.4715 -0.8178
vn -0.0036 0.4514 -0.8923
vn -0.2374 0.1271 -0.9631
vn -0.6357 0.1498 -0.7573
vn -0.7552 -0.5990 -0.2663
vn -0.1649 0.0966 -0.9816
vn -0.0383 -0.6107 -0.7910
vn -0.4190 -0.5560 -0.7178
vn 0.2670 0.0197 -0.9635
vn 0.2077 0.0671 -0.9759
vn 0.7601 0.0069 -0.6497
vn 0.7041 0.0951 -0.7037
vn 0.6832 0.2074 -0.7001
vn 0.2598 -0.5923 -0.7627
vn -0.6175 0.5758 -0.5359
vn -0.6379 0.5507 -0.5384
vn 0.2270 0.1476 -0.9626
vn -0.7079 0.6693 0.2258
vn -0.3191 0.4616 0.8277
vn 0.2162 -0.0804 0.9730
vn 0.1366 -0.7594 0.6361
vn 0.3450 -0.0665 0.9363
vn -0.1245 0.2003 0.9718
usemtl pants.png.002
s 1
f 1/1/1 2/2/2 3/3/3
f 4/4/4 2/2/2 1/1/1
f 4/4/4 5/5/5 2/2/2
f 6/6/6 5/5/5 4/4/4
f 6/6/6 7/7/7 5/5/5
f 8/8/8 7/7/7 6/6/6
f 8/8/8 9/9/9 7/7/7
f 10/10/10 9/9/9 8/8/8
f 8/8/8 11/11/11 12/12/12
f 13/13/13 11/11/11 8/8/8
f 13/13/13 14/14/14 11/11/11
f 15/15/15 14/14/14 13/13/13
f 15/15/15 16/16/16 14/14/14
f 17/17/17 16/16/16 15/15/15
f 18/18/18 4/4/4 1/1/1
f 15/15/15 4/4/4 18/18/18
f 15/15/15 6/6/6 4/4/4
f 13/13/13 6/6/6 15/15/15
f 13/13/13 8/8/8 6/6/6
f 10/10/10 8/8/8 12/12/12
f 19/19/19 20/20/20 21/21/21
f 15/15/15 18/18/18 17/17/17
f 22/22/22 23/23/23 24/24/24
f 22/22/22 25/25/25 23/23/23
f 26/26/26 25/25/25 22/22/22
f 26/26/26 21/21/21 25/25/25
f 27/27/27 21/21/21 26/26/26
f 27/27/27 19/19/19 21/21/21
f 28/28/28 19/19/19 27/27/27
f 28/28/28 29/29/29 19/19/19
f 30/30/30 24/24/24 31/31/31
f 30/30/30 22/22/22 24/24/24
f 32/32/32 22/22/22 30/30/30
f 32/32/32 26/26/26 22/22/22
f 33/33/33 26/26/26 32/32/32
f 33/33/33 27/27/27 26/26/26
f 34/34/34 35/35/35 36/36/36
f 34/34/34 3/3/3 35/35/35
f 37/37/37 3/3/3 34/34/34
f 37/37/37 1/1/1 3/3/3
f 38/38/38 1/1/1 37/37/37
f 38/38/38 18/18/18 1/1/1
f 39/39/39 18/18/18 38/38/38
f 39/39/39 17/17/17 18/18/18
f 40/40/40 41/41/41 42/42/42
f 40/40/40 43/43/43 41/41/41
f 44/44/44 43/43/43 40/40/40
f 44/44/44 45/45/45 43/43/43
f 34/34/34 45/45/45 44/44/44
f 34/34/34 46/46/46 45/45/45
f 36/36/36 46/46/46 34/34/34
f 36/36/36 47/47/47 46/46/46
f 43/43/43 48/48/48 41/41/41
f 43/43/43 33/33/33 48/48/48
f 45/45/45 33/33/33 43/43/43
f 45/45/45 27/27/27 33/33/33
f 46/46/46 27/27/27 45/45/45
f 46/46/46 28/28/28 27/27/27
f 47/47/47 28/28/28 46/46/46
f 47/47/47 29/29/29 28/28/28
f 3/3/3 49/49/49 35/35/35
f 3/3/3 50/50/50 49/49/49
f 2/2/2 50/50/50 3/3/3
f 2/2/2 51/51/51 50/50/50
f 5/5/5 51/51/51 2/2/2
f 5/5/5 52/52/52 51/51/51
f 7/7/7 52/52/52 5/5/5
f 7/7/7 53/53/53 52/52/52
f 9/9/9 53/53/53 7/7/7
f 23/23/23 54/54/54 55/55/55
f 25/25/25 54/54/54 23/23/23
f 25/25/25 56/56/56 54/54/54
f 21/21/21 56/56/56 25/25/25
f 21/21/21 57/57/57 56/56/56
f 20/20/20 57/57/57 21/21/21
f 12/12/12 57/58/57 10/10/10
f 12/12/12 56/59/56 57/58/57
f 11/11/11 56/59/56 12/12/12
f 11/11/11 54/60/54 56/59/56
f 14/14/14 54/60/54 11/11/11
f 14/14/14 55/61/55 54/60/54
f 16/16/16 55/61/55 14/14/14
f 38/38/38 42/42/42 39/39/39
f 38/38/38 40/40/40 42/42/42
f 37/37/37 40/40/40 38/38/38
f 37/37/37 44/44/44 40/40/40
f 34/34/34 44/44/44 37/37/37
f 48/48/48 32/32/32 30/30/30
f 33/33/33 32/32/32 48/48/48
f 42/42/42 41/41/41 23/23/23 55/55/55 16/16/16 17/17/17 39/39/39
f 41/41/41 48/48/48 23/23/23

File diff suppressed because it is too large Load Diff

0
Blender/DBZ/Goku/pants.png 100644 → 100755
View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

0
Blender/DBZ/Goku/shirt.png 100644 → 100755
View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

0
src/HELLO.py 100644 → 100755
View File

163
src/RUN.py 100644 → 100755
View File

@ -5,24 +5,32 @@ import math,random
import pi3d
import avatars
import maps
import objects
#import sys
from serial_data import Serial_data
#sys.path.insert(0, "../python-vrzero")
from vrzero import engine
USE_SERIAL = True
USE_STEREO = False
USE_TUNNEL = True
SHOW_STAT = True
###### Select the mode here
USE_SERIAL = False # try the app without a serial connection, keyboard still work
USE_STEREO = False # Mode Stereoscopic
USE_TUNNEL = True # If mode stereo is on, use Tunnel effect
SHOW_STAT = False # Show FPS stat (Calibrated for Raspberry Pi)
DEFAULT_SCREEN_WIDTH=1920
DEFAULT_SCREEN_HEIGHT=1080
# Change screen size to adapt your config
DEFAULT_SCREEN_WIDTH=300
DEFAULT_SCREEN_HEIGHT=200
DEFAULT_EYE_SEPERATION=0.65
# height of the camera
DEFAULT_AVATAR_EYE_HEIGHT = 4.0
DEFAULT_AVATAR_MOVEMENT_SPEED = 1.0
DEFAULT_AVATAR_MOVEMENT_SPEED = 0.6
# two maps for now, so Hall (True) or Forest (False) :)
MAP_HALL = True
# Select your Avatars here (you can manualy add more)
AVATAR_1 = 'Lego'
AVATAR_2 = 'Roshi'
if(USE_STEREO):
engine.show_stats=SHOW_STAT
@ -33,12 +41,9 @@ if(USE_STEREO):
engine.hmd_screen_width = DEFAULT_SCREEN_WIDTH
engine.hmd_screen_height = DEFAULT_SCREEN_HEIGHT
engine.hmd_eye_seperation = DEFAULT_EYE_SEPERATION
engine.init()
#engine.use_crosseyed_method=False
# Setup display and initialise pi3d
if(USE_STEREO == False):
DISPLAY = pi3d.Display.create()
@ -50,30 +55,53 @@ if(USE_STEREO == False):
#========================================
# Create Hero & map
# Create Hero & map, Select your avatars here
#avatar = avatars.cloud()
avatar = avatars.link()
avatar2 = avatars.roshi()
if AVATAR_1 == 'Link':
avatar = avatars.link()
elif AVATAR_1 == 'Cloud':
avatar = avatars.cloud()
elif AVATAR_1 == 'Lego':
avatar = avatars.lego()
elif AVATAR_1 == 'Roshi':
avatar = avatars.roshi()
elif AVATAR_1 == 'Goku':
avatar = avatars.goku()
elif AVATAR_1 == 'Goomba':
avatar = avatars.goomba()
if AVATAR_2 == 'Link':
avatar2 = avatars.link()
elif AVATAR_2 == 'Cloud':
avatar2 = avatars.cloud()
elif AVATAR_2 == 'Lego':
avatar2 = avatars.lego()
elif AVATAR_2 == 'Roshi':
avatar2 = avatars.roshi()
elif AVATAR_2 == 'Goku':
avatar2 = avatars.goku()
if MAP_HALL:
map1 = maps.hall()
else:
map1 = maps.forest()
#avatar = avatars.goku()
#avatar camera
rot = 0.0
tilt = -7.0
bulle = objects.object()
#avatar
step = [0.0, 0.0, 0.0]
xm = 0.0
zm = 0.0
if MAP_HALL:
avhgt = 15
avhgt = 15 # doit etre DEFAULT_AVATAR_EYE_HEIGHT
ym = avhgt
else:
avhgt = 9#9
avhgt = 9
ym = map1.mymap.calcHeight(xm, zm) + avhgt
step = [0.0, 0.0, 0.0]
# camera position
rot = 0.0
tilt = -7.0
norm = None
crab = False
roll = 0.0
@ -82,20 +110,21 @@ roll = 0.0
#distance_hero = 15
synchro_serial=0
movement = 0
mv_tmp = 0
mv_run = 0
mv_run_diff = 0
avatar_speed = 0.6
avatar_speed = DEFAULT_AVATAR_MOVEMENT_SPEED
lx = 0
ly = 0
lz = 0
orientation = 0
camera_distance = -13
shader = pi3d.Shader("uv_light")
shader_light = pi3d.Shader("uv_light")
coffimg = pi3d.Texture("../textures/COFFEE.PNG")
earth = pi3d.Texture("../textures/rock1.png")
flatsh = pi3d.Shader("uv_flat")
#font = pi3d.Pngfont("../fonts/GillSansMT.png", (221,0,170,255))
font = pi3d.Pngfont("../fonts/GillSansMT.png", (255,80,0,255))
mystring = pi3d.String(font=font, string="NOW NO EXCUSES", size=0.8, x=2, y=2, z=2, is_3d=True)
mystring2 = pi3d.String(font=font, string="BE YOUR HERO !!!", size=0.8, x=2, y=2, z=2, is_3d=True)
@ -119,10 +148,6 @@ pos_forarmR = [0, 0, 0]
pos_armL = [0, 0, 0]
pos_forarmL = [0, 0, 0]
body_orientation = 0
joystick_h_axis_pos = 0.0
joystick_v_axis_pos = 0.0
joystick_right_h_axis_pos = 0.0
joystick_right_v_axis_pos = 0.0
timer =0
keep_running = True
@ -132,7 +157,7 @@ if(USE_STEREO == False):
CAMERA = pi3d.Camera(absolute=False)
def roger_handler(sensor, Euler0, Euler1, Euler2):
global pos_armR, pos_forarmR, pos_armL, pos_forarmL, timer, body_orientation, step, crab, mv_run, mv_run_diff, xm, zm
global pos_armR, pos_forarmR, pos_armL, pos_forarmL, timer, body_orientation, mv_run, mv_run_diff, xm, zm
timer += 1
print("Sensor:", sensor)
if timer == 13:
@ -150,7 +175,6 @@ def roger_handler(sensor, Euler0, Euler1, Euler2):
avatar.armR.rotateToY(math.degrees(-Euler0))
#pos_forarmR = [-Euler0 - pos_armL[0], -Euler0 - pos_armL[1], -Euler0 - pos_armL[2]]
elif sensor == 'D':
avatar.head.rotateToZ(math.degrees(-Euler1))
avatar.head.rotateToX(math.degrees(-Euler2))
@ -159,10 +183,7 @@ def roger_handler(sensor, Euler0, Euler1, Euler2):
#if timer == 1:
# print(" Avant : E0 = ", math.degrees(Euler0), " E1 = ", math.degrees(Euler1), " E2 = ", math.degrees(Euler2))
elif sensor == 'J':
#print("JOY {:03.2f} {:03.2f}".format(Euler0, Euler1))
if Euler0 <= 128 and Euler1 <= 128:
body_orientation = 270 - Euler1 #
elif Euler0 >= 128 and Euler1 <= 128:
@ -200,8 +221,6 @@ def roger_handler(sensor, Euler0, Euler1, Euler2):
#print(xm, ym, zm, "Euler : ",joystick_v_axis_pos, joystick_h_axis_pos )
avatar.center.rotateToY(body_orientation)
else:
print("unhandled sensor:", sensor)
@ -232,26 +251,24 @@ def update():
#print(" Position : ", xm, " === ", ym, " === ",zm, " === ")
step = [0.0, 0.0, 0.0]
map1.myecube.position(xm, ym, zm)
roll = 0.0
#map1.mymap.position(0.0, 0.0, 0.0)
#avatar.body.position(xm, mymap.calcHeight(xm, zm+distance_hero)+5.5, zm+distance_hero)
if MAP_HALL:
#avatar.body.position(xm, ym+0, zm) # goku
avatar.center.position(xm, ym-5, zm) # others
avatar2.center.position(-10, 10, 15) # equivalent a -13, 15 et 0
mystring.position(-10, ym+2.5, 14.9)
mystring2.position(-10, ym+1.5, 14.9)
mycone.position(-10, ym+2, 15)
myPlane.position(-10, ym+2, 15)
#bulle.Position(xm,ym,zm)
mystring.position(-10, 18.5, 14.9)
mystring2.position(-10, 17.5, 14.9)
#bulle.mycone.position(-10, ym+2, 15)
myPlane.position(-10, 18, 15)
else:
avatar.center.position(xm, map1.mymap.calcHeight(xm, zm)+1, zm)
avatar.center.position(xm, map1.mymap.calcHeight(xm, zm), zm)
avatar2.center.position(-30, map1.mymap.calcHeight(-30, 80), 80)
print(xm, ym, zm)
#roger.body.position(0, mymap.calcHeight(0, 28)+7, 28)
#mv_run += 0.05
#print(xm, ym, zm)
if(mv_run_diff > 0):
avatar.run(mv_run, mv_run_diff)
@ -263,7 +280,8 @@ def update():
if (synchro_serial > 0):
synchro_serial -=1
mycone.rotateToY(movement)
avatar.center.rotateToY(body_orientation)
#bulle.mycone.rotateToY(movement)
mv_run_diff=0
lx = xm
@ -284,12 +302,18 @@ def update_scenario():
zm = 13
elif 14.5 <= zm and zm <= 16:
zm = 16
myPlane.draw(shader, [earth])
mystring.draw()
mystring2.draw()
#mycone.draw(shader, [coffimg])
#bulle.myPlane.draw(shader_light, [earth])
mystring.draw()
mystring2.draw()
myPlane.draw(shader_light, [earth])
def draw():
global mv_tmp
mv_tmp += 0.2
#bulle.mycone.draw(shader, [coffimg])
#avatar.handR.rotateToY(50 * math.sin(mv_tmp))
avatar2.center.draw()
avatar.center.draw()
map1.mymap.draw()
@ -299,26 +323,44 @@ def draw():
def read_inputs():
global step, crab, mymouse, my, mx, rot, tilt, keep_running, xm, zm
global mymouse, my, mx, rot, tilt, keep_running, xm, zm, mv_run, mv_run_diff, body_orientation
k = mykeys.read() # Read Keyboard inputs
#Press ESCAPE to terminate
k = mykeys.read()
if k >-1:
if k == 119: #key w forward
zm+=1
mv_run += math.fabs(avatar_speed*2/3)
mv_run_diff = 1
body_orientation = 180
elif k == 115: #kry s back
zm+= -1
elif k == 97: #key a crab left
xm+=1
elif k == 100: #key d crab right
mv_run += math.fabs(avatar_speed*2/3)
mv_run_diff = 1
body_orientation = 0
elif k == 97: #key a left
xm+= -1
mv_run += math.fabs(avatar_speed*2/3)
mv_run_diff = 1
body_orientation = 90
elif k == 100: #key d right
xm+=1
mv_run += math.fabs(avatar_speed*2/3)
mv_run_diff = 1
body_orientation = 270
elif k == 112: #key p picture
pi3d.screenshot("forestWalk" + str(scshots) + ".jpg")
scshots += 1
elif k == 10: #key RETURN
mc = 0
elif k == 27: #Escape key
keep_running = False
elif k == 27: #Escape key to exit
print("***** Try to quit *****")
if USE_STEREO:
engine.hmd.close()
engine.DISPLAY.destroy()
engine.keep_running = False
else:
keep_running = False
mykeys.close()
if USE_SERIAL:
ser.stop()
@ -336,7 +378,7 @@ def read_inputs():
def camera_update():
global xm, ym, zm, rot, tilt, step, norm, crab
global xm, ym, zm, rot, tilt, norm
camRad = [camera_distance, camera_distance, camera_distance]
#print("DBG {:03.2f},{:03.2f},{:03.2f} dist {:03.2f},{:03.2f},{:03.2f}".format(xm, ym, zm, *step))
#xm, ym, zm = CAMERA.relocate(rot, tilt, point=[xm, ym, zm], distance=step,
@ -348,11 +390,10 @@ def camera_update():
CAMERA.relocate(rot, tilt, point=[xm, map1.mymap.calcHeight(xm, zm)+3, zm], distance=camRad)
CAMERA.rotateZ(roll)
#CAMERA.relocate(rot, tilt, [0.0, 0.0, 0.0], camRad)
# Main loop
if(USE_STEREO):
while engine.DISPLAY.loop_running() or engine.keep_running:
#read_inputs()
engine.poll_inputs()
engine.update_avatar()
update()
@ -364,11 +405,11 @@ if(USE_STEREO):
else: # not stereo
while DISPLAY.loop_running() or keep_running:
read_inputs()
camera_update()
update()
update_scenario()
draw()
read_inputs()
print(" STOP STOP")

409
src/avatars.py 100644 → 100755
View File

@ -19,75 +19,114 @@ class BaseAvatar:
setattr(self, name, BaseAvatar.FakeModel())
class cloud(object):
class cloud(BaseAvatar):
def __init__(self):
self.body = pi3d.Model(file_string="../Blender/FF7/Cloud Board Piece/Cloud_Body.obj", name="monument")
#body.translate(90.0, -mymap.calcHeight(100.0, 235) + 20.0, 235.0)
super().__init__()
shader = pi3d.Shader("uv_flat")
self.center = pi3d.Model(file_string="../Blender/FF7/Cloud Board Piece/Cloud_butt.obj")
self.center.set_shader(shader)
self.center.scale(6, 6, 6)
self.body = pi3d.Model(file_string="../Blender/FF7/Cloud Board Piece/Cloud_Body.obj")
self.body.set_shader(shader)
self.body.scale(6, 6, 6)
#self.body.rotateToY(90)
self.head = pi3d.Model(file_string="../Blender/FF7/Cloud Board Piece/Cloud_head.obj", name="monument", cy=-0.88, cz=-0.0)
self.head = pi3d.Model(file_string="../Blender/FF7/Cloud Board Piece/Cloud_head.obj", cy=-0.88, cz=-0.0)
self.head.set_shader(shader)
self.butt = pi3d.Model(file_string="../Blender/FF7/Cloud Board Piece/Cloud_butt.obj", name="monument")
self.butt.set_shader(shader)
self.armR = pi3d.Model(file_string="../Blender/FF7/Cloud Board Piece/Cloud_armR.obj", name="monument", cy=-0.85, cx=0.08, cz=-0.06)
self.armR = pi3d.Model(file_string="../Blender/FF7/Cloud Board Piece/Cloud_armR.obj", cy=-0.85, cx=0.08, cz=-0.06)
self.armR.set_shader(shader)
self.forarmR = pi3d.Model(file_string="../Blender/FF7/Cloud Board Piece/Cloud_forarmR.obj", name="monument", cy=-0.85, cx=0.23, cz=-0)
self.forarmR = pi3d.Model(file_string="../Blender/FF7/Cloud Board Piece/Cloud_forarmR.obj", cy=-0.85, cx=0.23, cz=-0)
self.forarmR.set_shader(shader)
self.handR = pi3d.Model(file_string="../Blender/FF7/Cloud Board Piece/Cloud_handR.obj", name="monument", cy=-8.8, cx=4.4, cz=-0.7)
self.handR = pi3d.Model(file_string="../Blender/FF7/Cloud Board Piece/Cloud_handR.obj", cy=-8.8, cx=4.4, cz=-0.7)
self.handR.set_shader(shader)
self.armL = pi3d.Model(file_string="../Blender/FF7/Cloud Board Piece/Cloud_armL.obj", cy=-0.85, cx=-0.08, cz=-0.02)
self.armL.set_shader(shader)
self.forarmL = pi3d.Model(file_string="../Blender/FF7/Cloud Board Piece/Cloud_forarmL.obj", name="monument", cy=-0.65, cx=-0.12, cz=-0.04)
self.forarmL = pi3d.Model(file_string="../Blender/FF7/Cloud Board Piece/Cloud_forarmL.obj", cy=-0.65, cx=-0.12, cz=-0.04)
self.forarmL.set_shader(shader)
self.legL = pi3d.Model(file_string="../Blender/FF7/Cloud Board Piece/Cloud_legL.obj", name="monument", cy = -0.53)
self.legL = pi3d.Model(file_string="../Blender/FF7/Cloud Board Piece/Cloud_legL.obj", cy = -0.53)
self.legL.set_shader(shader)
#self.legL.scale(0.75, 0.75, 0.75)
self.footL = pi3d.Model(file_string="../Blender/FF7/Cloud Board Piece/Cloud_footL.obj", name="monument", cy = -0.28)
self.footL = pi3d.Model(file_string="../Blender/FF7/Cloud Board Piece/Cloud_footL.obj", cy = -0.28)
self.footL.set_shader(shader)
#self.footL.scale(1.1, 1.1, 1.1)
self.legR = pi3d.Model(file_string="../Blender/FF7/Cloud Board Piece/Cloud_legR.obj", name="monument", cy = -0.53)
self.legR = pi3d.Model(file_string="../Blender/FF7/Cloud Board Piece/Cloud_legR.obj", cy = -0.53)
self.legR.set_shader(shader)
#self.legR.scale(0.75, 0.75, 0.75)
self.footR = pi3d.Model(file_string="../Blender/FF7/Cloud Board Piece/Cloud_footR.obj", name="monument", cy = -0.28)
self.footR = pi3d.Model(file_string="../Blender/FF7/Cloud Board Piece/Cloud_footR.obj", cy = -0.28)
self.footR.set_shader(shader)
self.center.add_child(self.body)
self.body.add_child(self.head)
self.body.add_child(self.butt)
self.body.add_child(self.armR)
self.armR.add_child(self.forarmR)
self.forarmR.add_child(self.handR)
self.body.add_child(self.armL)
self.armL.add_child(self.forarmL)
self.butt.add_child(self.legL)
self.center.add_child(self.legL)
self.legL.add_child(self.footL)
self.butt.add_child(self.legR)
self.center.add_child(self.legR)
self.legR.add_child(self.footR)
def run(self, position):
self.legR.rotateToX(20 * math.sin(position))
self.legL.rotateToX(-20 * math.sin(position))
self.footR.rotateToX(-15+15 * math.sin(position))
self.footL.rotateToX(-15-15 * math.sin(position))
def run(self, position, diff):
#compute motion
if diff <= 0.25:
self.legR.rotateToX(15 * math.sin(position))
self.legL.rotateToX(-15 * math.sin(position))
self.footR.rotateToX(-15+ 15 * math.sin(position))
self.footL.rotateToX(-15 -15 * math.sin(position))
self.armL.rotateToZ(280)
self.armR.rotateToZ(80)
self.armR.rotateToY(25.0 * math.sin(position))
self.armL.rotateToY(25.0 * math.sin(position))
self.body.rotateToY(10.0 * math.sin(position))
self.head.rotateToY(-8.0 * math.sin(position))
else:
positionRun = position
self.legR.rotateToX(25 * math.sin(positionRun))
self.legL.rotateToX(-25 * math.sin(positionRun))
self.footR.rotateToX(-20+ 20 * math.sin(positionRun))
self.footL.rotateToX(-20 -20 * math.sin(positionRun))
self.armL.rotateToZ(300)
self.armR.rotateToZ(60)
self.armR.rotateToY(35.0 * math.sin(positionRun))
self.armL.rotateToY(35.0 * math.sin(positionRun))
self.body.rotateToY(10.0 * math.sin(positionRun))
self.body.rotateToX(-15.0)
self.head.rotateToY(-8.0 * math.sin(positionRun))
self.head.rotateToX(10.0)
def stand(self):
self.legR.rotateToX(0)
self.legL.rotateToX(0)
self.footR.rotateToX(0)
self.footL.rotateToX(0)
self.armL.rotateToZ(280)
self.armR.rotateToZ(80)
self.armR.rotateToY(0)
self.armL.rotateToY(0)
self.body.rotateToY(0)
self.body.rotateToX(0)
self.head.rotateToY(0)
self.head.rotateToX(0)
def jump(self, position):
pass
#compute motion
class lego(BaseAvatar):
def __init__(self):
super().__init__()
self.center = pi3d.Model(file_string="../Blender/lego/Emmet_body.obj")
shader = pi3d.Shader("uv_light")
self.center.set_shader(shader)
@ -121,7 +160,6 @@ class lego(BaseAvatar):
def jump(self, position):
pass
#compute motion
def stand(self):
@ -148,31 +186,37 @@ class roshi(BaseAvatar):
shader = pi3d.Shader("uv_flat")
self.center.set_shader(shader)
self.center.scale(0.3,0.3,0.3)
def run(self, position, diff):
pass
def stand(self):
pass
class goomba(object):
class goomba(BaseAvatar):
def __init__(self):
self.body = pi3d.Model(file_string="../Blender/goomba.goomba.obj")
super().__init__()
self.center = pi3d.Model(file_string="../Blender/goomba/goomba.obj")
shader = pi3d.Shader("uv_flat")
self.body.set_shader(shader)
self.body.scale(0.3,0.3,0.3)
self.center.set_shader(shader)
self.center.scale(0.1,0.1,0.1)
def run(self, position, diff):
self.center.rotateToX(8.0 * math.sin(position))
self.center.rotateToZ(8.0 * math.sin(position))
def stand(self):
self.body.rotateToX(0)
self.body.rotateToZ(0)
class link(object):
class link(BaseAvatar):
def __init__(self):
super().__init__()
self.center = pi3d.Model(file_string="../Blender/Zelda/Custom_Link/Link_full_butt.obj")
shader = pi3d.Shader("uv_flat")
self.center.set_shader(shader)
self.center.scale(0.6, 0.6, 0.6)
self.body = pi3d.Model(file_string="../Blender/Zelda/Custom_Link/Link_body.obj", cy=-7.4)
#body.translate(90.0, -mymap.calcHeight(100.0, 235) + 20.0, 235.0)
self.body.set_shader(shader)
#self.body.rotateToY(90)
self.head = pi3d.Model(file_string="../Blender/Zelda/Custom_Link/Link_head.obj", cy=-10, cz=-0.5)
self.head.set_shader(shader)
@ -192,25 +236,21 @@ class link(object):
self.legL = pi3d.Model(file_string="../Blender/Zelda/Custom_Link/Link_legL.obj", cy = -6)
self.legL.set_shader(shader)
#self.legL.scale(0.75, 0.75, 0.75)
self.footL = pi3d.Model(file_string="../Blender/Zelda/Custom_Link/Link_footL.obj", cy = -3)
self.footL.set_shader(shader)
#self.footL.scale(1.1, 1.1, 1.1)
self.legR = pi3d.Model(file_string="../Blender/Zelda/Custom_Link/Link_legR.obj", cy = -6)
self.legR.set_shader(shader)
#self.legR.scale(0.75, 0.75, 0.75)
self.footR = pi3d.Model(file_string="../Blender/Zelda/Custom_Link/Link_footR.obj", cy = -3)
self.footR.set_shader(shader)
#self.footR.scale(1.0, 1.0, 1.0)
self.center.add_child(self.body)
self.body.add_child(self.head)
self.body.add_child(self.armR)
self.armR.add_child(self.forarmR)
self.forarmR.add_child(self.handR)
self.center.add_child(self.body)
#self.body.add_child(self.legs)
self.body.add_child(self.armL)
self.armL.add_child(self.forarmL)
self.forarmL.add_child(self.handL)
@ -271,132 +311,171 @@ class link(object):
self.head.rotateToX(0)
def jump(self, position):
#compute motion
self.armL.rotateToX(20 * math.sin(position))
self.armR.rotateToX(-20 * math.sin(position))
class goku(object):
class goku(BaseAvatar):
def __init__(self):
def __init__(self):
super().__init__()
shader = pi3d.Shader("uv_light")
self.body = pi3d.Model(file_string="../Blender/DBZ/Goku/goku_body.obj", name="monument")
#body.translate(90.0, -mymap.calcHeight(100.0, 235) + 20.0, 235.0)
shader = pi3d.Shader("uv_light")
self.body.set_shader(shader)
self.body.scale(0.20, 0.20, 0.20)
self.center = pi3d.Model(file_string="../Blender/DBZ/Goku/goku_butt.obj")
self.center.set_shader(shader)
self.center.scale(0.2, 0.2, 0.2)
self.head = pi3d.Model(file_string="../Blender/DBZ/Goku/goku_head.obj", name="monument", x=0,y=9.2, z=0.8)
self.head.set_shader(shader)
self.head.scale(1.25, 1.25, 1.25)
self.legs = pi3d.Model(file_string="../Blender/DBZ/Goku/goku_legs.obj", name="monument", x=-3,y=-22.5)
self.legs.set_shader(shader)
self.butt = pi3d.Model(file_string="../Blender/DBZ/Goku/goku_but.obj", name="monument", x=0, y=0.5, z=2.2)
self.butt.set_shader(shader)
self.butt.scale(1.2, 1.2, 1.2)
self.body = pi3d.Model(file_string="../Blender/DBZ/Goku/goku_body.obj", cy=-23)
self.body.set_shader(shader)
self.armR = pi3d.Model(file_string="../Blender/DBZ/Goku/goku_armR.obj", name="monument", x=-4.8, y=4.6, z=1.2)
self.armR.set_shader(shader)
self.handR = pi3d.Model(file_string="../Blender/DBZ/Goku/goku_handR.obj", name="monument", x=-6.1, y=-0, z=+1, rx=270)
self.handR.set_shader(shader)
self.head = pi3d.Model(file_string="../Blender/DBZ/Goku/goku_head.obj", cy=-33, cz=0.5)
self.head.set_shader(shader)
self.legs = pi3d.Model(file_string="../Blender/DBZ/Goku/goku_legs.obj")
self.legs.set_shader(shader)
self.armL = pi3d.Model(file_string="../Blender/DBZ/Goku/goku_armL.obj", name="monument", x=4, y=4.2, z=0)
self.armL.set_shader(shader)
#self.armL.scale(3, 3, 3)
self.handL = pi3d.Model(file_string="../Blender/DBZ/Goku/goku_handL.obj", name="monument", x=5, y=-1, z=0.5, rx=270)
self.handL.set_shader(shader)
self.armR = pi3d.Model(file_string="../Blender/DBZ/Goku/goku_armR.obj", cy=-29, cx=4, cz=0.4)
self.armR.set_shader(shader)
self.handR = pi3d.Model(file_string="../Blender/DBZ/Goku/goku_handR.obj", cy=-29, cx=8.5, cz=0)
self.handR.set_shader(shader)
self.legL = pi3d.Model(file_string="../Blender/DBZ/Goku/goku_legL.obj", name="monument", x=2.9, y=-3, z=-1)
self.legL.set_shader(shader)
self.legL.scale(0.75, 0.75, 0.75)
self.footL = pi3d.Model(file_string="../Blender/DBZ/Goku/goku_foot.obj", name="monument", x=0, y=-24, z=-2.5)
self.footL.set_shader(shader)
self.footL.scale(1.1, 1.1, 1.1)
self.armL = pi3d.Model(file_string="../Blender/DBZ/Goku/goku_armL.obj", cy=-29, cx=-5, cz=0.4)
self.armL.set_shader(shader)
self.handL = pi3d.Model(file_string="../Blender/DBZ/Goku/goku_handL.obj", cy=-29, cx=-11, cz=0.8)
self.handL.set_shader(shader)
self.legR = pi3d.Model(file_string="../Blender/DBZ/Goku/goku_legL.obj", name="monument", x=-1.5, y=-3, z=-1)
self.legR.set_shader(shader)
self.legR.scale(0.75, 0.75, 0.75)
self.footR = pi3d.Model(file_string="../Blender/DBZ/Goku/goku_foot.obj", name="monument", x=-0, y=-24, z=-2.5)
self.footR.set_shader(shader)
self.legL = pi3d.Model(file_string="../Blender/DBZ/Goku/goku_legL.obj", cy = -21)
self.legL.set_shader(shader)
self.footL = pi3d.Model(file_string="../Blender/DBZ/Goku/goku_footL.obj", cy = -15)
self.footL.set_shader(shader)
self.footR.scale(1.0, 1.0, 1.0)
self.legR = pi3d.Model(file_string="../Blender/DBZ/Goku/goku_legR.obj", cy = -21)
self.legR.set_shader(shader)
self.footR = pi3d.Model(file_string="../Blender/DBZ/Goku/goku_footR.obj", cy = -15)
self.footR.set_shader(shader)
self.center.add_child(self.body)
self.body.add_child(self.head)
self.body.add_child(self.armR)
self.armR.add_child(self.handR)
self.body.add_child(self.armL)
self.armL.add_child(self.handL)
self.center.add_child(self.legL)
self.legL.add_child(self.footL)
self.center.add_child(self.legR)
self.legR.add_child(self.footR)
def run(self, position, diff):
#compute motion
if diff <= 0.25:
self.legR.rotateToX(15 * math.sin(position))
self.legL.rotateToX(-15 * math.sin(position))
self.footR.rotateToX(-15+ 15 * math.sin(position))
self.footL.rotateToX(-15 -15 * math.sin(position))
self.armL.rotateToZ(280)
self.armR.rotateToZ(80)
self.armR.rotateToY(25.0 * math.sin(position))
self.armL.rotateToY(25.0 * math.sin(position))
self.body.rotateToY(10.0 * math.sin(position))
self.head.rotateToY(-8.0 * math.sin(position))
else:
positionRun = position
self.legR.rotateToX(25 * math.sin(positionRun))
self.legL.rotateToX(-25 * math.sin(positionRun))
self.footR.rotateToX(-20+ 20 * math.sin(positionRun))
self.footL.rotateToX(-20 -20 * math.sin(positionRun))
self.armL.rotateToZ(300)
self.armR.rotateToZ(60)
self.armR.rotateToY(35.0 * math.sin(positionRun))
self.armL.rotateToY(35.0 * math.sin(positionRun))
self.handL.rotateToZ(80)
self.handR.rotateToZ(-80)
self.handL.rotateToY(80)
self.handR.rotateToY(-80)
self.body.rotateToY(10.0 * math.sin(positionRun))
self.body.rotateToX(-15.0)
self.head.rotateToY(-8.0 * math.sin(positionRun))
self.head.rotateToX(10.0)
def stand(self):
self.legR.rotateToX(0)
self.legL.rotateToX(0)
self.footR.rotateToX(0)
self.footL.rotateToX(0)
self.armL.rotateToZ(300)
self.armR.rotateToZ(60)
self.armR.rotateToY(0)
self.armL.rotateToY(0)
self.handL.rotateToY(0)
self.handR.rotateToY(0)
self.handL.rotateToZ(0)
self.handR.rotateToZ(0)
self.body.rotateToY(0)
self.body.rotateToX(0)
self.head.rotateToY(0)
self.head.rotateToX(0)
def jump(self, position):
self.armL.rotateToX(20 * math.sin(position))
self.armR.rotateToX(-20 * math.sin(position))
class guy(BaseAvatar):
def __init__(self):
super().__init__()
#Create human
#porl = pi3d.Model(file_string="Blender/Porl.obj", name="monument")
#porl.translate(90.0, -mymap.calcHeight(100.0, 235) + 12.0, 235.0)
#porl.scale(5.0, 5.0, 5.0)
self.body = pi3d.Model(file_string="../Blender/pi_Porl_Body.obj")
#body.translate(90.0, -mymap.calcHeight(100.0, 235) + 20.0, 235.0)
self.body.scale(1.0, 1.0, 1.0)
self.head = pi3d.Model(file_string="../Blender/pi_Porl_Head.obj", y=1.84)
self.armR = pi3d.Model(file_string="../Blender/pi_Porl_Arm_Right.obj", x=-0.5, y=1.64, z=0.1)
self.handR = pi3d.Model(file_string="../Blender/pi_Porl_Hand_Right.obj", x=-0.75)
self.legs = pi3d.Model(file_string="../Blender/pi_Porl_Legs.obj", y=-3.7)
self.armL = pi3d.Model(file_string="../Blender/pi_Porl_Arm_Left.obj", x=0.5, y=1.64, z=0.1)
self.handL = pi3d.Model(file_string="../Blender/pi_Porl_Hand_Left.obj", x=0.75)
self.body.add_child(self.head)
self.body.add_child(self.armR)
self.armR.add_child(self.handR)
self.body.add_child(self.legs)
self.body.add_child(self.armL)
self.armL.add_child(self.handL)
def sitDown(self):
#motion sitdown
pass
def play(self, position):
#motion sitdown
pass
def jump(self):
#motion sitdown
pass
def run(self, position):
#compute motion
self.armL.rotateToX(25.0 * math.sin(position))
self.handL.rotateToX(30)
self.armR.rotateToX(-25.0 * math.sin(position))
self.handR.rotateToX(30.0)
self.body.add_child(self.head)
self.body.add_child(self.armR)
self.armR.add_child(self.handR)
self.body.add_child(self.butt)
#self.body.add_child(self.legs)
self.body.add_child(self.armL)
self.armL.add_child(self.handL)
self.butt.add_child(self.legL)
self.legL.add_child(self.footL)
self.butt.add_child(self.legR)
self.legR.add_child(self.footR)
def run(self, position):
#compute motion
self.legR.rotateToX(15 * math.sin(position))
self.legL.rotateToX(-15 * math.sin(position))
self.armL.rotateToZ(305)
self.armR.rotateToZ(80)
self.armR.rotateToY(25.0 * math.sin(position))
self.armL.rotateToY(25.0 * math.sin(position))
class guy(object):
def __init__(self):
#Create human
#porl = pi3d.Model(file_string="Blender/Porl.obj", name="monument")
#porl.translate(90.0, -mymap.calcHeight(100.0, 235) + 12.0, 235.0)
#porl.scale(5.0, 5.0, 5.0)
self.body = pi3d.Model(file_string="../Blender/pi_Porl_Body.obj", name="monument")
#body.translate(90.0, -mymap.calcHeight(100.0, 235) + 20.0, 235.0)
self.body.scale(1.0, 1.0, 1.0)
self.head = pi3d.Model(file_string="../Blender/pi_Porl_Head.obj", name="monument", y=1.84)
#head.translate(90.0, -mymap.calcHeight(100.0, 235) + 29.6, 235.0)
self.armR = pi3d.Model(file_string="../Blender/pi_Porl_Arm_Right.obj", name="monument", x=-0.5, y=1.64, z=0.1)
#arm.translate(87.5, -mymap.calcHeight(100.0, 235) + 28.2, 235.5)
self.handR = pi3d.Model(file_string="../Blender/pi_Porl_Hand_Right.obj", name="monument", x=-0.75)
#hand.translate(83.5, -mymap.calcHeight(100.0, 235) + 28.2, 235.5)
self.legs = pi3d.Model(file_string="../Blender/pi_Porl_Legs.obj", name="monument", y=-3.7)
self.armL = pi3d.Model(file_string="../Blender/pi_Porl_Arm_Left.obj", name="monument", x=0.5, y=1.64, z=0.1)
self.handL = pi3d.Model(file_string="../Blender/pi_Porl_Hand_Left.obj", name="monument", x=0.75)
self.body.add_child(self.head)
self.body.add_child(self.armR)
self.armR.add_child(self.handR)
self.body.add_child(self.legs)
self.body.add_child(self.armL)
self.armL.add_child(self.handL)
def sitDown(self):
#motion sitdown
pass
def play(self, position):
#motion sitdown
pass
def jump(self):
#motion sitdown
pass
def run(self, position):
#compute motion
self.armL.rotateToX(25.0 * math.sin(position))
self.handL.rotateToX(30)
self.armR.rotateToX(-25.0 * math.sin(position))
self.handR.rotateToX(30.0)
def test(self, position):
#compute motion
pass
def test(self, position):
#compute motion
pass

0
src/maps.py 100644 → 100755
View File

45
src/objects.py 100755
View File

@ -0,0 +1,45 @@
#!/bin/python
import pi3d
import math,random
shader_light = pi3d.Shader("uv_light")
earth = pi3d.Texture("../textures/rock1.png")
flatsh = pi3d.Shader("uv_flat")
class object(object):
def __init__(self):
global flatsh
#font = pi3d.Pngfont("../fonts/GillSansMT.png", (221,0,170,255))
font = pi3d.Pngfont("../fonts/GillSansMT.png", (255,80,0,255))
self.mystring = pi3d.String(font=font, string="NOW NO EXCUSES", size=0.8, x=2, y=2, z=2, is_3d=True)
self.mystring2 = pi3d.String(font=font, string="BE YOUR HERO !!!", size=0.8, x=2, y=2, z=2, is_3d=True)
#mystring.translate(0.0, 0.0, 1)
self.mystring.scale(3, 3, 3)
self.mystring.set_shader(flatsh)
self.mystring2.scale(3, 3, 3)
self.mystring2.set_shader(flatsh)
self.myPlane = pi3d.Plane(w=7, h=1.8, name="plane")
self.myTriangle = pi3d.Triangle(sx=2, sy=2, sz=2, name="triangle", rz = 180)
self.mycone = pi3d.Cone(radius=1, height=2, sides=24, name="Cone", rz=180)
#self.myTriangle.set_shader(shader)
def Position(self, xm, ym, zm):
self.mystring.position(-10, ym+2.5, 14.9)
self.mystring2.position(-10, ym+1.5, 14.9)
self.mycone.position(-10, ym+2, 15)
self.myPlane.position(-10, ym+2, 15)
def Draw(self):
global shader_light, earth
#self.myPlane.draw(shader_light, [earth])
#self.mystring.draw()
#self.mystring2.draw()

0
src/serial_data.py 100644 → 100755
View File

0
src/shaders/barrel.fs 100644 → 100755
View File

0
src/shaders/barrel.vs 100644 → 100755
View File