Taptap制造制作3d模型的注意事项。。
03/29177 浏览综合
现在让嗒啦啦搭建场景时,虽然默认是用方块和椭球,但实际上taptap制造是支持创建多面体的,但你得和它说清楚要使用“多面体生成方法” 。
不过目前为止嗒啦啦对这引擎的3d化还不是很熟悉,在坐标系转换等各种问题上很容易出错。所以我这让他自己做了个文档来做快速参考,文档丢下面了,一般让他看着文档的情况下就不容易出错了。

多面体生成的地图
通过prompt约束生成方法实际上能产生一些比较奇奇怪怪的程序化角色

有下巴和头发的方块人

抽象lowpoly人
=======================把下面文档直接丢进文档库里=======================
# 方块角色编辑器 — 坐标系与旋转约定
## 基础坐标系(Y-up 左手系,与 Unity 相同)
```
+Y (上)
|
|
|_______ +X (右)
/
/
+Z (前/面朝方向)
```
- **Y 轴**:向上
- **X 轴**:向右
- **Z 轴**:向前(角色面朝方向)
面片绕序:CustomGeometry 从 +Z 方向看(面外朝观察者),需要是 逆时针 (CCW)。
---
## 旋转规则
`Quaternion(θ, axis)` 遵循**右手定则**:拇指指向轴正方向,四指弯曲方向为正角方向。
> 无论引擎坐标系是左手还是右手,Urho3D/UrhoX 的 Quaternion 旋转始终使用右手定则。
---
## 各轴旋转速查表
### 绕 Z 轴(FORWARD)— 用于手臂左右展开
手臂默认从 -Y(自然下垂)出发:
| 角度 | 方向向量 | 含义 | 典型用法 |
|------|---------|------|---------|
| 0° | (0, -1, 0) | 自然下垂 | 默认 |
| **+90°** | **(1, 0, 0)** | **指向右 (+X)** | **右臂 T-Pose** |
| **-90°** | **(-1, 0, 0)** | **指向左 (-X)** | **左臂 T-Pose** |
| +170° | (0.17, 0.98, 0) | 上偏右 | 右臂举手 |
| -170° | (-0.17, 0.98, 0) | 上偏左 | 左臂举手 |
| +60° | (0.87, -0.5, 0) | 右偏下 | — |
| -60° | (-0.87, -0.5, 0) | 左偏下 | — |
| -130° | (-0.64, 0.77, 0) | 左偏上 | Dab 跨身遮脸 |
**记忆口诀**:
- **正角 = 向右(+X)**,负角 = 向左(-X)
- **左臂向左展 → 负角**,右臂向右展 → 正角
### 绕 X 轴(RIGHT)— 用于前后摆动、弯曲
肢体默认从 -Y(自然下垂)出发:
| 角度 | 方向向量 | 含义 | 典型用法 |
|------|---------|------|---------|
| 0° | (0, -1, 0) | 自然下垂 | 默认 |
| **+90°** | **(0, 0, -1)** | **指向后 (-Z)** | **膝盖弯曲(小腿向后)** |
| **-90°** | **(0, 0, 1)** | **指向前 (+Z)** | **髋关节前伸(坐下)** |
| +30° | (0, -0.87, -0.5) | 下偏后 | 腿后摆 |
| -30° | (0, -0.87, 0.5) | 下偏前 | 腿前摆 |
**记忆口诀**:
- **正角 = 向后(-Z)**,负角 = 向前(+Z)
- 走路摆臂:手臂向前摆 → 负角;手臂向后摆 → 正角
- 膝盖弯曲(小腿向后折)→ 正角
- 肘部弯曲(前臂向前收)→ 负角
### 绕 Y 轴(UP)— 用于水平转向
| 角度 | 含义 |
|------|------|
| +θ | 向右转(顺时针俯视) |
| -θ | 向左转(逆时针俯视) |
本项目暂未使用。
---
## 常见陷阱
### 1. FORWARD 轴符号最易搞反
这是最常犯的错误。直觉上容易把"左臂向左"写成正角,实际应为负角。
```lua
-- ❌ 错误:左臂指向了右边
SetRot("leftShoulderPivot", Quaternion(90, Vector3.FORWARD))
-- ✅ 正确:左臂指向左边
SetRot("leftShoulderPivot", Quaternion(-90, Vector3.FORWARD))
```
**验证方法**:用 T-Pose 检查,左臂必须指左,右臂必须指右。
### 2. 跨身动作是有意的反向
某些动作中手臂会刻意跨过身体中线(如 Dab 的右臂遮脸),此时右臂用**负角**是正确的:
```lua
-- ✅ Dab:右臂跨身向左遮脸,负角是故意的
SetRot("rightShoulderPivot", Quaternion(-130, Vector3.FORWARD) * ...)
```
### 3. 头部/躯干倾斜方向
绕 FORWARD(Z) 旋转头部/胸部时,符号含义与手臂一致:
- **正角 = 向右倾**
- **负角 = 向左倾**
```lua
-- Dab 时头向右偏(埋入右肘)
SetRot("neckPivot", Quaternion(30, Vector3.FORWARD) * ...) -- +30 = 右偏
```
### 4. 弯肘 vs 弯膝方向相反
- **肘部弯曲**(前臂收向身前)= 绕 RIGHT 轴**负角**(前臂向 +Z 前方)
- **膝盖弯曲**(小腿折向身后)= 绕 RIGHT 轴**正角**(小腿向 -Z 后方)
```lua
SetRot("leftElbowPivot", Quaternion(-60, Vector3.RIGHT)) -- 前臂向前弯
SetRot("leftKneePivot", Quaternion(40, Vector3.RIGHT)) -- 小腿向后弯
```
### 5. 抱胸/交叉动作的内收方向
抱胸时双臂向身体中线内收:
- **左臂向右内收 → FORWARD 正角**
- **右臂向左内收 → FORWARD 负角**
```lua
SetRot("leftShoulderPivot", ... * Quaternion(20, Vector3.FORWARD)) -- 左臂右收
SetRot("rightShoulderPivot", ... * Quaternion(-20, Vector3.FORWARD)) -- 右臂左收
```
---
## 自检清单
编写或修改 pose 代码后,对照检查:
- [ ] T-Pose:左臂水平指左(-90°),右臂水平指右(+90°)
- [ ] 举手:左臂上偏左(负角),右臂上偏右(正角)
- [ ] 走路:手臂与腿反向摆动(RIGHT 轴)
- [ ] 弯肘用负角(RIGHT),弯膝用正角(RIGHT)
- [ ] 跨身动作(Dab)的符号是否故意反向,并加了注释说明


