<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Thomas Gorisse</title>
    <description>The latest articles on DEV Community by Thomas Gorisse (@thomasgorisse).</description>
    <link>https://dev.to/thomasgorisse</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3875631%2F4a566291-70f1-4381-93c5-6e586ead3c73.jpeg</url>
      <title>DEV Community: Thomas Gorisse</title>
      <link>https://dev.to/thomasgorisse</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thomasgorisse"/>
    <language>en</language>
    <item>
      <title>6 MCP Servers for 3D &amp; AR Development — What AI Can Build Now</title>
      <dc:creator>Thomas Gorisse</dc:creator>
      <pubDate>Mon, 13 Apr 2026 00:14:41 +0000</pubDate>
      <link>https://dev.to/thomasgorisse/6-mcp-servers-for-3d-ar-development-what-ai-can-build-now-g3h</link>
      <guid>https://dev.to/thomasgorisse/6-mcp-servers-for-3d-ar-development-what-ai-can-build-now-g3h</guid>
      <description>&lt;p&gt;What if you could ask Claude "build me a car configurator" and get compilable Android code in 10 seconds?&lt;/p&gt;

&lt;p&gt;MCP (Model Context Protocol) makes this real. An MCP server gives AI assistants access to specialized tools — code generators, validators, domain knowledge — so they produce working code instead of generic suggestions.&lt;/p&gt;

&lt;p&gt;I built 6 MCP servers for 3D and AR development. Here's what each one does and how to use them.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is MCP?
&lt;/h2&gt;

&lt;p&gt;MCP is an open protocol (by Anthropic) that lets AI assistants call external tools. Think of it as plugins, but standardized — one server works with Claude, Cursor, Windsurf, and any MCP-compatible client.&lt;/p&gt;

&lt;p&gt;An MCP server provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tools&lt;/strong&gt;: functions the AI can call (generate code, validate, search)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resources&lt;/strong&gt;: data the AI can read (API docs, samples)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompts&lt;/strong&gt;: pre-built workflows (code review, scaffolding)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The 6 Servers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. sceneview-mcp — General 3D &amp;amp; AR (28 tools)
&lt;/h3&gt;

&lt;p&gt;The flagship. Covers all SceneView features across Android, iOS, and Web.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx sceneview-mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Key tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;generate_scene&lt;/code&gt; — complete scene code from a description&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;validate_code&lt;/code&gt; — catches threading bugs, null handling, wrong APIs&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;search_models&lt;/code&gt; — searches Sketchfab for free 3D models&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;get_sample&lt;/code&gt; — returns working sample code for any feature&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example prompt&lt;/strong&gt;: "Create a 3D product viewer with orbit camera and environment lighting"&lt;/p&gt;

&lt;h3&gt;
  
  
  2. automotive-3d-mcp — Car Configurators &amp;amp; HUD
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx automotive-3d-mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Specialized for automotive UX: car configurators, HUD overlays, 3D dashboards, AR showrooms, parts catalogs. Knows ADAS display patterns, Tier-1 integration requirements, and automotive UX standards.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example prompt&lt;/strong&gt;: "Build a car color configurator with paint + wheel options"&lt;/p&gt;

&lt;h3&gt;
  
  
  3. healthcare-3d-mcp — Medical Visualization
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx healthcare-3d-mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Anatomy viewers, DICOM slice rendering, molecular structures, surgical planning tools, dental scanning visualization. Includes HIPAA-compliant patterns and medical imaging standards.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example prompt&lt;/strong&gt;: "Create an interactive anatomy model with organ highlighting"&lt;/p&gt;

&lt;h3&gt;
  
  
  4. gaming-3d-mcp — Game Development
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx gaming-3d-mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Character controllers, terrain generation, particle systems, physics interactions, inventory UI, NPC behaviors. Covers casual games, not AAA — optimized for mobile.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example prompt&lt;/strong&gt;: "Generate a third-person character controller with jump and attack"&lt;/p&gt;

&lt;h3&gt;
  
  
  5. interior-design-3d-mcp — Room Planning
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx interior-design-3d-mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Room planners, AR furniture placement, material/finish switching, lighting simulation, measurement tools. Knows furniture catalog patterns and real estate staging.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example prompt&lt;/strong&gt;: "Build an AR room planner where users tap to place furniture"&lt;/p&gt;

