Introduction: VR Arduino Camcorder

The VR Arduino Camcorder is a school/passion project inspired by a limitation i noticed while working with digital camera's. digital camera movement often looks kind of static, and lacks human imperfection, which is an important element in making digital things look realistic. i'm not good enough at animating to keyframe the camera's in interesting ways.

This is why i came up with this invention. it makes filming digital thing much more intuitive because it allows me to record my scenes the same way i'm used to in real life working with a camera, but in a Virtual Reality Reality environment.

i salvaged an old VHS camera and rewired all nessecary buttons to the Arduino UNO. i send this data to Unity Game Engine. here i set up my VR scene and created a digital copy of the physical camcorder to hold.

i use the camera's original buttons for their original purpose, but digitally in Unity.

Features:

-Start/stop Unity Recorder to MP4 (with LED feedback, Red = off, Green = on)

-Restart Unity timeline

-Dual zoom button (Tele, Wide)

-Ring on the lens to adjust Focus (Depth of Field)

-VR Tracker slot with straps for easy access

Supplies

1x Arduino UNO

1x Panasonic MS70 Camcorder

1x Velleman Soldering Iron (can be any brand)

1x Oculus Quest VR set (any modern set works)


1x Linear Potentiometer

1x USB 2.0 cable Type A/B

1x Red LED 5mm

1x Green LED 5mm

1x CAT6 Ethernet Cable

10x Heat shrink cable wrap

1x 15-Pin Header strip

1x 19-Pin Header strip

1x grey 1.5mm 3Core & earth cable

2x Velcro strip

Step 1: Research

before starting i needed to do some research. this was my first time working with arduino so i looked up some tutorials on how to install and read a potmeter in arduino code. i also found a video about sending/receiving data to/from unity.

I also looked around the internet to see if anyone has done something similar before, and found out this technique was used during the making of The Lion King CGI remake, but on a much larger scale/budget. this seemed to work really well and it inspired me to keep going. the reason they used this VR Camera technique is also to add some more humanity to otherwise plain and robotic camera movement in a 100% 3D animated movie. they also used Unity Engine for recording all camera animations in VR


Sources:

Control LED with Potmeter Arduino: https://www.youtube.com/watch?v=RBYVUTIU4FE

Making of Lion King: https://www.youtube.com/watch?v=WupuXjvO9uA

Make Arduino Game Controller in Unity: https://www.youtube.com/watch?v=N9RhSa8oMD8

Step 2: Setting Up Arduino

I started with making a simple breadboard circuit to test out my potentiometer. i also added a button and a LED to tinker with. i also knew i was going to need these anyway later on. the leds switch color when i press the button.

Step 3: Set Up Unity VR Project and Communicate With Arduino

in Unity i set up the project with all neccesary VR integrations, and attach a cube to the right hand controller. i add a digital camera object at the front and make it render to a rendertexture, which is attached to the side of the cube. this way i was able to move a camera object with my controller, and see output on the "screen" (render texture)

i put my VR controller inside of a small waist bag to test how holding the controller sideways with a strap feels . this feels similar to holding a camera

the next task was finding out how to send/receive data from arduino to Unity. after some research i found the Ardity plugin (https://github.com/dwilches/Ardity) this makes communicating with the arduino UNO trough serial port somewhat easier. Because parsing the final string of serial data gave some major issues, i decided to simply let arduino send different letters to unity, corrosponding to the buttons. in unity i'd check the entire string and if the subject letter is present, the button code runs.

i wrote a C# program in unity to read the serial port data, and pass the value's of the Potentiometer to the Focus Distance of unity's Depth of Field (Focus) post-effect. to test this out i created a quick scene with terrain and a dancing target for testing.

this worked and i moved on to programming the Start/Stop button. this was somewhat tricky and i found a workaround to access the Unity Recorder plugin, to start/stop and access its current state. this script checks the state and sends data back to the arduino to power the LED's (On = Blue, Off = Red). i also added a light to the digital camera. the Unity recorder records the view of the camera which is attached to the right hand, and turns it into a MP4 file or Image Sequence.

i was now able to read/write to my little Arduino breadboard prototype

First recording results looked great. the human camera movement and manual focus control already added a lot of realism to the shots.

i have added my Arduino code as well as the first C# script (file type not supported, so i added it as a TXT). the code is currently not optimal and needs proper refactoring, but as this is a prototype for now it's okay.

Step 4: Screw Open Camcorder and Add Potmeter

At first i was planning to build my case from wood, but i quickly came to the realisation that this probably would not feel very Intuitive to use (this is very important). i decided to look for an old camera to salvage and Re-purpose, because it obviously has all the buttons and features i need in the right place, and it looks way cooler.

the same day i found a broken VHS Recorder while digging trough old electronics at the local dump.

i gathered some tools and screwed open the recorder. i removed most of the unneccesary internal mechanics (Lens, servo's, Cassette case) and uncovered/unsoldered all the cables of the nessecary buttons. i combined all the Ground cables and tied them together with a shrink wrap.

After this i installed the Potentiometer. i used a sturdy piece of cardboard and some wood to hold it in place, and glued the end of the potmeter to the original Lens cover of the recorder. this now functions as the Focus Ring.

Step 5: Add Lights, Centralize and Solder Wires

i drilled 2 holes on top of the camera and hot-glued the led lights into them.

I took all the short wires of the different inputs/outputs and soldered them to a Networking cable i cut open. this is to prevent the inside from getting messy (good cable management!). i used cable shrink wrap to make sure no metal parts are exposed.

Step 6: Screw Arduino to Body and Connect Headers

I decided to attach the arduino to the Cassete cover, because this part can easily be removed to expose the arduino. The cover also already had 2 screw holes which somehow lined up with the Arduino's holes. i used long screws so the arduino has a slight offset for safety. after this i closed the body and screwed it back together.

Step 7: Attach VR Controller to Body

During testing i found out the round ring on the Oculus Quest controller functions as tracker, and should be exposed at all times for the tracking to work properly. this means i cant put the controller inside of the body. i also want the controller to be easily attach/detachable. while looking in the attic i found some metal arm with a handle, which somehow screwed perfectly into the bottom of the camera (screw hole used to attach camera to a tripod). i removed the handle and used 2 Velcro strips to attach the controller to it. this way i can unzip the controller at any time.

Step 8: Finalizing and Testing

while rerouting/attaching the new buttons to the Arduino, i had not tested if they actually worked. it was a relief to find out all the buttons instantly worked with the code i had already written for my breadboard prototype (i kept all Arduino Digital Inputs the same)

I set up another scene with more things to look at, and started recording.


Step 9: Looking Back/forward

I'm very proud of this first prototype. i've had this idea for a long time and it feels great to finally realise it. the first results look nice and the camera actually works intuitiv.ely. this means i will be able to use the VRCamera in future work. one of my friends is a professional cinematographer and tried out the camera, and told me he thinks it works really well. i've had a very pleasant first experience with arduino, and learned a lot about circuits. i also had never repurposed old electronics before. while working with arduino i realised it's pretty powerfull as a physical extension of my unity experience. i can attach sensors and other stuff to make experiences more immersive

in a next iteration of the VRCamera i want to add a button and unity code for a Auto-Focus feature. i will probably also replace the front focus ring, as currently the potmeter is not centered perfectly. i will also refactor the code and make optimisation changes to increase framerates.

Dont forget to watch the video at the top of the page!