Jump to content

Starwhip

Members
  • Posts

    3,650
  • Joined

  • Last visited

Everything posted by Starwhip

  1. I just saw some Intel commercial that showcased face recognition "passwords". Could you get any less secure? I mean, some stranger could just hold up a picture from your Facebook page and log into your device. My conclusion is that the people developing software are idiots who don't know anything about security, and are sacrificing other people's security for the sake of "coolness." On another note, the people who use this are also idiots... I hope there's some security scandal and the public goes back to "secure" character passwords, though there is always a way around any security measure.
  2. Minus eighty five. EDIT: Y'all are too damn fast.
  3. The variety of talents here is incredible... I'm horrible at drawing or I'd give it a shot.
  4. I find the requirements for Kerbal numbers extremely large. Who can put something on Minmus in early game with room for 12 Kerbals?! *AND* have the Kerbals there? (Yeah, not only does it need the room, it needs the Kerbals. Who's got 12 Kerbals to spare?)
  5. Minus 34. almost 400 replies and we're at -34.
  6. Our autonomous program was really nice. We drove down the ramp, put a ball in the 60 centimeter goal, rotated and put the goal in the parking zone. It worked great. As for the comments, that's what you get when you've got three people working on the same code. Hoping it goes well in FRC too.
  7. Seriously, the hacking industry is going to have a party.
  8. I dunno. Blender has a "Triangulate" feature, however, so I'd expect it to have one that does the reverse.
  9. Our FTC team made it to the States level. Yesterday was the competition. Twice our autonomous code worked. Twice. The other nine times the robot just skipped the first five commands, went forward, turned, and fell off of a foot-high ramp backwards. And it worked 100% of the time on the practice field. Later on they said that they had been detecting Nintendo 3DS wifi signals in the audience and asked everyone to turn them off. Which, of course, nobody did, because IT KEPT HAPPENING! Why is the universe so cruel as to have that one guy on our frequency? On another topic: Our FRC team has three days before the end of the build season. Our code for the robot has ballooned into this monster: #include "WPILib.h" #include <thread> /* These are pre-processing directives, the compiler will find in your code all these names, and replace them with the numbers listed beside them. */ #define frontLeftChannel 0 //the port for the front left drive motor #define frontRightChannel 1 //the port for the front right drive motor #define rearLeftChannel 2 //the port for the back left drive motor #define rearRightChannel 3 //the port for the back right drive motor #define mainLiftChannel 4 //the port for the main lift motor #define backupLiftChannel 5 #define joystickDriveChannel 0 //what position in the controller array is the drive controller #define joystickArmChannel 1 //what position in the controller array is the lift controller #define joystickThreshold 0.15 //the "dead" zone of the controller #define joystickLimit 1.0 // % of range (1.0 = 100%, .75 = 75% etc.) #define encFLreverse false; //Reverse the Front Left Encoder #define encBLreverse false; //Reverse the Back Left Encoder #define encFRreverse false; //Reverse the Front Right Encoder #define encBRreverse false; //Reverse the Back Right Encoder #define encoderFLchannelA 0; #define encodingType Encoder::k4X //idk if this even works but ima try it #define JOYZCAPABLE false //are you using a z-axis capable controller (in our case the Logitech Log 3D pro) /*____________________________________HUGE PROGRAMMING NOTE!!!_____________________________________ * TO DEPLOY TO THE roboRIO, YOU MUST RIGHT CLICK ON THE BUILD.XML FILE, * AND SELECT "RUN AS ANT BUILD". * ECLIPSE NO LONGER GIVES THE OPTION TO DEPLOY AS C++ CODE!!! */ class Robot: public SampleRobot { RobotDrive robotDrive; // robot drive system Talon liftOne; // the lift motor controller Talon liftTwo; Joystick driveStick; // only joystick Joystick armStick; //Not anymore, you stupid comment! // why are you so mean to me? -driveStick comment Encoder encoderFL; //Front Left Encoder Encoder encoderBL; //Back Left Encoder Encoder encoderFR; //Front Right Encoder Encoder encoderBR; //Back Right Encoder Encoder encoderLift; //Take a wild guess AnalogInput bottomLimitSwitch; //limit switch for the bottom bar AnalogInput topLimitSwitch; //limit switch for the top bar int encoderPorts[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int thing =0; float driveStick_x = 0; //the first controller x axis value float driveStick_y = 0; //the first controller y axis value float driveStick_z = 0; //the first controller z axis value float armStick_y = 0; // the second controller y axis value float attackRotRate = 0.75; //This is the rotation rate when using the buttons float slider = 0; // i have no clue what this is supposed to be float currAvgPosition; float startPosition; bool throttleEnabled = true; //True means throttle is enabled, false not... bool rotationLock = true; //True means that button 2 is needed for rotation. bool defDriveMode = true; //True defaults to analog drive public: //_____________________INITIALIZATION ROUTINES__________________________ Robot() : robotDrive( frontLeftChannel, rearLeftChannel, frontRightChannel, rearRightChannel), // these must be initialized in the same order liftOne(mainLiftChannel), // as they are declared above. liftTwo(backupLiftChannel), driveStick(joystickDriveChannel), armStick(joystickArmChannel), encoderFL(encoderPorts[0],encoderPorts[1], false, encodingType), encoderBL(encoderPorts[2], encoderPorts[3], false, encodingType), encoderFR(encoderPorts[4], encoderPorts[5], false, encodingType), encoderBR(encoderPorts[6], encoderPorts[7], false, encodingType), encoderLift(encoderPorts[8], encoderPorts[9], false, encodingType), bottomLimitSwitch(1), topLimitSwitch(0) { robotDrive.SetExpiration(0.1); robotDrive.SetInvertedMotor(RobotDrive::kFrontLeftMotor, false);// do not invert the left side motors robotDrive.SetInvertedMotor(RobotDrive::kRearLeftMotor, false); robotDrive.SetInvertedMotor(RobotDrive::kFrontRightMotor, true);// invert the right side motors robotDrive.SetInvertedMotor(RobotDrive::kRearRightMotor, true);// you may need to change or remove this to match your robot } float map(float x, float in_min, float in_max, float out_min, float out_max)//*Dalek Voice* EXPLAIIIIIIIIIIN { //_____________________FLOAT MAPPING__________________________ return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;//*Dalek Voice* EXPLAIIIIIIIIIIIIIIIIIIIIIIN //Takes in a variable, and variable range, spits out new value } void RoboInit() { float disPerTick = 0.013004; //Inches (I's small) //not compared to the size of an electron //Encoder encoderList = {encoderFL, encoderBL, encoderFR, encoderBR}; //at least we tried } void precisionDrive() { //_______________________________PRECISION DRIVE MODE_____________________________ if (driveStick.GetPOV(1)) { //Forward driveStick_x = 0; driveStick_y = 1; } else if (driveStick.GetPOV(2)) { //Right Forward driveStick_x = 1; driveStick_y = 1; } else if (driveStick.GetPOV(3)) { //Right driveStick_x = 1; driveStick_y = 0; } else if (driveStick.GetPOV(4)) { //Right Backward driveStick_x = 1; driveStick_y = -1; } else if (driveStick.GetPOV(5)) { //Backward driveStick_x = 0; driveStick_y = -1; } else if (driveStick.GetPOV(6)) { //Left Backward driveStick_x = -1; driveStick_y = -1; } else if (driveStick.GetPOV(7)) { //Left driveStick_x = -1; driveStick_y = 0; } else if (driveStick.GetPOV(8)) { //Left Forward driveStick_x = -1; driveStick_y = 1; } else { driveStick_x = 0; driveStick_y = 0; } //CODE FOR PRECISION ROTATION // I couldn't re-do this one into a switch because of the way GetRawButton works if (driveStick.GetRawButton(3)) { //Left Rotation driveStick_z = -1; } else if (driveStick.GetRawButton(4)) { //Right Rotation driveStick_z = 1; } else { //No Rotation driveStick_z = 0; } } void analogDrive() { //_____________________________________NORMAL DRIVE MODE (ANALOG)_______________________________ //Get Joystick Raw Values driveStick_x = driveStick.GetX(); driveStick_y = driveStick.GetY(); //Written to account for lack of Logitec 3DPro joystick (Z-axis rotation of joystick) //could be redone so that it takes into account any z-axis capable joystick (rename the declaration more or less) if (JOYZCAPABLE) { if (throttleEnabled) { //CUSTOM CONFIG If enabled: throttle is usable slider = map(driveStick.GetRawAxis(3), -1, 1, 1, 0);// how is the out min bigger than the out max? } else { //Locks throttle to 100% slider = 1; } driveStick_z = driveStick.GetZ(); //map(x, in_min, in_max, out_min, out_max) if (fabs(driveStick_z) < joystickThreshold || (!driveStick.GetRawButton(2) && rotationLock) || driveStick.GetRawButton(1)) { //why are we checking for button 1? Accidental turning?? if so then the check for 2 is redundant driveStick_z = 0; } } else { //we might want to redo all of this so that the button input is saved in a var that way we can use controllers other than ours if (driveStick.GetRawButton(4)) { //if button 4 is pressed (left?) turn (left?) driveStick_z = -attackRotRate; } else if (driveStick.GetRawButton(5)) { //if button 5 is pressed (right?) turn (right?) driveStick_z = attackRotRate; } else { driveStick_z = 0; //you press nothing... NATHING! } slider = map(driveStick.GetRawAxis(2), -1, 1, 1, 0); //wat? i is confuzed by slider } //Threshold Value Setting if (fabs(driveStick_x) < joystickThreshold || driveStick.GetRawButton(1)) { // if the x value is inside of the "dead" zone or you are holding the trigger set the x value to 0 driveStick_x = 0; } if (fabs(driveStick_y) < joystickThreshold || driveStick.GetRawButton(1)) { // if the y value is inside of the "dead" zone or you are holding the trigger se thte y value to 0 driveStick_y = 0; } } void joySettings() { if (driveStick.GetRawButton(7)) { //Enables analog default drive defDriveMode = true; } else if (driveStick.GetRawButton(8)) { //Enables precision drive defDriveMode = false; } if (driveStick.GetRawButton(9)) { //Enables Rotation Lock Mode rotationLock = true; } else if (driveStick.GetRawButton(10)) { //Disables rotation lock rotationLock = false; } if (driveStick.GetRawButton(11)) { //Enables throttle throttleEnabled = true; } else if (driveStick.GetRawButton(12)) { //Disables Throttle (100%) throttleEnabled = false; } } void driveEncoders(float distance, float rotation) { } void driveEncoders(float distance) { } void logOutput() { //outputs to the smart dashboard so we can see real-time values. SmartDashboard::PutNumber("Joystick X ", double(driveStick_x)); SmartDashboard::PutNumber("Joystick Y ", double(driveStick_y)); SmartDashboard::PutNumber("Joystick Z ", double(driveStick_z)); SmartDashboard::PutNumber("Throttle ", double(slider)); //SmartDashboard::PutNumber("Top Limit ", double(topLimitSwitch.GetValue())); //SmartDashboard::PutNumber("Bottom Limit", double(bottomLimitSwitch->Get())); } void liftControl() { //__________________________LIFT_SECTION_OF_MAIN_LOOP______________________ armStick_y = armStick.GetY();//set the arm raising thing if (fabs(armStick_y) < joystickThreshold){// || //(armStick_y < 0 && (topLimitSwitch.GetValue()) > 2058) || //(armStick_y > 0 && (bottomLimitSwitch.GetValue() > 2058))){ // if armStick_y is in the dead zone or if you reached the top limit //or if you set the bottom limit set arm movement to 0 armStick_y = 0; } liftOne.SetSpeed(armStick_y); // THEN THE CODE SAID LET THERE BE LIFT!!!! maybe.. liftTwo.SetSpeed(armStick_y);// THEN THE CODE SAID LET THERE BE LIFT!!!! maybe.. AGAIN! } void driveModeSelect() { //___________________________DRIVE_SECTION_OF_MAIN_LOOP_______________________ //if you are holding the trigger use precision drive, else use regular drive // Use the joystick X axis for lateral movement, Y axis for forward movement, and Z axis for rotation. // This sample does not use field-oriented drive, so the gyro input is set to zero. if (defDriveMode) { //Analog Drive is Default if (!driveStick.GetRawButton(1)) { //"Button 1" is the trigger. analogDrive();//Button 2 is for Z-Rotation Lock... And think about it: // How do you hit the thumb button if you're using your thumb on the hat switch? } else { precisionDrive(); } } else { if (!driveStick.GetRawButton(1)) { precisionDrive(); } else { analogDrive(); } } robotDrive.MecanumDrive_Cartesian(driveStick_x * joystickLimit * slider, driveStick_y * joystickLimit * slider, driveStick_z * joystickLimit * slider); //Actually do the moving stuff } void OperatorControl() { robotDrive.SetSafetyEnabled(false); //no safety for you while (IsOperatorControl() && IsEnabled()) { joySettings(); driveModeSelect(); liftControl(); logOutput(); Wait(0.005); // wait 5ms to avoid hogging CPU cycles } } /*void Autonomous() { while(IsAutonomous() && IsEnabled()) { if(AutonChoice == 1) { } } }*/ }; START_ROBOT_CLASS(Robot); //Initializes the class so the robot actually does stuff Say hi to Mecanum drive! I have not a single clue as to how it expanded so fast. It was only a hundred lines a few days ago!
  10. I wonder if with kOS I could actually get them to work with a control scheme... I.E. Another use for this behemoth. #include "WPILib.h" #include <thread> /* These are pre-processing directives, the compiler will find in your code all these names, and replace them with the numbers listed beside them. */ #define frontLeftChannel 0 //the port for the front left drive motor #define frontRightChannel 1 //the port for the front right drive motor #define rearLeftChannel 2 //the port for the back left drive motor #define rearRightChannel 3 //the port for the back right drive motor #define mainLiftChannel 4 //the port for the main lift motor #define backupLiftChannel 5 #define joystickDriveChannel 0 //what position in the controller array is the drive controller #define joystickArmChannel 1 //what position in the controller array is the lift controller #define joystickThreshold 0.15 //the "dead" zone of the controller #define joystickLimit 1.0 // % of range (1.0 = 100%, .75 = 75% etc.) #define encFLreverse false; //Reverse the Front Left Encoder #define encBLreverse false; //Reverse the Back Left Encoder #define encFRreverse false; //Reverse the Front Right Encoder #define encBRreverse false; //Reverse the Back Right Encoder #define encoderFLchannelA 0; #define encodingType Encoder::k4X //idk if this even works but ima try it #define JOYZCAPABLE false //are you using a z-axis capable controller (in our case the Logitech Log 3D pro) /*____________________________________HUGE PROGRAMMING NOTE!!!_____________________________________ * TO DEPLOY TO THE roboRIO, YOU MUST RIGHT CLICK ON THE BUILD.XML FILE, * AND SELECT "RUN AS ANT BUILD". * ECLIPSE NO LONGER GIVES THE OPTION TO DEPLOY AS C++ CODE!!! */ class Robot: public SampleRobot { RobotDrive robotDrive; // robot drive system Talon liftOne; // the lift motor controller Talon liftTwo; Joystick driveStick; // only joystick Joystick armStick; //Not anymore, you stupid comment! // why are you so mean to me? -driveStick comment Encoder encoderFL; //Front Left Encoder Encoder encoderBL; //Back Left Encoder Encoder encoderFR; //Front Right Encoder Encoder encoderBR; //Back Right Encoder Encoder encoderLift; //Take a wild guess AnalogInput bottomLimitSwitch; //limit switch for the bottom bar AnalogInput topLimitSwitch; //limit switch for the top bar int encoderPorts[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int thing =0; float driveStick_x = 0; //the first controller x axis value float driveStick_y = 0; //the first controller y axis value float driveStick_z = 0; //the first controller z axis value float armStick_y = 0; // the second controller y axis value float attackRotRate = 0.75; //This is the rotation rate when using the buttons float slider = 0; // i have no clue what this is supposed to be float currAvgPosition; float startPosition; bool throttleEnabled = true; //True means throttle is enabled, false not... bool rotationLock = true; //True means that button 2 is needed for rotation. bool defDriveMode = true; //True defaults to analog drive public: //_____________________INITIALIZATION ROUTINES__________________________ Robot() : robotDrive( frontLeftChannel, rearLeftChannel, frontRightChannel, rearRightChannel), // these must be initialized in the same order liftOne(mainLiftChannel), // as they are declared above. liftTwo(backupLiftChannel), driveStick(joystickDriveChannel), armStick(joystickArmChannel), encoderFL(encoderPorts[0],encoderPorts[1], false, encodingType), encoderBL(encoderPorts[2], encoderPorts[3], false, encodingType), encoderFR(encoderPorts[4], encoderPorts[5], false, encodingType), encoderBR(encoderPorts[6], encoderPorts[7], false, encodingType), encoderLift(encoderPorts[8], encoderPorts[9], false, encodingType), bottomLimitSwitch(1), topLimitSwitch(0) { robotDrive.SetExpiration(0.1); robotDrive.SetInvertedMotor(RobotDrive::kFrontLeftMotor, false);// do not invert the left side motors robotDrive.SetInvertedMotor(RobotDrive::kRearLeftMotor, false); robotDrive.SetInvertedMotor(RobotDrive::kFrontRightMotor, true);// invert the right side motors robotDrive.SetInvertedMotor(RobotDrive::kRearRightMotor, true);// you may need to change or remove this to match your robot } float map(float x, float in_min, float in_max, float out_min, float out_max)//*Dalek Voice* EXPLAIIIIIIIIIIN { //_____________________FLOAT MAPPING__________________________ return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;//*Dalek Voice* EXPLAIIIIIIIIIIIIIIIIIIIIIIN //Takes in a variable, and variable range, spits out new value } void RoboInit() { float disPerTick = 0.013004; //Inches (I's small) //not compared to the size of an electron //Encoder encoderList = {encoderFL, encoderBL, encoderFR, encoderBR}; //at least we tried } void precisionDrive() { //_______________________________PRECISION DRIVE MODE_____________________________ if (driveStick.GetPOV(1)) { //Forward driveStick_x = 0; driveStick_y = 1; } else if (driveStick.GetPOV(2)) { //Right Forward driveStick_x = 1; driveStick_y = 1; } else if (driveStick.GetPOV(3)) { //Right driveStick_x = 1; driveStick_y = 0; } else if (driveStick.GetPOV(4)) { //Right Backward driveStick_x = 1; driveStick_y = -1; } else if (driveStick.GetPOV(5)) { //Backward driveStick_x = 0; driveStick_y = -1; } else if (driveStick.GetPOV(6)) { //Left Backward driveStick_x = -1; driveStick_y = -1; } else if (driveStick.GetPOV(7)) { //Left driveStick_x = -1; driveStick_y = 0; } else if (driveStick.GetPOV(8)) { //Left Forward driveStick_x = -1; driveStick_y = 1; } else { driveStick_x = 0; driveStick_y = 0; } //CODE FOR PRECISION ROTATION // I couldn't re-do this one into a switch because of the way GetRawButton works if (driveStick.GetRawButton(3)) { //Left Rotation driveStick_z = -1; } else if (driveStick.GetRawButton(4)) { //Right Rotation driveStick_z = 1; } else { //No Rotation driveStick_z = 0; } } void analogDrive() { //_____________________________________NORMAL DRIVE MODE (ANALOG)_______________________________ //Get Joystick Raw Values driveStick_x = driveStick.GetX(); driveStick_y = driveStick.GetY(); //Written to account for lack of Logitec 3DPro joystick (Z-axis rotation of joystick) //could be redone so that it takes into account any z-axis capable joystick (rename the declaration more or less) if (JOYZCAPABLE) { if (throttleEnabled) { //CUSTOM CONFIG If enabled: throttle is usable slider = map(driveStick.GetRawAxis(3), -1, 1, 1, 0);// how is the out min bigger than the out max? } else { //Locks throttle to 100% slider = 1; } driveStick_z = driveStick.GetZ(); //map(x, in_min, in_max, out_min, out_max) if (fabs(driveStick_z) < joystickThreshold || (!driveStick.GetRawButton(2) && rotationLock) || driveStick.GetRawButton(1)) { //why are we checking for button 1? Accidental turning?? if so then the check for 2 is redundant driveStick_z = 0; } } else { //we might want to redo all of this so that the button input is saved in a var that way we can use controllers other than ours if (driveStick.GetRawButton(4)) { //if button 4 is pressed (left?) turn (left?) driveStick_z = -attackRotRate; } else if (driveStick.GetRawButton(5)) { //if button 5 is pressed (right?) turn (right?) driveStick_z = attackRotRate; } else { driveStick_z = 0; //you press nothing... NATHING! } slider = map(driveStick.GetRawAxis(2), -1, 1, 1, 0); //wat? i is confuzed by slider } //Threshold Value Setting if (fabs(driveStick_x) < joystickThreshold || driveStick.GetRawButton(1)) { // if the x value is inside of the "dead" zone or you are holding the trigger set the x value to 0 driveStick_x = 0; } if (fabs(driveStick_y) < joystickThreshold || driveStick.GetRawButton(1)) { // if the y value is inside of the "dead" zone or you are holding the trigger se thte y value to 0 driveStick_y = 0; } } void joySettings() { if (driveStick.GetRawButton(7)) { //Enables analog default drive defDriveMode = true; } else if (driveStick.GetRawButton(8)) { //Enables precision drive defDriveMode = false; } if (driveStick.GetRawButton(9)) { //Enables Rotation Lock Mode rotationLock = true; } else if (driveStick.GetRawButton(10)) { //Disables rotation lock rotationLock = false; } if (driveStick.GetRawButton(11)) { //Enables throttle throttleEnabled = true; } else if (driveStick.GetRawButton(12)) { //Disables Throttle (100%) throttleEnabled = false; } } void driveEncoders(float distance, float rotation) { } void driveEncoders(float distance) { } void logOutput() { //outputs to the smart dashboard so we can see real-time values. SmartDashboard::PutNumber("Joystick X ", double(driveStick_x)); SmartDashboard::PutNumber("Joystick Y ", double(driveStick_y)); SmartDashboard::PutNumber("Joystick Z ", double(driveStick_z)); SmartDashboard::PutNumber("Throttle ", double(slider)); //SmartDashboard::PutNumber("Top Limit ", double(topLimitSwitch.GetValue())); //SmartDashboard::PutNumber("Bottom Limit", double(bottomLimitSwitch->Get())); } void liftControl() { //__________________________LIFT_SECTION_OF_MAIN_LOOP______________________ armStick_y = armStick.GetY();//set the arm raising thing if (fabs(armStick_y) < joystickThreshold){// || //(armStick_y < 0 && (topLimitSwitch.GetValue()) > 2058) || //(armStick_y > 0 && (bottomLimitSwitch.GetValue() > 2058))){ // if armStick_y is in the dead zone or if you reached the top limit //or if you set the bottom limit set arm movement to 0 armStick_y = 0; } liftOne.SetSpeed(armStick_y); // THEN THE CODE SAID LET THERE BE LIFT!!!! maybe.. liftTwo.SetSpeed(armStick_y);// THEN THE CODE SAID LET THERE BE LIFT!!!! maybe.. AGAIN! } void driveModeSelect() { //___________________________DRIVE_SECTION_OF_MAIN_LOOP_______________________ //if you are holding the trigger use precision drive, else use regular drive // Use the joystick X axis for lateral movement, Y axis for forward movement, and Z axis for rotation. // This sample does not use field-oriented drive, so the gyro input is set to zero. if (defDriveMode) { //Analog Drive is Default if (!driveStick.GetRawButton(1)) { //"Button 1" is the trigger. analogDrive();//Button 2 is for Z-Rotation Lock... And think about it: // How do you hit the thumb button if you're using your thumb on the hat switch? } else { precisionDrive(); } } else { if (!driveStick.GetRawButton(1)) { precisionDrive(); } else { analogDrive(); } } robotDrive.MecanumDrive_Cartesian(driveStick_x * joystickLimit * slider, driveStick_y * joystickLimit * slider, driveStick_z * joystickLimit * slider); //Actually do the moving stuff } void OperatorControl() { robotDrive.SetSafetyEnabled(false); //no safety for you while (IsOperatorControl() && IsEnabled()) { joySettings(); driveModeSelect(); liftControl(); logOutput(); Wait(0.005); // wait 5ms to avoid hogging CPU cycles } } /*void Autonomous() { while(IsAutonomous() && IsEnabled()) { if(AutonChoice == 1) { } } }*/ }; START_ROBOT_CLASS(Robot); //Initializes the class so the robot actually does stuff
  11. Thread #7 is about Version 0.7... http://forum.kerbalspaceprogram.com/threads/7
  12. www.youtube.com/watch?v=ZTVa2PuvGoM Say HI to Danny2462. Where were you when this happened?
  13. 7/10. Not everywhere, but a lot of places.
  14. In the OP I see Mecanum wheels. Do they actually work? If they do that is freakishly cool!
  15. Yeah, get rid of your specular map. Basically, it's a "shiny-ness" texture. If you're modelling in Blender, your material slot has a section called "specular". You can set the amount to zero and it will fix your problems.
  16. This is never getting anywhere. XD HAVE A -1! Now -15!
  17. I don't think the landing gear shown there is for small spaceplanes... XD Looks INCREDIBLE! Great job, PorkJet!
×
×
  • Create New...