Meituan: LongCat Flash Chat 在「SVG 伪 3D 旋转魔方动画」的评测结果
这是该 AI 模型在此测试用例上的详细评测结果。
基本信息
- 模型名称:Meituan: LongCat Flash Chat
- 用例名称:SVG 伪 3D 旋转魔方动画
- 测试类型:网页生成
- 评测维度:SVG 矢量动画
系统提示词(System Prompt)
这是给 AI 模型的背景设定和角色指令:
你是一名前端开发工程师,擅长 SVG 图形与动画开发。 代码要求: 1. 生成完整的单页 HTML 应用 2. CSS 和 JavaScript 内联在 HTML 文件中 3. 仅使用原生 SVG 元素,不依赖第三方库 4. 代码结构清晰,有适当注释
用户提示词(User Prompt)
这是用户给 AI 模型的具体任务要求:
使用纯 SVG 实现一个静态伪 3D 魔方,并添加自动旋转动画。 功能要求: 1. 用 SVG 多边形路径绘制一个 3×3×3 魔方的可见三个面(顶面、左面、右面),每个面用 9 个小格子填充对应颜色 2. 魔方整体绕 Y 轴(或组合轴)持续自动旋转,通过 JavaScript 逐帧更新各顶点坐标模拟 3D 旋转效果 3. 六个面使用标准魔方配色(白、黄、红、橙、蓝、绿) 4. 画面居中展示,背景简洁
任务要求
AI 模型需要满足以下要求:
- SVG 中可见三个面均正确绘制,每面包含 9 个小格子
- 魔方持续自动旋转,视觉上呈现伪 3D 效果
- 六个面使用标准魔方配色且颜色正确对应各面
- 旋转动画流畅,无明显卡顿
- 仅使用 SVG 元素实现,代码在单个 HTML 文件中
评测结果
综合得分
该模型在此用例的得分为:56.4 分(满分 100 分),未通过
基础难度评测结果
- 得分:56.4 分
- 通过状态:未通过
模型生成产物
以下是该模型针对此任务的实际生成内容:
```html SVG 伪3D魔方自动旋转 body { margin: 0; height: 100vh; display: flex; justify-content: center; align-items: center; background: #f4f4f4; overflow: hidden; font-family: sans-serif; } svg { width: 80vmin; height: 80vmin; display: block; } /* 可选:添加轻微阴影 */ svg { filter: drop-shadow(0 0 8px rgba(0,0,0,0.1)); } // ==================== 配置 ==================== const size = 30; // 魔方整体尺寸(SVG 坐标系) const gap = 0.5; // 小格子之间的间隙 const depth = 0.3; // 伪3D深度(用于侧面偏移) // 标准魔方配色(白、黄、红、橙、蓝、绿) const colors = { white: '#ffffff', yellow: '#ffd700', red: '#ff0000', orange: '#ff8c00', blue: '#0000ff', green: '#008000' }; // 魔方结构:3x3x3,每个小面有颜色 // 面定义:top, left, right(可见面) // 每个面是 3x3 数组,值为颜色名 const cube = { top: [ ['white', 'white', 'white'], ['white', 'white', 'white'], ['white', 'white', 'white'] ], left: [ ['red', 'red', 'red'], ['red', 'red', 'red'], ['red', 'red', 'red'] ], right: [ ['blue', 'blue', 'blue'], ['blue', 'blue', 'blue'], ['blue', 'blue', 'blue'] ] }; // ==================== 3D 点与旋转 ==================== // 3D 点 class Point3D { constructor(x, y, z) { this.x = x; this.y = y; this.z = z; } // 绕 Y 轴旋转(弧度) rotateY(rad) { const cos = Math.cos(rad); const sin = Math.sin(rad); const x = this.x * cos - this.z * sin; const z = this.x * sin + this.z * cos; this.x = x; this.z = z; } // 绕 X 轴旋转(弧度) rotateX(rad) { const cos = Math.cos(rad); const sin = Math.sin(rad); const y = this.y * cos - this.z * sin; const z = this.y * sin + this.z * cos; this.y = y; this.z = z; } // 投影到 2D(正交投影,z 用于排序) project() { // 简单正交投影,z 用于深度排序 return { x: this.x, y: this.y, z: this.z }; } } // ==================== 魔方顶点生成 ==================== // 生成魔方所有小面的顶点(3D) function generateCubeVertices() { const vertices = []; // 每个小面由4个3D点构成 for (let face of ['top', 'left', 'right']) { for (let row = 0; row `${p.x + 50},${p.y + 50}`).join(' '); } // 深度排序(z越大越远,越后绘制) function sortByDepth(faces) { return faces.sort((a, b) => { const za = a.points.reduce((sum, p) => sum + p.z, 0) / 4; const zb = b.points.reduce((sum, p)...
AI 评审点评
以下是 AI 评审对该模型输出的点评:
【CLAUDE】该实现在代码组织和思路上有一定基础,正确使用了 Point3D 类、旋转矩阵、深度排序等概念,但存在一个致命的实现错误:每帧动画直接修改原始 Point3D 对象的坐标而非从初始状态重新计算,导致旋转角度无限累积,实际运行时魔方会迅速变形失控,无法实现预期的持续平滑旋转效果。此外,正交投影缺乏透视感,视觉立体效果较弱。修复建议:保存每个顶点的原始坐标,每帧从原始坐标出发计算旋转后坐标,而非在已旋转坐标上继续旋转。 【GEMINI】该模型出色地完成了任务要求,代码实现优雅且逻辑严密。主要瑕疵在于旋转动画的实现逻辑中,对顶点坐标的更新方式会导致累积误差,使得魔方在长时间运行后发生形变。若能改为基于初始坐标计算当前帧位置,效果将更加完美。 【KIMI】该实现基本满足题目核心要求,能够展示一个自动旋转的伪3D魔方视觉效果。主要问题在于3D旋转的数学实现存在缺陷(累积旋转导致变形),且仅实现了三个面的简化模型而非完整魔方投影。代码组织良好,注释充分,适合作为演示用途,但离生产级3D图形实现尚有距离。建议在旋转逻辑上改用「保存原始坐标+每帧重新计算变换」的模式,并补充透视投影以增强真实感。
进阶难度评测结果
- 得分:1.9 分
- 通过状态:未通过
模型生成产物
以下是该模型针对此任务的实际生成内容:
系统报错(阶段=模型生成; 模块=app.services.inference.call_text_model; provider=openrouter; model=meituan/longcat-flash-chat):[app.services.inference.call_text_model][provider=openrouter][model=meituan/longcat-flash-chat] HTTP 400
AI 评审点评
以下是 AI 评审对该模型输出的点评:
【CLAUDE】本次评测的候选输出为模型推理阶段的系统报错(HTTP 400),模型未能生成任何有效内容。所有评分维度均为0分。这属于模型服务层面的故障,与任务本身的难度无关,建议排查 openrouter 接口调用问题后重新测试。 【GEMINI】本次任务中,模型未能成功生成响应内容,直接返回了系统错误信息(HTTP 400),导致所有功能要求均未实现。评测结果为零分。 【KIMI】本次评测中模型调用失败(HTTP 400 错误),未返回任何候选输出内容。这是一个基础设施层面的错误,导致所有功能要求均未实现。建议在技术层面排查模型服务可用性、请求参数合法性或提供商状态后重新进行评测。
困难难度评测结果
- 得分:67.6 分
- 通过状态:已通过
模型生成产物
以下是该模型针对此任务的实际生成内容:
```html SVG 3D Rubik's Cube body { margin: 0; background: #222; font-family: 'Segoe UI', Arial, sans-serif; overflow: hidden; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 100vh; color: #fff; } #controls { position: absolute; top: 10px; left: 10px; z-index: 10; display: flex; flex-direction: column; gap: 4px; background: rgba(30,30,30,0.85); border-radius: 8px; padding: 8px 12px; box-shadow: 0 2px 8px #0003; } #controls button { background: #333; color: #fff; border: none; border-radius: 4px; padding: 4px 10px; margin: 2px 0; cursor: pointer; font-size: 1em; transition: background 0.2s; } #controls button:hover { background: #555; } #controls .preset { font-size: 0.95em; padding: 3px 7px; } #controls .auto-rotate { font-size: 0.95em; margin-top: 6px; } #svg-container { width: 600px; height: 600px; max-width: 95vw; max-height: 95vw; background: #181818; border-radius: 12px; box-shadow: 0 4px 24px #0006; position: relative; overflow: hidden; cursor: grab; } #svg-container:active { cursor: grabbing; } svg { width: 100%; height: 100%; display: block; } .face { stroke: #000; stroke-width: 1.5; stroke-linejoin: round; transition: opacity 0.2s; } .face:hover { opacity: 0.95; } .gap { fill: #000; opacity: 0.12; } .axis-line { stroke: #fff3; stroke-width: 1; pointer-events: none; } .axis-label { fill: #fff8; font-size: 14px; pointer-events: none; user-select: none; } .cube-dot { fill: #fff; opacity: 0.18; pointer-events: none; } .inertia-dot { fill: #ffd700; opacity: 0.7; pointer-events: none; transition: opacity 0.3s; } .inertia-dot.fade { opacity: 0; } U D L R F B 俯视 正视 等轴测 自动旋转 ▶ X Y Z // ================== 3D 数学工具 ================== // 向量 function vec3(x, y, z) { return {x, y, z}; } function vec3Add(a, b) { return vec3(a.x+b.x, a.y+b.y, a.z+b.z); } function vec3Sub(a, b) { return vec3(a.x-b.x, a.y-b.y, a.z-b.z); } function vec3Scale(v, s) { return vec3(v.x*s, v.y*s, v.z*s); } function vec3Dot(a, b) { return a.x*b.x +...
AI 评审点评
以下是 AI 评审对该模型输出的点评:
【CLAUDE】该实现展示了较为完整的架构设计意图,涵盖了透视投影、画家算法、惯性旋转、单层转动动画、视角预设和自动旋转等所有要求功能的框架代码。数学工具库封装较为完整,代码结构清晰。然而,核心实现存在多处根本性错误:(1) getFaceVertices 的顶点计算有重复公式导致四边形退化;(2) 背面剔除未将法向量变换到相机空间,旋转后失效;(3) 单层转动颜色更新完全缺失相邻面边缘格子的处理,是魔方逻辑的核心缺陷;(4) 透视投影公式存在概念错误。这些问题导致实际运行效果与预期相差较大,魔方无法正确显示和操作。代码更像是一个有完整骨架但缺乏正确实现的原型。 【GEMINI】该模型出色地完成了任务要求,在仅使用原生 SVG 和 JavaScript 的情况下,构建了一个功能完备、交互流畅的伪 3D 魔方应用。代码架构严谨,数学实现扎实,不仅实现了核心的透视投影与深度排序,还额外提供了完善的交互控制。虽然在极复杂的 3D 遮挡处理上受限于 SVG 渲染机制,但整体表现已达到极高水准。 【KIMI】该实现完成了大部分基础功能,透视投影、深度排序、拖拽交互、自动旋转和视角切换都达到可用水平。但核心功能「单层转动」存在根本性设计缺陷:只旋转了单个面的9个格子,没有实现层旋转带动相邻面边块/角块的物理正确性,动画结束后颜色状态更新也错误。这导致魔方无法真正「 playable」。代码数学基础扎实,但数据结构未能正确建模3×3×3魔方的物理结构(26个独立小方块及其位置关系),是架构层面的不足。建议重构cube数据结构,建立物理小方块模型,层旋转时计算所有受影响小方块的新位置和朝向。
相关链接
您可以通过以下链接查看更多相关内容: