Дайджесты новостей
Физическая миниатюра и диорама с 3D-рельефом карты Средиземья и неоновыми траекториями синтеза Perplexity Computer.

3D-карта Средиземья силами Perplexity Computer: кейс пространственного агентного синтеза

Большинство из нас привыкли воспринимать Perplexity как продвинутый поисковый сервис: вбиваешь сложный запрос, поисковый агент бегает по сотням страниц, находит релевантные цитаты и компилирует аккуратный ответ с кликабельными сносками. Полезно? Безусловно. Но принципиально ли это отличается от того, что делали поисковики последние двадцать лет? Не совсем.

Однако недавний эксперимент исследовательской группы Perplexity Computer показывает тектонический сдвиг: переход от пассивного информационного поиска к концепции полноценного цифрового созидателя (Digital Worker Paradigm). Системе поставили творческую и одновременно тяжелую инженерную задачу: полностью с нуля, без единой строчки заготовленного кода или готовых 3D-моделей, создать и развернуть интерактивную трехмерную карту Средиземья по книгам Дж. Р. Р. Толкина.

Вместо того чтобы выдать краткую историческую справку о Гондоре и Мордоре, Perplexity Computer развернул изолированную виртуальную вычислительную среду Linux и начал многочасовой автономный процесс проектирования.

Топологический синтез Средиземья: 179 локаций, 41 река и строгая геометрия

Первым и самым сложным этапом стала конвертация сотен страниц неструктурированных художественных текстов, карт-вклеек и фанатских энциклопедий в строгую реляционную модель пространственных данных.

В автономном режиме агент выполнил следующие операции:

  • Извлек и верифицировал трехмерные координаты 179 ключевых географических объектов (крепости, города, горные перевалы, тайные убежища вроде Ривенделла).
  • Сформировал математические векторные полилинии для 41 речной системы (включая русло Андуина со всеми притоками).
  • Восстановил геометрию 23 основных сухопутных трактов и дорог.
  • Провел валидацию топологической непротиворечивости: чтобы реки не текли вверх по склонам холмов, а расстояния между городами в точности соответствовали описаниям дневных переходов персонажей в первоисточнике.

Фрагмент структуры географических маркеров, которую агент скомпилировал на первом шаге, выглядит следующим образом:

{
  "project": "middle_earth_spatial_map",
  "total_entities": 179,
  "rivers_count": 41,
  "roads_count": 23,
  "landmarks": [
    { "id": "loc_01", "name": "Minas Tirith", "x": 210.5, "z": 340.2, "elevation": 45.0, "region": "Gondor" },
    { "id": "loc_02", "name": "Mount Doom", "x": 420.0, "z": 290.8, "elevation": 120.0, "region": "Mordor" },
    { "id": "loc_03", "name": "Rivendell", "x": -80.4, "z": -310.6, "elevation": 30.5, "region": "Eriador" }
  ]
}

Автономный кодинг на Three.js: от генерации высот до интерактивной сцены

После формирования базы геоданных агент перешел к роли фронтенд-инженера. Внутри изолированной песочницы Perplexity Computer написал полноценное клиентское веб-приложение на JavaScript с библиотекой Three.js.

Система сгенерировала процедурную карту высот (Heightmap) для горных цепей Мглистых гор и Белых гор, настроила шейдеры освещения, процедурный туман, добавила интерактивные маркеры с всплывающими информационными карточками и подключила контроллер орбитальной камеры (OrbitControls) для свободного перемещения пользователя по трехмерному миру.

Ниже приведен ключевой фрагмент сгенерированного агентом кода инициализации сцены:

import * as THREE from 'three';
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls';

const scene = new THREE.Scene();
scene.background = new THREE.Color(0x0a0e17);

const camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 1, 5000);
camera.position.set(0, 800, 1200);

const renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

const controls = new OrbitControls(camera, renderer.domElement);
controls.enableDamping = true;

// Интерактивные маркеры локаций, сгенерированные агентом
const markerGeometry = new THREE.SphereGeometry(6, 16, 16);
const markerMaterial = new THREE.MeshBasicMaterial({ color: 0xffaa00 });

const locations = [
  { name: "Minas Tirith", x: 210, z: 340, elevation: 45 },
  { name: "Mount Doom", x: 420, z: 290, elevation: 120 },
  { name: "Rivendell", x: -80, z: -310, elevation: 30 }
];

locations.forEach(loc => {
  const marker = new THREE.Mesh(markerGeometry, markerMaterial);
  marker.position.set(loc.x, loc.elevation, loc.z);
  marker.userData = { name: loc.name };
  scene.add(marker);
});

function animate() {
  requestAnimationFrame(animate);
  controls.update();
  renderer.render(scene, camera);
}
animate();

Что этот кейс меняет в индустрии разработки

Самое поразительное в этом эксперименте — способность системы самостоятельно отлаживать ошибки. Когда WebGL-рендер в первый раз упал из-за неверной передачи буфера геометрии, агент прочитал стек-трейс ошибки в консоли браузера, нашел проблемную строчку и исправил ее без вмешательства человека.

Это наглядное доказательство того, что современные агенты выходят на уровень законченных проектных задач: от абстрактной постановки цели до развертывания готового интерактивного продукта.