Если я вас правильно понимаю, вы хотите узнать, какой диапазон 3D-координат видим в вашем Viewport3DVisual.
На этот вопрос нет единого ответа. Чтобы понять почему, представьте, что вы сидите за своим кухонным столом и завтракаете и случайно смотрите в окно. Какой горизонтальный диапазон вы видите? Ну, вы можете увидеть около пяти миль от этих голубых гор на расстоянии, но только тридцать футов вашего заднего забора. Другими словами, видимая область - это не прямоугольная призма, а пирамида.
Суть в том, что вам нужно будет указать необходимое расстояние, прежде чем оно станет значимым, какой горизонтальный и вертикальный диапазон видны через окно просмотра.
После того, как вы определили расстояние, вот как отобразить свое окно просмотра на 3D-точки на данной плоскости, не выполняя все вычисления самостоятельно:
- Создание модели в отдельном Viewport3dVisual с использованием тех же настроек камеры, но с моделью, состоящей исключительно из одного большого прямоугольника на желаемом расстоянии.
- Используйте тестирование на попадание, чтобы проверить каждый угол области просмотра, получив обратный вызов результата теста на попадание.
- Извлеките координаты прямоугольника из результата теста попадания и используйте их для своих расчетов.
Преимущество этого метода в том, что он надежно работает в любом месте камеры и работает даже с анимированными камерами и т. Д.
Примечание. Если я неправильно понял вопрос, а вы просто спрашиваете о размещении рядов плиток в 2D, которые будут содержать 3D-контент, то вы можете получить описанный эффект, просто используя WrapPanel. Если вы хотите связать данные, используйте ItemsControl или ListBox с ItemPanelTemplate WrapPanel.