&lt;h3&gt;
  
  
  6. rerun-3d-mcp — AR Debug Visualization
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx rerun-3d-mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Integration with &lt;a href="https://rerun.io" rel="noopener noreferrer"&gt;Rerun.io&lt;/a&gt; for AR debugging. Stream point clouds, camera poses, anchor positions, and depth maps from your AR app to Rerun's web viewer in real-time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example prompt&lt;/strong&gt;: "Set up Rerun bridge to visualize my AR app's point cloud"&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Install
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Claude Code (CLI):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add sceneview &lt;span class="nt"&gt;--&lt;/span&gt; npx sceneview-mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Claude Desktop / Cursor / Windsurf:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"sceneview"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sceneview-mcp"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace &lt;code&gt;sceneview-mcp&lt;/code&gt; with any of the 6 server names above.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes a Good 3D MCP Server
&lt;/h2&gt;

&lt;p&gt;After building 6 servers, here's what matters:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Complete, compilable code&lt;/strong&gt; — not snippets. The output must build and run.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validation tools&lt;/strong&gt; — catch common mistakes (wrong thread, null model, missing permissions) before the developer runs the code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Domain knowledge&lt;/strong&gt; — not just API docs, but patterns. "A car configurator needs X, Y, Z" is more useful than "here's the ModelNode API."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Working samples&lt;/strong&gt; — every tool returns code that was tested against the real SDK.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Try It Now
&lt;/h2&gt;

&lt;p&gt;The fastest way to test:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install Claude Code if you haven't&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @anthropic-ai/claude-code

&lt;span class="c"&gt;# Add SceneView MCP&lt;/span&gt;
claude mcp add sceneview &lt;span class="nt"&gt;--&lt;/span&gt; npx sceneview-mcp

&lt;span class="c"&gt;# Ask it to build something&lt;/span&gt;
claude &lt;span class="s2"&gt;"Build me an AR app that places 3D furniture on detected surfaces"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All servers are open source and available on npm:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/sceneview-mcp" rel="noopener noreferrer"&gt;sceneview-mcp&lt;/a&gt; — 13k+ monthly installs&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/automotive-3d-mcp" rel="noopener noreferrer"&gt;automotive-3d-mcp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/healthcare-3d-mcp" rel="noopener noreferrer"&gt;healthcare-3d-mcp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/gaming-3d-mcp" rel="noopener noreferrer"&gt;gaming-3d-mcp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/interior-design-3d-mcp" rel="noopener noreferrer"&gt;interior-design-3d-mcp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/rerun-3d-mcp" rel="noopener noreferrer"&gt;rerun-3d-mcp&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/sceneview/sceneview" rel="noopener noreferrer"&gt;github.com/sceneview/sceneview&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;All SceneView MCP servers are open source (Apache 2.0). Contributions welcome.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>claude</category>
      <category>3dprinting</category>
    </item>
    <item>
      <title>The Only Compose-Native 3D &amp; AR Library for Android</title>
      <dc:creator>Thomas Gorisse</dc:creator>
      <pubDate>Mon, 13 Apr 2026 00:07:17 +0000</pubDate>
      <link>https://dev.to/thomasgorisse/the-only-compose-native-3d-ar-library-for-android-2cb3</link>
      <guid>https://dev.to/thomasgorisse/the-only-compose-native-3d-ar-library-for-android-2cb3</guid>
      <description>&lt;p&gt;You're building an Android app with Jetpack Compose. You need 3D. Maybe a product viewer, a model configurator, or AR furniture placement.&lt;/p&gt;

&lt;p&gt;You search. You ask ChatGPT. You try Copilot. And you get: Unity (50MB+, no Compose), raw Filament (1000 lines to render a cube), or Sceneform (deprecated since 2021).&lt;/p&gt;

&lt;p&gt;There's a gap. &lt;strong&gt;Android has no built-in 3D composable.&lt;/strong&gt; Until now.&lt;/p&gt;

