Bốn ảnh chuẩn cho Tripo
ĐạtTrước, sau, trái, phải. Nền trắng, nhìn thẳng không phối cảnh, xe cùng tỉ lệ và cùng độ cao máy ảnh ở cả bốn góc. Ảnh càng sạch thì mesh càng ít méo.




Nhật ký dựng một chiếc xe bán tải chạy được trên web. Mô hình sinh bằng Tripo, được tách thành 116 mảnh, rồi code tìm lại 4 bánh xe, đặt tâm xoay đúng trục và cho xe chạy trong three.js. Khung dưới đây là mô hình thật đang chạy.
Trước, sau, trái, phải. Nền trắng, nhìn thẳng không phối cảnh, xe cùng tỉ lệ và cùng độ cao máy ảnh ở cả bốn góc. Ảnh càng sạch thì mesh càng ít méo.




Tripo dựng mesh đẹp, một texture 4K. Nhưng nút Rig của Tripo chỉ có xương người, nên xương tay chân bị kéo vắt ngang thân xe và mọi chuyển động trong thư viện đều làm xe vặn như cao su. Xe là vật cứng: không cần xương, chỉ cần tách bộ phận và xoay từng khối quanh trục của nó.

Smart Segment chia xe thành 116 mảnh, mỗi màu là một mảnh. Hai bánh sau tách gọn. Hai bánh trước bị nhập chung vào tấm thân hai bên. Cửa xe quá nhiều đường gờ nên tách lỗi, lần này để nguyên cửa.

Script đọc 116 mảnh và lấy ra mọi tam giác nằm trọn trong hình trụ của từng bánh (tâm trục, bán kính 0,41 m, đúng phía trái hoặc phải). Mỗi bánh thành một khối có tâm xoay ngay giữa trục. 112 mảnh còn lại gộp thành thân xe. Đơn vị đổi sang mét, giả định xe dài 5,4 m.


// mỗi khung hình speed += (ga * 7 - speed * 0.35) * dt; heading += speed / WHEELBASE * Math.tan(steer) * dt; truck.position.x += Math.sin(heading) * speed * dt; truck.position.z += Math.cos(heading) * speed * dt; // bánh lăn: ω = v / r for (const w of wheels) w.spin.rotation.x += speed / 0.413 * dt; frontL.rotation.y = frontR.rotation.y = steer; // giảm xóc giả: chúi khi phanh, nghiêng khi vào cua body.rotation.x = -accel * 0.006; body.rotation.z = steer * speed * speed * 0.0009;
Cắt cửa trong Blender theo đường viền, đặt tâm xoay ở bản lề, vá khoang phía sau. Tripo tách cửa lỗi vì bề mặt quá nhiều gờ.
Dải đèn đỏ phía sau sáng mạnh khi phanh. Tiếng động cơ tạo bằng Web Audio, cao độ theo tốc độ.
Đường đua có vật cản, va chạm bằng Rapier. File GLB đã có sẵn tên wheel_FL, wheel_FR, wheel_RL, wheel_RR nên code game tìm bánh theo tên.