# bone-option-pitfalls

Hello, this is **OtakuSolutions**.

Today, we'd like to share the **pitfalls of 3ds Max Bone options** that many people — from rigging beginners to seasoned professionals — surprisingly overlook, along with **real-world incident cases** they cause.

### 😱 A Real Case: "I Imported the Animation and the Character Was Deformed"

When working on rigging, you may encounter these baffling situations.

1. **Case A (Engine Mismatch):** The bone's **Squash** effect looks great in the Max viewport, but when uploaded to the engine (Unity/Unreal), the character's shape doesn't move at all.
2. **Case B (Data Ghost):** After saving (Save/Load Animation) and reloading animation data, strange **Scale values appear on bones** that were never touched, causing the rig to twist.

---

### 🔍 Why Does This Happen?

#### 1. The Difference Between "Visual Rendering" in the Viewport and "Actual Data"

The stretch and squash in Bone options are "fake deformations" that only look convincing **within the 3ds Max viewport**.

- **Actual Data:** Transform (Position, Rotation, Scale) values do not change at all.
- **Result:** Since the engine operates based on "data," bones whose data hasn't changed naturally won't move in the engine. It's like saying "Oh, it works great!" looking only at the Max screen, then getting blindsided by the engine.

#### 2. Data Confusion When Loading Animations

The bigger problem occurs when reusing animation data. If you save and load animation with Bone options enabled, Max tries to forcibly convert these "visual deformations" into "data" and causes errors.

- **Result:** **Scale values like 1.1 or 0.9** get injected into bones where none existed, causing the entire workflow to break down when replacing rigs or reusing animations.

---

### 💡 The Professional Rigger's Solution: "Honest Rigging"

A professional game rigger should use **proper methods** instead of shortcut options.

- **LookAt Constraint & Script Controller:** If you want to control bone length, design the rig structure yourself so that **actual Scale values** change by calculating the distance between two points.
- **Data Transparency:** Only then will the result be identical in the engine, and numerical values won't drift when exchanging animation data.

---

### 🚀 [Tool] For Accident Prevention: Batch Bone Option Off Script

If you're worried about bones you've already worked on, use the script below to remove all "smoke-and-mirrors options" from every bone at once. It's the first step back to proper rigging.

```maxscript
-- Bone의 가짜 스트레치/스쿼시 옵션을 완전히 끄고 데이터 혼선을 막습니다.
for b in objects where classof b == BoneGeometry do (
    b.realignSelf = false
    b.freezeLength = false -- 길이 고정 해제 (데이터 계산 방해 방지)
    b.stretch = #none      -- 가짜 스트레치 해제
    b.sidefin = false      -- (선택사항) 불필요한 핀 제거
    print (b.name + " : Clean up completed.")
)
```

---

### 📝 In Summary

> **"Rigging is done with 'data,' not with your eyes."**
> Bone options may seem convenient, but in game production, they can actually be harmful. Check your bone settings right now!
@@