рендеринг данных в реальном времени с использованием WebGL - PullRequest
0 голосов
/ 17 сентября 2011

Я новичок в веб-программировании, и мне нужно выполнять рендеринг больших наборов данных DEM в реальном времени с использованием openGL.Пожалуйста, объясните мне, как этого добиться, используя WebGL и javascript.Подход, который я использую для рендеринга, состоит в том, чтобы разбить данные на листы и загрузить нужные плитки.

Кроме того, будут ли задействованы какие-либо сценарии на стороне сервера?

Ответы [ 2 ]

2 голосов
/ 30 сентября 2011

вы можете использовать https://github.com/OpenWebGlobe/WebViewer

1 голос
/ 26 сентября 2011

Хорошо, это довольно большой вопрос.Я сделал рендеринг местности с использованием JS, хотя он был ограничен одной плиткой.

Я думаю, что то, что вы описываете, безусловно возможно с WebGL и Javascript, и, возможно, лучше, чем альтернативы.Существует множество учебных пособий по началу работы с WebGL (например, , основанных на оригинальных учебных пособиях NeHe OpenGL ).Javascript - это гибкий и выразительный язык, на котором вы можете найти множество ресурсов (Даг Крокфорд обладает некоторыми из лучших идей и рекомендаций).

Что касается вашей конкретной проблемы, я бы сгенерировал несколько дескрипторов дляваши плитки, в том числе размер, положение и максимальные и минимальные высоты внутри каждой плитки.Затем используйте область просмотра (область, видимую перед вашей «камерой») и ограничивающий кубоид ваших плиток (определяемый их положением и максимальными / минимальными высотами), чтобы определить, какие из них видны.Вы можете отказаться от любого после указанного максимального расстояния просмотра.Получив набор видимых плиток, вы теперь можете визуализировать их по отдельности.

Я не знаю, в каком формате находятся ваши плитки: либо сетку высот (которую удобно хранить в виде стандартных изображений), либовекторное описание, но это определяет, как вы будете их рендерить.Для сетки высот самый простой способ их визуализации - это несколько полос треугольников.Это означает создание некоторых больших буферов вершин, но вы можете сделать что-то умное.Помимо определенного количества плиток, вам придется управлять тем, какие из них хранятся в виде данных буфера WebGL (и несжатых изображений), а какие освобождаются.

Поскольку ваш вопрос довольно общий и высокий уровень, я 'оставлю мой ответ похожим.Это звучит как интересный проект, и я буду рад любым более конкретным вопросам, которые у вас могут возникнуть.

...