Capture
Record iPhone gyroscope rotation rates live. Export structured JSON for the processing pipeline. HTTPS is mandatory for iOS sensor access.
Visualizer
Preview camera motion in 3D before export. Compare raw integration against smoothed presets. Use this to judge the "handheld feel".
Processing
Smooth rates → integrate angles → radians → 24 FPS resampling. This is the technical core. Always smooth rates, never angles.
Export
Generate Roblox-ready animation data. Lua injection is the recommended method. RBXMX is provided as a fallback.
CameraRoot and CameraRot. A single typo will silently fail in Moon Animator.
Tutorial
Follow this guide from start to finish to capture gyro motion, process it, and bring it into Roblox as a realistic handheld camera animation.
1. What You Are Building
GyroCam turns real iPhone motion into cinematic camera animation for Roblox. The idea is simple: rotation comes from the phone, and position comes from you. The phone gives the camera a human feel, while you decide where the camera moves in the scene.
2. The Full Workflow
- Capture motion on your iPhone.
- Send the capture to Processing.
- Preview the motion in the Visualizer.
- Choose the preset that feels right.
- Export the Roblox animation files.
- Import the camera rig into Roblox Studio.
- Run the Lua injector script.
- Bring the animation into Moon Animator.
- Animate the camera position manually.
3. Step One: Start on Your iPhone
- Open the GyroCam website on your iPhone.
- Tap Request Permission.
- Allow motion access when iOS asks.
- Tap Start Recording.
- Move your phone the way you want the camera to feel.
- Tap Stop when the capture is finished.
- Tap Send Capture to Processing.
The live values are the raw gyroscope rotation rates:
alpha, beta, and gamma.
They are measured in degrees per second, not in absolute angles.
4. What the Axes Mean
beta= pitch, up and down movement, mapped to X.alpha= yaw, left and right movement, mapped to Y.gamma= roll, tilt movement, mapped to Z.
5. Step Two: Process the Capture
- The app smooths the gyro rates with EMA.
- The smoothed rates are integrated into angles.
- The angles are converted to radians.
- The result is resampled to 24 FPS.
This is the technical core of the system. The output is now ready for Roblox instead of being just raw sensor noise.
6. Step Three: Check the Visualizer
Open the Visualizer tab to inspect the motion before export. The visualizer shows:
- RAW in orange/red.
- SMOOTH in blue/cyan.
- Live yaw, pitch, and roll values.
- A 3D preview of the camera motion.
- A graph comparing the curves.
Use the playback controls to decide whether the motion feels right. Switch between Handheld, Semi Stable, and Ultra Smooth to compare the look.
7. Picking the Right Preset
Weights: 0.7 / 0.3
Feel: natural, alive, handheld, slightly unstable
Weights: 0.85 / 0.15
Feel: balanced, controlled, still human
Weights: 0.95 / 0.05
Feel: calm, very stable, best for slow shots
8. Step Four: Export the Animation
- Open the Export tab.
- Select the preset you want to use.
- Download the Lua injection script.
- Use the RBXMX fallback only if needed.
The Lua method is highly recommended because it is more reliable inside Roblox Studio.
9. Transfer the File to Your Computer
At this point, you are still on your phone. The exported file needs to be moved to your computer before you can use it in Roblox Studio.
There are multiple ways to do this. Use whatever works for you:
- Google Drive (recommended)
- AirDrop (Mac only)
- USB transfer
Using Google Drive
- Download the
.luafile on your phone. - Open Google Drive.
- Tap Upload and select the file.
- Wait for it to finish uploading.
- On your PC, open Google Drive.
- Download the same file to your computer.
When downloading the file, make sure it is saved as
.lua and not .txt.
If needed, change the file type to “All Files” before saving.
10. Get the Camera Rig
Download the Camera Rig model from the Google Drive link below, then import it into Roblox Studio.
Download Camera Rig (.RBXM)The rig should contain this structure:
CameraRig (Model)
└── CameraRoot (position)
└── CameraRot (rotation)
11. Step Five: Import the Rig Into Roblox Studio
- Download the
.rbxmrig file from Google Drive. - Open it in Roblox Studio.
- Verify that the model contains
CameraRootandCameraRot. - Keep the names exactly as written.
12. Step Six: Run the Lua Injector
- Copy the Lua injection script from the Export tab.
- Paste it into a Script inside
ServerScriptService. - Do not use a LocalScript or ModuleScript.
- Click Run in Roblox Studio.
- The generated KeyframeSequence will appear in
ServerStorage.
When the script runs, it creates the animation data directly in Roblox. This is the recommended path because it is more reliable than drag-and-drop import.
13. Step Seven: Copy the Generated KeyframeSequence
- While the game is running, find the generated KeyframeSequence in
ServerStorage. - Copy it from the Explorer.
- Stop the simulation.
- Paste it back into your project storage if needed.
This keeps the generated animation available even after you stop the test session.
14. Step Nine: Import Everything into Moon Animator
Now you are inside Roblox Studio. This is where the animation becomes usable.
- Open Moon Animator.
- Create a new animation (New Moon 2 File).
- Select your CameraRig as the rig.
At this point, you should see this rig structure:
CameraRig └── CameraRot
Then, import CameraRoot separately from the camera rig in Moon Animator.
Import the Rotation Animation
- Click File → Import in Moon Animator.
- Select the KeyframeSequence you generated earlier.
- Confirm the import.
The animation will be applied to CameraRot.
If nothing moves, make sure:
CameraRotexists and is named exactly the same.- The KeyframeSequence was generated correctly.
- You selected the correct rig when creating the animation.
Understand What Moves What
- CameraRot → handles rotation (DO NOT touch it manually)
- CameraRoot → handles position (this is what you animate)
You now control the camera like a real operator:
you move CameraRoot for positioning, while CameraRot keeps the natural handheld motion.
15. Step Nine: Animate the Camera Position
This is where you become the camera operator.
Use CameraRoot to control the camera’s movement through the scene:
- Move it forward for a push-in.
- Move it sideways for a truck or slide.
- Move it up or down for a tilt-like travel.
- Use it to frame the shot.
CameraRot stays responsible for the gyro-driven handheld feel.
CameraRoot is the artistic movement layer.
16. Why This Works
Real camera operators never move in perfectly clean lines. The tiny imperfections in your hand make the shot feel real. GyroCam captures that feeling and lets you combine it with deliberate camera blocking.
17. Final Result
If everything is set up correctly, you get a camera that feels physically held, not mechanically animated. That is the whole point of GyroCam.