<?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: Evgen Sidorov</title>
    <description>The latest articles on DEV Community by Evgen Sidorov (@vorodis2).</description>
    <link>https://dev.to/vorodis2</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4228802%2Fe6ffbbee-7572-472f-baf8-4417d9784d0b.png</url>
      <title>DEV Community: Evgen Sidorov</title>
      <link>https://dev.to/vorodis2</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vorodis2"/>
    <language>en</language>
    <item>
      <title>AI + Three.js: Building a Physics Playground with Compound Colliders</title>
      <dc:creator>Evgen Sidorov</dc:creator>
      <pubDate>Thu, 05 Nov 2026 14:47:32 +0000</pubDate>
      <link>https://dev.to/vorodis2/ai-threejs-building-a-physics-playground-with-compound-colliders-b6b</link>
      <guid>https://dev.to/vorodis2/ai-threejs-building-a-physics-playground-with-compound-colliders-b6b</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjukgrpck0p4vctts2ll6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjukgrpck0p4vctts2ll6.png" alt=" " width="799" height="649"&gt;&lt;/a&gt;&lt;br&gt;
Try the interactive demo: &lt;a href="https://vorodis2.com/_pyramid/" rel="noopener noreferrer"&gt;https://vorodis2.com/_pyramid/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Build a pyramid, knock it down, drag objects, and explore the collision shapes.&lt;/p&gt;

&lt;p&gt;Source code: &lt;a href="https://github.com/vorodis2/pyramid" rel="noopener noreferrer"&gt;https://github.com/vorodis2/pyramid&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/rfxN_I-pHqU" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;A simple idea that grew&lt;/p&gt;

&lt;p&gt;I started with a simple task: build a pyramid of boxes and hit it with a ball.&lt;/p&gt;

&lt;p&gt;After more than 10 years of developing interactive 3D applications, I wanted to explore how AI could change my workflow. Piramidka became my testing ground: a browser physics playground built with Three.js and OimoPhysics.&lt;/p&gt;

&lt;p&gt;From instructions to interactive controls&lt;/p&gt;

&lt;p&gt;I used an AI assistant in my editor to help implement buttons, sliders, and scene settings.&lt;/p&gt;

&lt;p&gt;I described the behavior I wanted, tried the result, and refined the task. This made it easier to experiment with the interface while keeping my attention on the 3D scene and physics.&lt;/p&gt;

&lt;p&gt;The most interesting part: compound colliders&lt;/p&gt;

&lt;p&gt;A detailed visual mesh is not always a practical collision shape.&lt;/p&gt;

&lt;p&gt;For imported models, the project supports approximating the geometry with multiple convex parts attached to a single rigid body. The green wireframes in the video show these collision shapes.&lt;/p&gt;

&lt;p&gt;The AI assistant helped implement the geometry splitting. A similar task had previously taken me a couple of days.&lt;/p&gt;

&lt;p&gt;This is still an approximation, not an exact triangle-mesh collider. It needs to be checked against the model and the intended interaction.&lt;/p&gt;

&lt;p&gt;Some experiments stayed out of the project&lt;/p&gt;

&lt;p&gt;I also tried Hunyuan 3D to generate scenery and chess pieces. The results did not fit what I needed, so I decided against using them.&lt;/p&gt;

&lt;p&gt;A different approach worked better for the characters: generate a concept image using simple shapes, then recreate it in code with spheres, cylinders, and boxes.&lt;/p&gt;

&lt;p&gt;That is how the spider and ChatGPT-logo-inspired character became part of the scene.&lt;/p&gt;

&lt;p&gt;What changed in my work&lt;/p&gt;

&lt;p&gt;I spend more time describing tasks aloud: what should happen, which constraints matter, and how I will check the result.&lt;/p&gt;

&lt;p&gt;But understanding the architecture has become even more important.&lt;/p&gt;

&lt;p&gt;Once I lose track of where the code belongs and how the parts connect, defining the next task becomes difficult. Generating more code does not solve that problem.&lt;/p&gt;

&lt;p&gt;My experience helps me choose an approach, keep responsibilities clear, and evaluate what the AI produces.&lt;/p&gt;

&lt;p&gt;Try it and share your feedback&lt;/p&gt;

&lt;p&gt;Piramidka is still a work in progress. I'd appreciate feedback on the interaction, collision approximations, and performance on your device.&lt;/p&gt;

&lt;p&gt;🎮 Live demo: &lt;a href="https://vorodis2.com/_pyramid/" rel="noopener noreferrer"&gt;https://vorodis2.com/_pyramid/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💻 Source: &lt;a href="https://github.com/vorodis2/pyramid" rel="noopener noreferrer"&gt;https://github.com/vorodis2/pyramid&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm open to remote roles and project collaborations involving Three.js / WebGL, interactive configurators, physics, and simulations.&lt;/p&gt;

&lt;p&gt;Portfolio &amp;amp; contact: &lt;a href="https://vorodis2.com/" rel="noopener noreferrer"&gt;https://vorodis2.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AI disclosure: I used AI tools during development and to help draft and translate this article. The experience and observations described here are my own.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>gamedev</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