&lt;h2&gt;
  
  
  SceneView: 3D as a Composable
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/sceneview/sceneview" rel="noopener noreferrer"&gt;SceneView&lt;/a&gt; treats 3D the same way Compose treats UI: declaratively. &lt;code&gt;SceneView { }&lt;/code&gt; is a composable like &lt;code&gt;Column { }&lt;/code&gt; or &lt;code&gt;LazyList { }&lt;/code&gt;. Nodes are composables. State is Kotlin state.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;&lt;span class="nf"&gt;implementation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"io.github.sceneview:sceneview:4.0.0"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Display a 3D model in 15 lines
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;&lt;span class="nd"&gt;@Composable&lt;/span&gt;
&lt;span class="k"&gt;fun&lt;/span&gt; &lt;span class="nf"&gt;ProductViewer&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;val&lt;/span&gt; &lt;span class="py"&gt;engine&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;rememberEngine&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="kd"&gt;val&lt;/span&gt; &lt;span class="py"&gt;modelLoader&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;rememberModelLoader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;engine&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="nc"&gt;SceneView&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;modifier&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Modifier&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fillMaxSize&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
        &lt;span class="n"&gt;engine&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;engine&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;modelLoader&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;modelLoader&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;cameraManipulator&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;rememberCameraManipulator&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nf"&gt;rememberModelInstance&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;modelLoader&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"models/sneaker.glb"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;?.&lt;/span&gt;&lt;span class="nf"&gt;let&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nc"&gt;ModelNode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;modelInstance&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;scaleToUnits&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;1.0f&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;autoAnimate&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Place &lt;code&gt;sneaker.glb&lt;/code&gt; in &lt;code&gt;src/main/assets/models/&lt;/code&gt;. The model loads asynchronously, &lt;code&gt;rememberModelInstance&lt;/code&gt; returns null while loading, then triggers recomposition. No callbacks, no lifecycle — just state.&lt;/p&gt;

&lt;h3&gt;
  
  
  What you get out of the box
&lt;/h3&gt;

&lt;p&gt;SceneView includes 26+ composable node types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ModelNode&lt;/strong&gt; — GLB/glTF models with animation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CubeNode, SphereNode, CylinderNode&lt;/strong&gt; — primitive geometry&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ImageNode&lt;/strong&gt; — textured quads&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VideoNode&lt;/strong&gt; — video textures on 3D surfaces&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LightNode&lt;/strong&gt; — point, spot, directional lights&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TextNode&lt;/strong&gt; — 3D text billboards&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ViewNode&lt;/strong&gt; — any Compose UI in 3D space&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All powered by Google Filament — the same PBR engine used in Google Maps and Android Auto.&lt;/p&gt;

&lt;h2&gt;
  
  
  AR in Compose: One More Import
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;&lt;span class="nf"&gt;implementation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"io.github.sceneview:arsceneview:4.0.0"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;&lt;span class="nd"&gt;@Composable&lt;/span&gt;
&lt;span class="k"&gt;fun&lt;/span&gt; &lt;span class="nf"&gt;ARFurniturePlacement&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;val&lt;/span&gt; &lt;span class="py"&gt;engine&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;rememberEngine&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="kd"&gt;val&lt;/span&gt; &lt;span class="py"&gt;modelLoader&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;rememberModelLoader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;engine&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="kd"&gt;val&lt;/span&gt; &lt;span class="py"&gt;anchors&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;remember&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;mutableStateListOf&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Anchor&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;()&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="kd"&gt;val&lt;/span&gt; &lt;span class="py"&gt;chair&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;rememberModelInstance&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;modelLoader&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"models/chair.glb"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="nc"&gt;ARSceneView&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;modifier&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Modifier&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fillMaxSize&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
        &lt;span class="n"&gt;engine&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;engine&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;modelLoader&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;modelLoader&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;planeRenderer&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;onTouchEvent&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;hitResult&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="p"&gt;-&amp;gt;&lt;/span&gt;
            &lt;span class="n"&gt;hitResult&lt;/span&gt;&lt;span class="o"&gt;?.&lt;/span&gt;&lt;span class="nf"&gt;let&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;anchors&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;it&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createAnchor&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;anchors&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;anchor&lt;/span&gt; &lt;span class="p"&gt;-&amp;gt;&lt;/span&gt;
            &lt;span class="n"&gt;chair&lt;/span&gt;&lt;span class="o"&gt;?.&lt;/span&gt;&lt;span class="nf"&gt;let&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="p"&gt;-&amp;gt;&lt;/span&gt;
                &lt;span class="nc"&gt;AnchorNode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;anchor&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;anchor&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="nc"&gt;ModelNode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                        &lt;span class="n"&gt;modelInstance&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                        &lt;span class="n"&gt;scaleToUnits&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.8f&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                        &lt;span class="n"&gt;isEditable&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;true&lt;/span&gt;
                    &lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;isEditable = true&lt;/code&gt; gives you drag, pinch-to-scale, and two-finger rotate. AR state is Compose state — when &lt;code&gt;anchors&lt;/code&gt; changes, the scene recomposes.&lt;/p&gt;

