@adatechnology/game-characters-three

中文文档
0.9.5发布于 2026/11/06MITTypeScriptES Module构建来源已验证近 30 天下载 3548

三.j. 为@adatechnology/game-charracters作的介绍:引人注意的人群体(GPU动画、LOD、烘焙、变体、飞行肢)和富人体(Bestiário v17建造者、配有配件和手的幸存者、动画师、伤口、眼睛).

中文使用文档

@adatechnology/game-charraters- 三号机车

三.j. 介绍 @adatechnology/game-characters. 3.js 由主办方传入(import * as THREE from 'three'),所以同一代码从捆绑者或从平版脚本(英语:dist/index.global.js 揭露 GameCharactersThree 联合国.

出现人群 (游戏的文学口,G 65336-65541):

  • buildInstancedBody(THREE, { segments, body? }):合并的几何学(torso,头部,发型,下巴,眼睛,手臂,腿部)被用骨,支点和材料来标记;16,10和5个段是三个层次的细节. body 默认为 TEAM_GAME; 任意 BodySpec 移动关节.
  • BODY_CHUNK 编号 : createBodyChunk:GPU所平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起平起. createBodyMaterial 添加了斑点和发光的眼睛.
  • createBodyBatch数字 : begin, (中文(简体) ), push 每个身体, end;一个画召一个完整的变体.
  • bakeBody 财务报告和审定财务报表 bakeVariants:将一具丰富的躯体烘烤成可显示几何;游戏的三种变体规则(7000 + c·101 + v·13) (中文(简体) ).
  • createFlyingLimbs:40个被撕开的碎片会飞出,弹出并停留,并有注射出血的效果.
import * as THREE from 'three'
import { buildInstancedBody, createBodyBatch } from '@adatechnology/game-characters-three'

const time = { value: 0 }
const batch = createBodyBatch(THREE, buildInstancedBody(THREE, { segments: 10 }), { max: 700, time })
scene.add(batch.mesh)
batch.begin()
batch.push({ a: [x, z, yaw, phase], b: [1.8, 1, stride, 0], c: [missingMask, infection, 1, skinTone], color: { r: 0.3, g: 0.4, b: 0.5 }, eye: { r: 1, g: 0.2, b: 0.1 } })
batch.end()
time.value += dt

尸体的声音和血迹 联 合 国 @adatechnology/game-audio 和正在运行的电影 @adatechnology/game-fluids-three:

  • createCharacterSound(host.audio, { style? })数字 : voice(typeId, 'idle' | 'alert' | 'special', position) 13个不死类型(UNDEAD_VOICES游戏的呻吟和尖叫,艺术场景 voice 呻吟 有尖叫 有跳跃 有页面的类规则 对于它没有的类型, body(event, position) (伤=肉,切=断,裂或裂=去), player('grab' | 'bite' | 'hurt')16个配方CHARACTER_SOUND_BANK)留下与团队代码相同的痕迹.
  • createFluidsBridge({ sink, film }) 财务报告和审定财务报表 bloodLookOfAge(age)(单位:千美元) body 事件将血液滴入胶片,在感染年龄的新鲜而干燥的颜色中(ages.json, (中文(简体) ), old_blood 对于瘦的.

玩家阿凡达. createPlayerAvatar(THREE, options?) 是团队游戏的玩家身体: 由Bestiário/Elenco所建的富人 presets/player-avatar.json (单位:千美元){ type: 'Lento', human: true, seed: 4242, skin, hs: 'short', hair }衬衫 0x3d5a73),具有压倒性 { spec, shirtColor, clips, blend, fallSeconds, cascade, clipCascade } (单位:千美元)clipCascade,默认 5 : 关节跟随的速度是多少倍,而一个不循环播放的片段,所以一击通过撞击到达了它的姿势.

const player = createPlayerAvatar(THREE)
scene.add(player.root)
player.update(dt, { speed, crouch, down, armed, pitch, hip }) // the gait is tied to the ground speed (cadence and swing from `walkCadence`/`walkGait`)
player.hand('R').add(weaponMesh) // a socket at the weapon hand
player.play('grabbed_bitten_human', { onEvent: (event) => event.type === 'impact' && applyBlow() }) // or player.play(myClip); player.on('event', fn); player.stop()

蹲下和瞄准的手臂从游戏的GPU平面代码(BODY_CHUNK,引用的行 src/player/avatar.ts蹲着就是大腿 -0.95膝盖 1.9后备箱 +0.25臀部 臀部 -0.35· ; 向下转动身体±1.5 弧度,在相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相; armed 如下 (pitch + 1) / 3。 。 。 . play 覆盖 a PoseClip 联 合 国 @adatechnology/game-characters (单位:千美元)channels: 'upper' 将双腿留给后腿;而只蹲下一脚取出双腿,因此一拳或后卫保持低调)与0.12 s相混合并放出其事(出声:impact, (中文(简体) ), phase一次通过 onEvent 财务报告和审定财务报表 on('event')。 。 。 . hand('R') 是武器手(木偶右手,在-x). 姿势片段 armL编号 :legL 频道移动该侧( t)arms[1]编号 :legs[0]),这样 punch_right 财务报告和审定财务报表 front_kick 联 合 国 ATTACK_CLIPS 驱动 armL 财务报告和审定财务报表 legL第一人称视图显示的同一只手臂和腿.

在试验室. room.setAvatar(toRoomAvatar(player, { strikeClips: ATTACK_CLIPS })) (或 defaultCharacterClips() 联 合 国 game-kit-defaults,它也有第一人称剪辑),显示在玩家脚下的身体(toRoomAvatar 只翻出投出: 房间计算一个向上看作为正向看, 球队比赛显示为向下看) V 切换在第一人称和第三人称之间 @adatechnology/game-test-room。 。 。 . createAvatarTestModule({ avatar, camera, state }) 区域中的模块 avatar_area (单位:千美元)AVATAR_AREA_ID:取景(第1/3人)的长凳按钮,蹲起,站起,倒起,起起,武装起/起, 每个已注册剪辑一个按钮( q)Tocar: grabbed_bitten_human, (中文(简体) ), grab_bite_zombie,并与 clips: [...POSE_CLIPS, ...ATTACK_CLIPS] 拳打脚踢和后坐力; clipLocales 给出相位文本)并停止; 用于相机,剪辑播放,最后剪辑事件和关节的度量. 每一个动作都是JSON记录中的一行({"type":"avatar","action":"play_clip","clip":...}包括剪辑活动,以及 impact 事件也获得自己的 {"action":"impact","clip":...,"t":...} 线条. 模块取出身体,取出视野(camera: { mode, set })并州(state: { set }(按选择和进口) @adatechnology/game-contracts。 。 。 .

toRoomAvatar 也给房间 strike(clipId),它弹出攻击弹夹在身体上(攻击的唯一来源,第一和第三人),并回答从该弹夹读取的撞击数秒(两种观点都相同). strike(clip, { leg: 'left' }) 踢出左脚 strike(clip, { hand: 'left' }) 以左手出拳:身体上弹夹的镜子(出自"左传"mirrorPoseClip编号 <clip>_left) (中文(简体) ). 在拳打脚踢之后 impact 类型 punch) 身体持有警卫(guardClip默认值 'fight_guard', (中文(简体) ), false (无) guardHold 秒(默认为1.2),而它静静地站着, 所以一个组合去守卫, 拳击, 守卫; 拳击混合在 punchBlend (默认为0.05 s). 走走跑跑 武器或被扣留的物品 放下了警卫.

第一人称臂. createFirstPersonArms(THREE, { colors?, rig?, stances?, clips?, blend?, bob? }) 将袖子(上臂取出,前臂取出,肘取出,袖取出)和手取出于相机空间的皮肤(手掌取出四指取出三段取出,拇指取出后紧紧握住),外加右腿取出,只在踢出时才显示. arms.update(dt, { camera, targets, stance, speed, running, crouch, contact? })页:1 relaxed 财务报告和审定财务报表 fists 姿势是休息姿势(FIRST_PERSON_STANCES从 presets/first-person-arms.json, (中文(简体) ), hold 沿着 HandTargets 联 合 国 game-contracts (世界空间)从固定肩上取出一双骨头的IK,肘向下弯曲并出;一个无法到达的目标被夹住(肩部移动) reachShift 向着它第一. arms.play('punch_right' | 'shove_two_hands' | 'front_kick') 覆盖 a FirstPersonClip (单位:千美元)FIRST_PERSON_CLIPS 联 合 国 game-characters-people,与攻击片段相同的持续时间和撞击秒; arms.on('event', fn) 给它 impact· ; arms.handPose(side) 读取手被抽出的地方. contact(origin, direction, maxDistance) (可选的;与第一地表相距或为空)使手和踢脚在沿相机向前行走的地表(肘弯)前停下几毫米; arms.play('front_kick', { leg: 'left' }) 踢出左脚 arms.play('punch_right', { hand: 'left' }) 用左手出拳(镜中夹子的手). 手框:x手腕到指关节,y后手,z小指侧;左手为右相镜.

几何

建造者createPersonBuilder, (中文(简体) ), createBestBuilder, (中文(简体) ), bakeBody, (中文(简体) ), buildInstancedBody, (中文(简体) ), createFlyingLimbs, (中文(简体) ), createEye绘制与 shapeGeometries(host) 联 合 国 game-shapes-three盒子、圆筒、圆锥、圆圈、戒指、花环和托里都来了 取自同为字节的游戏形状;十二面体,形状和胶囊几何为三相. tests/exact-golden.test.ts 保持每一点 旧道创造了它们.

版本与发布记录

@adatechnology/game-characters-three 共发布 27 个版本,首次发布于 2026/10/24;过去 12 个月发布了 27 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.9.5latest2026/11/06今天
0.9.42026/11/042 天前
0.9.32026/11/042 天前
0.9.22026/11/042 天前
0.9.12026/11/042 天前
0.9.02026/11/042 天前

关于 @adatechnology/game-characters-three 的常见问题

@adatechnology/game-characters-three 是什么?

三.j. 为@adatechnology/game-charracters作的介绍:引人注意的人群体(GPU动画、LOD、烘焙、变体、飞行肢)和富人体(Bestiário v17建造者、配有配件和手的幸存者、动画师、伤口、眼睛).

如何安装 @adatechnology/game-characters-three?

在项目目录运行 npm install @adatechnology/game-characters-three,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:three(^0.160.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@adatechnology/game-characters-three 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@adatechnology/game-characters-three 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@adatechnology/game-characters-three 可以商用吗?

@adatechnology/game-characters-three 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@adatechnology/game-characters-three 的下载量有多少?

根据 npm 官方下载统计,@adatechnology/game-characters-three 在 2026/10/05 – 2026/11/03 这 30 天内被下载 3,548 次,日均约 118 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@adatechnology/game-characters-three 还在维护吗?

最新版本 0.9.5 发布于 2026/11/06(今天);至今共发布 27 个版本,其中过去 12 个月发布了 27 个;首次发布于 2026/10/24。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。