我和一位 DEV 朋友如何让两个 Avatar 复活

发布: (2026年2月16日 GMT+8 14:31)
7 分钟阅读
原文: Dev.to

Source: Dev.to

您提供的内容中只有来源链接,没有需要翻译的正文。请把要翻译的文本粘贴在这里,我会为您翻译成简体中文并保持原有的格式。

合作的开始

我在 DEV Community 上认识了 @webdeveloperhyper,像大多数优秀的网络合作一样,这段合作最初是随意的。

几条信息。一些反馈。宝贵的指导。

随后在某个时刻,话题从“这看起来很酷”转向了“我们一起做点有趣的事吧”。

我们没有过度规划,只是直接开始构建。

他们在日本,我在印度。这意味着整个项目大多在零星的时间里进行——深夜、白天的随机 20 分钟窗口、相隔数小时的消息。进展看起来并不惊人,却在悄悄累积。

不知为何,它成功了。

从基本形状到真实化身

The project 并不是从精致的角色开始的,而是从场景中的简单形状开始的,这些只是用于测试定位、摄像机和基本交互的占位符。

想法很简单:两个角色,一段简短的对话,一些动画。

简单的想法往往隐藏着有趣的问题。

我的第一个真正任务是使用 VRoid Studio 创建化身本身。这本身就是一个学习曲线。导入后,化身并不像角色那样行为——它表现得像一个静态对象。

默认姿势是 T‑pose:手臂伸展开,完全没有生命感。解决这个问题是 第一个小小的胜利——让化身进入中立姿势,手放下,自然站立。

听起来微不足道,但那一刻它不再像模型,而是开始像角色。

从此我们开始叠加手势:

  • 打招呼动画
  • 告别动画
  • 对话中的小动作
  • 一个叹气动画,成了我最喜欢的细节之一

还有一次直接覆盖默认手势的失败尝试,这让我很快意识到动画系统有自己的规则。

编写对话比预期更难

令人惊讶的是,最困难的部分并不是技术层面——而是对话本身的编写。

  • 简短。
  • 自然。
  • 稍带幽默。
  • 不机械。

当对话太长时,会显得生硬;太短则显得空洞。太严肃会失去魅力,太搞笑又会失去可信度。

meme1-spongebobinternalscreaming

找到这种平衡比预想的要多次迭代。我仍然觉得笑点可以更好,但也许这正是好事——它留下了演进的空间。

当渲染头像成为系统性问题

使用现代工具渲染头像本身很简单。真正的挑战在于协调行为。

我们需要让场景管理:

  • who 说话者
  • what 播放的动画
  • when 动画开始的时机
  • when 动画结束的时机
  • when 下一个角色接管的时机

我们没有硬编码行为,而是将对话定义为结构化数据:

const DIALOGUE = [
  {
    speaker: "A",
    text: "I'm Web Developer Hyper. I like to make fun things.",
    animation: "VRMA_03_peace_sign.vrma",
  },
  {
    speaker: "B",
    text: "Hello! I'm Itsugo. And I like turning ideas into something real.",
    animation: "VRMA_04_shoot.vrma",
  },
];

场景只需解释这段序列。这种分离让系统更易于控制、扩展和理解。我们不是强行规定行为,而是对其进行编排。

协调问题

动画并不会自然地告知你的应用何时结束,但时机很重要。下一行不应过早中断,若出现问题系统也不应卡死。

因此,对话系统会等待 either

  • 动画完成 or
  • 安全的超时回退

以先出现者为准。

这个微小的决定让系统具备了弹性。像这样的系统级思考往往比大型功能更为关键。

您可以在此查看!

项目截图

合作的无形部分

让这个项目有意义的并不仅仅是最终成果——而是过程。

  • 修复动画时序
  • 清理不必要的代码
  • 提升可读性
  • 调整手势强度
  • 添加适合初学者的注释

所有这些跨越时区完成。

特别感谢@webdeveloperhyper搭建基础、推动项目进展,并在我们对话中容忍我那拙劣的日语 (ˉ▽ˉ;)… 这个项目正是因为这份共同的努力和耐心而存在。

未来可能的方向

现在只有两个化身在对话,但已经感觉像是更大事物的开端:

  • 交互式角色
  • 故事系统
  • 动态对话
  • 也许还有我们尚未想到的东西

meme2-future scope confusion

而这把我们带到了真正的问题:

我们应该如何推进?

一些关于接下来可能发展的想法,但我们想听听各位粉丝的意见

你会如何在这个项目中玩得开心?
无论听起来多么不切实际,让我们一起在这个副项目中玩得开心吧。

结束语

这最初是两位在网上相遇的开发者之间的小实验。
它提醒了我们为什么副项目很重要。

  • 并不是因为它们完美。
  • 而是因为它们有生命力。

有时,这就足以开启一件有意义的事。

0 浏览
Back to Blog

相关文章

阅读更多 »