``` Claude 的 3D 工作技巧 ```
Claude Tips for 3D Work

原始链接: https://www.davesnider.com/posts/claude-3d

## Claude 作为编程伙伴:摘要 在2026年,作者在软件开发中高度依赖 Claude Code,尤其是在 NeoVim 中建立初始架构和设计(CSS、API)后生成代码。虽然 Claude 的输出需要大量的“清理”——通常通过*进一步的 Claude 建议*实现——但作者已经培养了在代码生成过程中进行干预并防止错误的能力。 Claude 在 2D 任务和 CSS 推理方面表现出色,但在复杂的 3D 空间分析方面遇到困难。3D 项目的成功取决于创建“迭代验证循环”——自动化系统,让 Claude 可以独立测试其工作。这包括从多个角度生成截图,添加调试标记(如球体),并将结果与期望结果进行比较,所有这些都不需要人工干预。 关键在于从*询问* Claude 转向*展示* Claude,通过工具建立“共享语言”。这意味着优先考虑“可读输出”(如记录坐标)并自动化视觉验证。作者在 Table Slayer 和 Counter Slayer 等项目中的工作流程涉及编写脚本来捕获视图、分析几何体和重新生成 STL 文件,从而使 Claude 能够自我纠正并验证其 3D 作品。

Hacker News 新闻 | 过去 | 评论 | 提问 | 展示 | 招聘 | 提交 登录 Claude 3D 工作技巧 (davesnider.com) 11 分,来自 snide 2 小时前 | 隐藏 | 过去 | 收藏 | 1 条评论 帮助 mungoman2 4 分钟前 [–] 非常好。我一直苦恼于同样的问题。>与其期望它理解我的请求,我几乎总是先构建工具,以便我们有一个共同的语言来讨论项目。这可能是关键。我发现这在一般情况下都是正确的。构建模型可以使用的简单工具,有助于以非常有用的方式构建问题。回复 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请 YC | 联系 搜索:
相关文章

原文

Although I’m sometimes uneasy about it, Claude Code is an invaluable tool for my current projects. I still occasionally hand write code in NeoVim on the bits I care the most about (CSS, design and early architecture like API patterns), but I now leave most of the actual code writing to the machine once I have the skeleton up. That’s not to say I think the code it outputs is always great. I perform a heavy dose of sanitation after the fact, though even that is done through more suggestions to Claude. I do watch the edit feed live, and have built up the skill of speed reading so that I can stop Claude in its tracks when its does something naughty.

This works for most web projects really well. Where I’ve found Claude still can’t reason is in “visual” work that needs eyes. It can reason about CSS fairly well, and does an OK job understanding design language and color theory when prompted, but it’s the more complex tasks like spatial analysis in 3D where it always fails. Claude has great tooling for reading plain 2D images though, and when presented a set of images of 3D space from different angles, along with the right reference language, it can usually figure something out. A lot of my early work in Table Slayer, and Counter Slayer, both heavy 3D web apps, involved me manually taking screenshots and saying something like “check this out, you did it wrong”. It took HOURS of back and forth mostly because I was the one who needed to feed it screenshots.

Using Claude to build complex 3D scenes like this can be tricky

Like most, I learned quickly that when working with Claude, you need to think in terms of “readable outputs” when working with LLMs. For most, this is a test layer. During the exploratory experience of design though, you typically don’t have tests, and make do with asking it to create lots of temporary logging. For 3D projects this might be things like positioning and coordinates. This works to a degree, but is laborious and often done after you’ve hit a wall of failure. CAD systems have lots of unions and subtractions. Just because there’s a box there, it doesn’t mean its visible.

Natively, Claude can’t read an STL. It will tell you it can, but after you realize it’s just bullshiting you about the contents of the binary, you’ll end up down a road where it wants to install a bunch of Python libraries to view the files. This is sort of useful for reading STLs, and will give it a way to rotate a camera and zoom in on certain positions, but its not very useful for a Three.js web app where your problem is in the CAD system building the 3D in the first place.

To solve those sorts of problem you need to generate a real context loop where it can read the state of the application, navigate the camera, add some debug markers and iterate. The core loop is asking it to navigate the app on its own, control the camera, and add visual markers (think red spheres to give it position context) to test itself. I’ve found generating these types of “iterative validation” loops essentially for working with Claude. This allows it to double check its work before before it assumes it solves a problem.

Here’s the loop for Counter Slayer.

## Geometry Iteration Workflow
 
When making geometry changes, use this self-contained loop to iterate without user intervention:
 
### The Loop
 
1. Make code changes to geometry (lid.ts, counterTray.ts, box.ts)
2. Regenerate STLs: npx tsx scripts/generate-geometry.ts
3. Verify with renders: npx tsx scripts/capture-view.ts --angle iso
4. Read project.json for positions and layout data
5. Check multiple angles, zoom into problem areas
6. If not correct, go back to step 1
7. When satisfied, inform the user

The full Claude.md is here and goes into more detail, but this is the heart of the workflow. “The loop” gives it a way to navigate the app with playwrite, select different 3D objects (like trays or boxes), change the camera, place a red sphere on it at a certain position, check a screenshot, and see if that screenshot matches the request. More importantly it does it without asking me for confirmation.

As an example, here’s the tooling to let it navigate around.

# View from preset angles
 
npx tsx scripts/capture-view.ts --angle iso
npx tsx scripts/capture-view.ts --angle top
npx tsx scripts/capture-view.ts --angle front
 
# Zoom in
 
npx tsx scripts/capture-view.ts --angle left --zoom 3
 
# Custom camera position (Three.js Y-up coordinates)
 
npx tsx scripts/capture-view.ts --pos "100,80,150" --look-at "0,25,50"
 
# Output to specific file
 
npx tsx scripts/capture-view.ts --angle top --out mesh-analysis/view-top.png
 
# View specific items by ID (selects item and sets appropriate view mode)
 
npx tsx scripts/capture-view.ts --trayId nrme206 --angle bottom --zoom 2

Overall I’ve started to change my thinking about how to work with Claude. Instead of expecting it to understand my requests, I almost always build tooling first to give us a shared language to discuss the project. Screenshot loops are a great way to build that language.

联系我们 contact @ memedata.com