Programmdokumentation - Inhaltsverzeichnis

About

Durch Implementierung von High-Quality Splatting on Today's GPUs sollen große Mengen von Punkten in hoher Qualität interaktiv gerendert werden. Grundprinzip des Papers ist, dass Punkte einer Oberfläche sich nicht gegenseitig verdecken sondern interpoliert werden. Im folgenden wird erklärt, wie das Programm verwendet wird und wie FilteredSplatsMaterial.js, in dem das Paper implementiert wurde, funktioniert.

Getting started

Minimaler Code der notwendig ist um eine Punktwolke zu laden und zu rendern:
// init potree
var success = Potree.init(document.getElementById("canvas"));

// setup scene
scene = Potree.currentScene;
var cam = scene.activeCamera;
cam.translate(0,4,10);
var light1 = new Light("light1", scene.rootNode);
light1.translate(30, 15, 15);
light1.colour = [1,1,1];

// load pointloud
var file = "../../resources/pointClouds/testclouds/lion_takanawa.ply";
var listener = new PlyLoaderListener();
listener.finishedLoading = function(pointCloud){
	var pointcloudNode = new PointCloudSceneNode("test", scene.rootNode, pointCloud);
	pointcloudNode.transform = 
		[1, 0, 0, 0,
	      0, -1, 0, 0,
	      0, 0, 1, 0,
	      8, 4, 2, 1];
	var material = MaterialManager.getMaterial("pointCloudMat");
	material.renderMode = PointCloudRenderMode.FILTERED_SPLAT;
}
PlyLoader.load(file, listener);
Zuerst wird potree initialisiert und anschließend Szene und Kamera aufgebaut. Da das Laden der Punktwolke im Hintergrund in einem WebWorker geschieht, muss ein Listener erstellt werden der festlegt, was passiert sobald der Ladevorgang abgeschlossen ist. Hier wird ein PointCloudSceneNode mit der Punktwolke erstellt, die an das rootNode angehängt wird. Anschließend wird das SceneNode noch so transformiert, dass es passend liegt und zuletzt wird noch das Material auf FILTERED_SPLAT umgestellt. PointCloudRenderMode.FILTERED_SPLAT sorgt dafür, dass das FilteredSplatsMaterial.js verwendet wird.

Das Program muss von einem WebServer aus aufgerufen werden.

Filtered Splats Material

Mit diesem, in FilteredSplatsMaterial definierten, Material wird der im Paper beschriebene Filter umgesetzt. Da die Multiple Render Targets Extension zurzeit noch nicht unterstützt ist, verwendet dieses Material 4 anstatt der im Paper vorgeschlagenen 3 Passes.