Chinese-English Glossary¶
The site's documentation, source code and issues use one set of terms in both languages. When you write docs or issues, or read the other language's pages, take your wording from this page.
Identifiers (class names, JSON keys, commands, module names, paths, version strings) keep their original form in both languages, and this page gives no translations for them.
Core terminology¶
Grouped by subsystem. The left column is the term used in the English pages, the right column is the Chinese wording that appears in the Chinese pages. Everyday prose outside these tables follows ordinary technical English.
Model and animation¶
| English | 中文 | Notes |
|---|---|---|
| pose | Pose / 姿态 | The code type name is Pose; not posture or stance |
| static pose | 静态姿态 | A constantly sampled clip; channel ownership and reset rules are the same as for any other clip |
| pose blending | 姿态混合 | Layers compose in a fixed order: the base layer sets the reference, additive layers accumulate local motion, override layers replace the masked bone range |
| pose provider | 姿态供应器 | Where Supplier<WorldCameraView> appears it is a Java interface; write Supplier |
| PoseDriver | PoseDriver | Class name, not translated |
| clip | 片段 | "Animation clip" names the same thing |
| named clip library | 命名片段库 | |
| sampler | 采样器 | |
| sample / sampling | 采样 | |
| evaluate / evaluation | 求值 | Not compute: compute is the arithmetic engine package of the formula module |
| timeline | 时间轴 | |
| shared timeline | 共享时间轴 | Driven by a single host; models and the camera only follow it |
| clock | 时钟 | An independent player owns its clock: game ticks advance time, and render frames only sample by partial tick |
| keyframe | 关键帧 | |
| component track | 分量轨道 | Each track drives one component of x / y / z / yaw / pitch / roll / zoom |
| easing | 缓动 | Reuses the model's Easing and applies to the next segment after a keyframe |
| morph | morph | Not translated; not deformation or blend shape |
| material frame | 材质帧 | |
| bone mask | 骨骼掩码 | Affects only the listed bone groups |
| layer | 层 / 状态层 | Multiple layers run in parallel and their poses are composed into the model each tick |
| layered state machine | 分层状态机 | The FSM is a Mecanim-style layered state machine |
| transition | 转移 | |
| guard | 守卫 | All guards must be true for the transition to be allowed |
| trigger | 触发器 | Points at a boolean variable name or id; raising it fires |
| state variable | 状态变量 | |
| cross-fade | 淡入淡出 | Cross-fade for both Chinese wordings; 0 switches immediately |
| variant | 变体 | Not version or edition, which here mean a resource version |
| variant selector | 变体选择器 | |
| context | 上下文 | The Multiplexer's context snapshot; unrelated to the "host frame context" of the rendering framework |
| retargeting | 重定向 | Topology retargeting between skeletons is the integrator's responsibility; code entry point AnimationPlayback.retarget |
| formula track | 公式轨道 | Evaluated every frame |
Skeleton, physics and ragdoll¶
| English | 中文 | Notes |
|---|---|---|
| skeleton | 骨架 / Skeleton | Structures always take skeleton; not framework |
| bone | 骨骼 / Bone | |
| bind pose | 绑定姿态 | Code field bindPoseFollowers |
| skinning | 蒙皮 | Same form for noun and gerund; not skin, since Skin / SkinInstance are the format's skin data in glTF/PMX |
| skin weight | 蒙皮权重 | |
| rigid body | 刚体 | GenericRigidBody is the default for non-PMX content |
| joint | 关节 | |
| constraint | 约束 | |
| limit | 限位 | Only limit / limits, never limiter or position limit |
| reverse mapping | 反向映射 | ikChainsByBone() gives the mapping from a driver bone to every chain that controls it |
| inverse kinematics (IK) | 逆向运动学 / IK | The abbreviation IK is not translated |
| diamond closure | 菱形闭环 | Two bases share a pivot at the bind position and two tips stand for the same closure point. Not diamond constraint or diamond loop |
| closure residual | 闭环残差 | Counts both the tip separation and the base separation; stopping the iteration does not mean convergence, so diagnostics keep residual and satisfied |
| driver bone | 驱动骨 | |
| effector bone | 末端骨 / effector | The field name effector stays; use endpoint only when describing the closure point |
| chain / IK chain | 链 / IK 链 | From base to tip; the last link points at the effector |
| writeback | 写回 | Not feedback or write into |
| fixed step | 固定步长 | KinematicDriver.beginStep(world) runs before every fixed step |
| physics writeback | 物理写回 | Only the hierarchy is rebuilt afterwards; IK cannot be solved again |
| ragdoll | 布娃娃 | |
| active ragdoll | 主动布娃娃 | The same frame's animation/IK targets become bounded PD spring forces and torques; Box3D still handles contacts and joints |
| secondary motion | 次级运动 | Not secondary physics; keys such as include_secondary_bodies are copied verbatim |
| body profile | 主体 profile | profile stays as is; the profile generates capsules, semantic mass and joints from the actual bone segments |
| floating origin | 浮动原点 | The model root's world translation is moved out of the float bone matrices and kept as a separate double worldOrigin |
| large coordinates | 大坐标 | |
| world anchor | 世界锚点 | The double world anchor is kept apart from the local float physics coordinates; environment collision, rays and drag are converted into one simulation frame first |
| solver | 求解器 | CalikoIkSolver offers solve() and results() |
| sleeping | 休眠 | Sleeps a whole group of rigid bodies; turn it off when debugging contacts or continuous airborne simulation |
| impulse | 冲量 | Changes velocity immediately; not momentum; code entry point applyImpulse |
| force / torque | 力 / 力矩 | Integrated by the next native Box3D step; not strength |
| drag | 拖拽 | Creates a kinematic anchor and a spherical joint in native Box3D instead of teleporting the body |
| environment mesh | 环境网格 | StaticEnvironmentMesh incrementally syncs MC terrain through putCell / removeCell; Java never solves collisions |
| contact | 接触 | A negative separation means penetration |
| take over | 接管 | IK takes over the authored local pose of the chain bones; with physics enabled, physics takes over pose evaluation |
| crosshair picking | 准星拾取 | The mouse button (0 is the left button) and the maximum picking distance |
| base body | 素体 | The undressed base humanoid model; not bare model |
Rendering and output¶
| English | 中文 | Notes |
|---|---|---|
| pipeline | 管线 | Not conduit or duct |
| model pipeline | 模型管线 | ModelPipeLine |
| scheduling | 调度 | ModelRenderScheduler keeps one policy per mounted instance, ALWAYS by default |
| visibility | 可见性 | Continuous drawing, explicit host control and the vanilla renderer mark are the three policies |
| culling | 剔除 | Not cropping or clipping |
| frustum | 视锥 | Always view frustum |
| render distance | 视距 | setMaxRenderDistance(instance, blocks) culls by squared camera distance; 0 means unlimited |
| frame mark | 帧标记 | The host renderer calls markRenderedThisFrame within its visible frame; the first model pass calls flipFrame once |
| gate (verb: gating) | 门控 / 闸门 | Two Chinese wordings for one concept, both gate; distance and frustum are extra gates on top of the mode |
| mount | 挂载 | The registry matches mounts by the caller's key; not installation |
| attachment | 装备挂接 | McModelHandle.attachToAnchor / detachFromAnchor |
| camera view | 机位 | One rendering unit inside the same client process; not camera, rig or station |
| multi-camera | 多机位 | Never multi-view (see "Terms that are easy to translate wrongly") |
| view | 视角 | view ID identifies an already rendered view; do not mix it up with camera view |
| main view | 主视角 | Not main camera |
| main frame | 主画面 | MIRROR delivers both the FBO and the display window |
| offscreen | 离屏 | |
| borrow | 借用 | Output is a synchronous read-only borrow on the render thread; consumers may not resize or delete textures |
| read-only borrow | 只读借用 | |
| compositing | 合成 | |
| effect | 效果 | Effects of the same kind share renderers and pipeline state |
| post-processing | 后处理 | |
| scope | 作用域 | A registrar for dynamic content that closes the resources it owns; parent scopes own child scopes |
| descriptor | 描述 | An immutable value that defines a piece of resource configuration |
| generation | 分代 | Shader handles stay stable across resource reloads while the internal compiled instances are replaced per generation |
| upload | 上传 | A GPU upload receives a complete snapshot; the dirty range describes the changed elements |
| in-flight read | 在途读取 | Storage cannot be overwritten while the GPU is still reading it |
| upload ring | 上传环 | UploadRing handles slot rotation, dirty-element merging, version tracking and resource lifetime |
| atlas | 图集 | Base color, normal and specular are packed into three matching atlases |
| material variant | 材质变体 | Same source texture with different parameters produces an independent variant and independent normal/specular sprites |
| straight alpha | 直通 alpha | |
| translucent replay | 半透明回放 | Every draw and every translucent replay records consumption; a completion marker must not be missed even when this frame's data did not change |
| ray marching | 光线步进 | The cloud field is drawn with one sky-covering ray march plus one composite pass, never one full-screen pass per cloud |
| self-shadowing | 自遮光 | The cloud field samples nearby density along the sun direction to approximate its own shadowing |
| batching | 合批 | Static block geometry suits section mesh batching |
| host | 宿主 | The host owns the frame and view entry points; the backend owns resources and drawing |
| backend | 后端 | |
| geometry adapter | 几何适配器 | Converts model representations; the resource factory creates one instance's resources |
| frame output | 帧输出 | The WYSIWYG output entry point for the final frame |
| render thread | 渲染线程 | Register on the render thread and keep the returned registration |
Data-driven¶
| English | 中文 | Notes |
|---|---|---|
| data-driven | 数据驱动 | |
| registration phase | 注册期 | The stage in which a mod writes objects into MC registries (such as BuiltInRegistries.BLOCK) during startup and construction; table headers shorten it to registration |
| reload phase | reload 期 | The resource re-read triggered by /reload; the source is the pack stack, so data packs can override it |
| the two phases | 两个时机 | registration phase and reload phase; not "two timings" |
| domain | 域 | The two arrays of an index manifest: on_register (registration domain) and on_reload (reload domain); code Diagnostics.Domain |
| registration domain / reload domain | 注册域 / 重载域 | |
| bucket | 桶 | A list holding diagnostics, split by mod id and by type; not basket or pail |
| index manifest | 索引清单 | Lists paths only and holds no object definitions; "index file" is the same thing, not list or inventory |
| content file | 内容文件 | The single source of truth for block, item and group definitions |
| top-level type | 顶层类型 | A content file's top-level field name is the top-level registry type and its value must be an array of objects |
| embedded type | 内嵌类型 | Such as block_entities, which is not a top-level field |
| factory | 工厂 | When no factory matches a type, the entry is logged as a WARN and skipped without entering the error bucket |
| factory registration key | 工厂注册键 | The type field of a JSON entry |
| property parser | 属性解析器 | The block-side layer is JsonPropertyParser.registerCompiler; the API name there is compiler |
| registry group | 注册组 | Establishes property grouping (parent / child) |
| embedded block entity | 内嵌方块实体 | |
| last-wins | 后写覆盖 / last-wins | The last write wins for a duplicate effective id; resource pack overrides follow pack stack order; code comments spell it last-wins |
| deduplication | 去重 | DuplicateIdResolver is a pure last-wins deduplication |
| orchestrator | 编排器 | Also written 编排者, same meaning; code ReloadOrchestrator |
| dispatch | 分派 | Code dispatchContent |
| phase | 阶段 | Coexists with the registration and reload phases and denotes a handler's execution stage (PHASE_GROUPS) |
| hot reload | 热更 | New content takes effect right after /reload; some content is loaded once and cannot be hot reloaded |
| pack stack | 包栈 | Read from data packs rather than the jar, so data packs can override these files |
| directory glob | 目录 glob | glob stays as is; declared by FsmReloadHandler.globDirectories() |
| content tree | 内容树 | The parsing layer only builds the raw content tree |
| diagnostics facade | 诊断门面 | diagnostics/Diagnostics.java is the single diagnostics outlet |
| animation clip | 动画剪辑 | A bone / morph / material frame track sampled along a timeline; JSON key animation_clips |
| decoder | 解码器 | A pure file-layer component (StateMachineDefinitionLoader / AnimationClipLoader); parse, decode and solve are independent |
Lifecycle, build and verification¶
| English | 中文 | Notes |
|---|---|---|
| lifecycle | 生命周期 | |
| idempotent | 幂等 | Not idempotency when used as an adjective |
| prepare-then-publish | 先准备,再发布 | A new mount must be prepared successfully before it can be published; on a failed replacement the unpublished new context is closed and the old mount kept |
| invalidate | 失效 | Invalidation and eviction do not modify results already handed out; code invalidate(Model) |
| resource reload | 资源重载 | Cache eviction does not destroy a model that is still rendering; a resource reload requires the host to end its old instances before releasing their borrowed resources |
| source set | 源集 | A Gradle source set, such as contentTesting |
| test fixture | 测试夹具 | Not shipped with the library; not clamp or jig |
| smoke test | 烟雾测试 | |
| verification entry | 验证入口 | Gradle tasks, standalone GL, client acceptance and evidence boundaries |
| client acceptance | 客户端验收 | |
| success marker | 成功标识 | Such as ANCHOR_EQUIPMENT_SMOKE_PASS, with the report in debug/anchor-equipment.json |
| headless | 无窗口 | runClientHeadless is still a full client: hidden by default on desktop platforms, EGL by default on Linux |
| evidence boundary | 证据边界 | A verification record should state compile / JVM, native physics, standalone GL, real client and platform / renderer combination separately |
| outfit | 穿搭 | The code variable name is ModelAssembly outfit; not wardrobe, which names an example page |
| swap | 换装 | Code McModelHandle.switchAssembly; not switch, which collides visually with the Java keyword |
| assembly | 组装 | Code ModelAssembly / ModelAssemblyBuilder |
| part | 组件 / 部件 | |
| hidden region | 隐藏区域 | Expanded into face indices when the Part is built |
| reference remapping | 引用重映射 | Code ModelAssembly.Remap |
| cache key | 缓存键 | Covers part order, the object identity and revision of the source Models, the bone mapping, the final hidden-face set and the dynamics switch |
| anchor | 锚点 | Class name Anchor, not translated |
| display child | 显示子物体 | A display anchor bound to a skinned bone, such as the sword in a player's hand |
| display context | 显示上下文 | The vanilla ItemDisplayContext |
| dominant hand | 惯用手 | bindHands picks the physical hand anchor from the entity's dominant hand |
| namespace | 命名空间 | Unrelated to the formula module's namespace variable (Namespace) |
| resource location | 资源位置 | The code name ResourceLocation stays |
| creative tab | 创建栏 | A vanilla concept; the Chinese pages also say 创意标签页, both creative tab |
| lighting | 光照 | The MC light system (light engine); strictly distinct from shader pack |
| shader pack | 光影 | An Iris shader pack (ShaderPack / PipelineManager), not lighting |
Do-not-translate list¶
These keep their original form in both languages; the examples are the forms that actually appear in the site.
| Category | Examples |
|---|---|
| Class / API names | ModelInstance, ModelTickLoop, SkeletonDynamicsBuilder, CalikoIkSolver, ModelAssemblyCache, RenderPipelineScope, JsonTreeBuilder, ReloadOrchestrator, Diagnostics, McModelHandle |
| JSON keys / field names | on_register, on_reload, state_vars, bone_mask, cross_fade_seconds, alphaCutoff, include_secondary_bodies, model_scale, registry_groups, state_machines, animation_clips, ik_enabled |
| Commands | /reload, /kasuga_data errors, /kasuga_ragdoll deploy, /kasuga_physics block [1-32], /ksglib debug oit, /kasuga_pbr status |
| Module / directory names | modules/modelling, modules/render-core, modules/render-opengl, modules/data-driven, modules/formula, external/slp/javet, contentTesting |
| Version strings | Minecraft 1.21.1, NeoForge 21.1.203, Parchment 2024.11.17, Java 21, GLSL 150, Iris 1.8.12, Box3D commit 30c67b5e6d0a3a66f0f506c69ce9e9e0587e3b7c |
| Abbreviations | FSM, IK, PBR, OIT, WBOIT, MRT, AO, FBO, VBO, TBO, UBO, SSBO, VAO, CCD, AABB, UV, SSS, LabPBR, LRU, LOD, MMD, PMX, PMD, VMD, VPD, glTF, BE (block entity), D1–D6 |
| Technologies / library names | OpenGL, LWJGL, JOML, Blaze3D, Micronaut, DataFixerUpper, Box3D, Caliko, Iris, Sodium, Blockbench, NeoForge, Fabric, Gradle, JUnit |
| Model format names | .bbmodel, .geo.json, .obj, .glb, .gltf, .mmd.zip, .pmx, .pmd, .vmd, .vpd |
| Resource / file paths | data/<namespace>/kasuga_lib/data_driven/, assets/<namespace>/models/model_proxy.json, modules/modelling/run/client/, build/reports/modelAssemblyProbe/report.json |
| Gradle tasks and properties | :modules:modelling:modelUnitTest, :modules:modelling:renderGlTest, renderingReleaseCheck, -PkasugaTestModel=mmd, -PkasugaClientDirectory, -Dkasuga.renderTestModels=false |
| Log strings / success markers | Loaded N JSON entries across M types for mod '<mod id>', ANCHOR_EQUIPMENT_SMOKE_PASS, CAMERA_ANIMATION_SMOKE_PASS, REAL_OVERLAY_SKINNING_PASS, FRAME_WINDOWS_SMOKE_PASS, HEADLESS_CLIENT_SMOKE_PASS, OITVisualTestScene |
| Render states / phase enums | AFTER_ENTITIES, AFTER_TRANSLUCENT_BLOCKS, OPAQUE, MASK, BLEND, MIRROR, OFFSCREEN_ONLY, PHASE_GROUPS / PHASE_CONTENT / PHASE_EMBEDDED, READY / PAUSED / FAILED / CLOSED, ALWAYS / MANUAL / HOST_RENDERER / VANILLA_RENDERER |
| Platform / driver terms | F3 + T, EGL, pbuffer, surfaceless, DPI, read/draw FBO, viewport, fence, storage, orphan, glReadPixels, glFinish, glBlitFramebuffer |
Terms that are easy to translate wrongly¶
Each of these already means something else in rendering, animation or this repository's code, so the wrong pick collides with an established concept. The left column holds the term to use.
| English term | 中文 | ❌ Don't write | Notes |
|---|---|---|---|
| multi-camera | 多机位 | multi-view, multi-viewport |
multi-view already means multiview rendering, which is not the same as this project rendering several camera views in sequence inside one client, each with its own world cache and output |
| camera view | 机位 | camera, rig, station |
A viewpoint, not a physical rig; camera collides with CameraType (Player / Free / Fixed) and the vanilla Camera |
| view | 视角 | camera; don't use 视角 for a camera view |
A view is the output-side route (view ID, main view = main view); camera view is the viewpoint |
| diamond closure | 菱形闭环 | diamond constraint, diamond loop |
constraint collides with the generic constraint used throughout the repository (joint constraint, pose constraint) |
| closure / closed loop | 闭环(通用) | closed chain |
"Chain" is taken by the IK chain (IkChain, links); a closure is not a closed chain but a positional closure imposed on two tips |
| pose | 姿态 | posture, stance, gesture |
posture and stance describe a person's position, which is not the same concept as an animation pose; the code type names are Pose, PoseDriver, ModelPosing |
| pipeline | 管线 | conduit, duct, line |
conduit and duct are physical pipes |
| mount | 挂载 | installation, loading, equip |
Install means installing a mod or a JDK; a mount is a runtime registry entry (mount() / add / remove). Equipment attachment is a separate concept |
| culling | 剔除 | cropping, clipping, cutting |
clipping means clip space and clip planes, not frustum culling |
| frustum | 视锥 | visual cone, view cone |
The fixed term is view frustum |
opaque / mask / blend, translucent for stages |
半透明 / 透明 | transparent for everything |
Materials are split into OPAQUE / MASK / BLEND, and there is a separate vanilla translucent render stage (AFTER_TRANSLUCENT_BLOCKS); "translucent replay" is translucent replay. Writing transparent everywhere erases the three-way split |
| lighting | 光照 | light, shadow |
The MC light system (light engine) |
| shader pack | 光影 | lighting, light and shadow |
An Iris shader pack (each camera view has its own ShaderPack, PipelineManager and material settings) |
| impulse | 冲量 | momentum |
Momentum is a different quantity; the code entry point is applyImpulse |
| force / torque | 力 / 力矩 | strength |
Code entry points applyForce / applyTorque |
| writeback | 写回 | feedback, write into |
feedback is used in this repository only for framebuffer feedback |
| evaluate / evaluation | 求值 | compute, calculation |
compute names the formula module's arithmetic engine |
| parse / decode / solve | 解析 / 解码 / 求解 | mixing the three | parse handles fields and JSON, decode turns them into objects (Decoded / decodeFile), solve handles IK and physics. Three independent mechanisms with their own code names |
| bucket | 桶 | basket, pail, container |
Code clearBucket() |
| domain | 域 | area, region, field |
Code Diagnostics.Domain; region is taken by the bone region (PartBuilder.region) |
| manifest | 清单 | list, inventory |
Code resolveIndexManifests, IndexManifest |
| fixture | 夹具 | clamp, jig |
In maths and graphics clamp is a clamping operation; borrowing it for a test fixture creates ambiguity |
| variant | 变体 | version, edition |
version and revision mean a resource version (long revision) and are part of the cache key |
| skeleton | 骨架 | framework |
framework means the rendering framework here (uml.framework, the UML rendering framework) |