&lt;p&gt;Supported AR features: plane detection, image tracking, face mesh, cloud anchors, geospatial anchors, depth occlusion, light estimation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Not Unity / Filament / Sceneform?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;SceneView&lt;/th&gt;
&lt;th&gt;Unity&lt;/th&gt;
&lt;th&gt;Raw Filament&lt;/th&gt;
&lt;th&gt;Sceneform&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Compose native&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;APK size&lt;/td&gt;
&lt;td&gt;~5MB&lt;/td&gt;
&lt;td&gt;~50MB+&lt;/td&gt;
&lt;td&gt;~3MB&lt;/td&gt;
&lt;td&gt;~5MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AR built-in&lt;/td&gt;
&lt;td&gt;Yes (ARCore)&lt;/td&gt;
&lt;td&gt;Plugin&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Active&lt;/td&gt;
&lt;td&gt;v4.0.0 (2026)&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Deprecated (2021)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Learning curve&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Very high&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scene graph&lt;/td&gt;
&lt;td&gt;26+ node types&lt;/td&gt;
&lt;td&gt;Full engine&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;5 node types&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cross-platform&lt;/td&gt;
&lt;td&gt;Android, iOS, Web&lt;/td&gt;
&lt;td&gt;All&lt;/td&gt;
&lt;td&gt;Android only&lt;/td&gt;
&lt;td&gt;Android only&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;SceneView wraps Filament internally — same rendering quality, 100x less code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cross-Platform: Same API, Native Renderers
&lt;/h2&gt;

&lt;p&gt;SceneView also supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;iOS/macOS/visionOS&lt;/strong&gt;: SwiftUI + RealityKit (native Apple renderer)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Web&lt;/strong&gt;: Kotlin/JS + Filament.js (WASM)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flutter&lt;/strong&gt;: PlatformView bridge&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React Native&lt;/strong&gt;: Fabric bridge&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each platform uses its native renderer — no cross-compiled runtime. The API mirrors across platforms: &lt;code&gt;SceneView { ModelNode(...) }&lt;/code&gt; works on Android and iOS.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI-First: Ask Any AI to Build Your 3D App
&lt;/h2&gt;

&lt;p&gt;SceneView is designed so that AI assistants generate correct code on the first try:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://sceneview.github.io/llms.txt" rel="noopener noreferrer"&gt;llms.txt&lt;/a&gt;&lt;/strong&gt; — 3000-line machine-readable API reference&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.npmjs.com/package/sceneview-mcp" rel="noopener noreferrer"&gt;MCP Server&lt;/a&gt;&lt;/strong&gt; — 28 tools for Claude/Cursor (install: &lt;code&gt;npx sceneview-mcp&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Copilot/Cursor/Windsurf rules&lt;/strong&gt; — IDE-specific code generation patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Try it: open Claude and ask "build me an AR app with SceneView." The MCP server provides validated samples and the full API, so you get compilable code.&lt;/p&gt;

&lt;p&gt;Industry-specific MCP servers are also available:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;npx automotive-3d-mcp&lt;/code&gt; — car configurators&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;npx healthcare-3d-mcp&lt;/code&gt; — medical visualization&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;npx gaming-3d-mcp&lt;/code&gt; — game development&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;npx interior-design-3d-mcp&lt;/code&gt; — interior design&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Get Started
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;&lt;span class="c1"&gt;// build.gradle.kts&lt;/span&gt;
&lt;span class="nf"&gt;implementation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"io.github.sceneview:sceneview:4.0.0"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;    &lt;span class="c1"&gt;// 3D only&lt;/span&gt;
&lt;span class="nf"&gt;implementation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"io.github.sceneview:arsceneview:4.0.0"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   &lt;span class="c1"&gt;// 3D + AR&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/sceneview/sceneview" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; (1.2k+ stars)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sceneview.github.io/llms.txt" rel="noopener noreferrer"&gt;Full API Reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/sceneview-mcp" rel="noopener noreferrer"&gt;MCP Server&lt;/a&gt; (13k+ monthly installs)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discord.gg/sceneview" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;SceneView is open source (Apache 2.0) and actively maintained. Try it in your next Compose project.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>android</category>
      <category>kotlin</category>
      <category>jetpackcompose</category>
      <category>augmentedreality</category>
    </item>
  </channel>
</rss>
