From 58fdf41a96eea11d48bd4f21eb08790a94f9d836 Mon Sep 17 00:00:00 2001 From: Matthias Konitzny <konitzny@ibr.cs.tu-bs.de> Date: Thu, 17 Jun 2021 12:06:01 +0200 Subject: [PATCH] Nodes now render images if provided. Nodes now display their name. (Nodes without image are not clickable atm). --- datasets/aud1.json | 3 ++- datasets/images/alpha.png | Bin 0 -> 5728 bytes datasets/images/eulertouren.png | Bin 0 -> 32956 bytes graph.js | 42 +++++++++++++++++++++++++++++--- kg-style.css | 24 ++++++++++++++++++ knowledge-space.php | 4 ++- 6 files changed, 68 insertions(+), 5 deletions(-) create mode 100644 datasets/images/alpha.png create mode 100644 datasets/images/eulertouren.png diff --git a/datasets/aud1.json b/datasets/aud1.json index 0afcb96..0909f9a 100644 --- a/datasets/aud1.json +++ b/datasets/aud1.json @@ -24,7 +24,8 @@ }, { "id": "id6", - "name": "Eulertouren" + "name": "Eulertouren", + "image": "eulertouren.png" }, { diff --git a/datasets/images/alpha.png b/datasets/images/alpha.png new file mode 100644 index 0000000000000000000000000000000000000000..94e03360f41349d7c37fe9ce441ea964f7494c26 GIT binary patch literal 5728 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 DAwBKO literal 0 HcmV?d00001 diff --git a/datasets/images/eulertouren.png b/datasets/images/eulertouren.png new file mode 100644 index 0000000000000000000000000000000000000000..f6e5b7b82e0597b8db45e7d3be5af5a39f9a52cc GIT binary patch literal 32956 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 ILSTaS0i2h3OaK4? literal 0 HcmV?d00001 diff --git a/graph.js b/graph.js index b07e756..48d21f4 100644 --- a/graph.js +++ b/graph.js @@ -13,19 +13,23 @@ loadGraph(); async function loadGraph() { const dataUrl = plugin_path + 'datasets/aud1.json' const gData = await fetch(dataUrl).then(res => res.json()) - Graph = ForceGraph3D() + Graph = ForceGraph3D({extraRenderers: [new THREE.CSS2DRenderer(), new THREE.CSS3DRenderer()]}) (document.getElementById('3d-graph')) .graphData(gData) .nodeLabel('id') .nodeAutoColorBy('group') .nodeColor(node => highlightNodes.has(node) ? node === hoverNode ? 'rgb(255,0,0,1)' : 'rgba(255,160,0,0.8)' : 'rgba(0,255,255,0.6)') - .linkWidth(link => highlightLinks.has(link) ? 4 : 1) + .linkWidth(link => highlightLinks.has(link) ? 2 : 0.8) .onNodeClick(handleNodeClick) .onNodeHover(nodeHover) .onLinkHover(linkHover) .linkColor(linkColor) .linkOpacity(0.8) - .onEngineTick(loadComponents).width(getWidth()); + .nodeThreeObjectExtend(false) + .nodeThreeObject(drawNode) + .onEngineTick(loadComponents) + .width(getWidth()); + //Graph.renderer().sortObjects = true; } @@ -63,6 +67,38 @@ function getCanvasDivNode() { return domNode.firstChild.firstChild.firstChild; } +function drawNode(node) { + // Draw node as label + image + const nodeDiv = document.createElement('div'); + group = new THREE.Group(); + + const labelDiv = document.createElement('div') + labelDiv.textContent = node.name; + labelDiv.style.color = node.color; + labelDiv.className = 'node-label'; + nodeDiv.appendChild(labelDiv); + + const cssobj = new THREE.CSS3DSprite(nodeDiv); + cssobj.scale.set(0.25, 0.25, 0.25); + + if ('image' in node) { + cssobj.position.set(0, -7, 0); + + const textureLoader = new THREE.TextureLoader(); + const imageTexture = textureLoader.load(plugin_path + 'datasets/images/' + node.image); + const imageAlpha = textureLoader.load(plugin_path + 'datasets/images/alpha.png'); + const material = new THREE.SpriteMaterial({map: imageTexture, alphaMap: imageAlpha, transparent: true, + alphaTest: 0.2, depthWrite:false, depthTest: false}); + const sprite = new THREE.Sprite(material); + sprite.renderOrder = 999; // This may not be optimal. But it allows us to render the sprite on top of everything else. + sprite.scale.set(20, 20); + group.add(sprite) + } + + group.add(cssobj) + return group; +} + function createInfoOverlay() { const sceneNode = getCanvasDivNode(); diff --git a/kg-style.css b/kg-style.css index 3bf3dbf..070e166 100644 --- a/kg-style.css +++ b/kg-style.css @@ -2,6 +2,29 @@ display: flex; } +.node-image { + width: 20px; + height: 20px; + position: relative; + overflow: hidden; + border-radius: 50%; + display: inline; + margin: 0 auto; +} + + +.node-label { + font-size: 14px; + color: white; + font-weight: bold; + /*text-align: center;*/ + padding: 1px 4px; + border-radius: 4px; + background-color: rgba(0,0,0,0.7); + user-select: none; + z-index: 1; +} + .close-button { pointer-events: all; z-index: 99; @@ -21,6 +44,7 @@ height: 100%; background-color: whitesmoke; padding: 10px; + z-index: 20; } .detail-view-headline { diff --git a/knowledge-space.php b/knowledge-space.php index 9cd5f47..b03271b 100644 --- a/knowledge-space.php +++ b/knowledge-space.php @@ -11,6 +11,8 @@ function ks_add_graph(): string { $graph = '<script src="//unpkg.com/3d-force-graph"></script>'; $three = '<script src="//unpkg.com/three"></script>'; + $renderer = '<script src="//unpkg.com/three/examples/js/renderers/CSS2DRenderer.js"></script>'; + $renderer2 = '<script src="//unpkg.com/three/examples/js/renderers/CSS3DRenderer.js"></script>'; $div = '<div id="3d-graph"></div>'; $plugin_dir = plugin_dir_url(__FILE__); //$dataset = $plugin_dir.'datasets/miserables.json'; @@ -20,7 +22,7 @@ function ks_add_graph(): string $script_path = $plugin_dir.'graph.js'; $script = "<script src='$script_path'></script>"; - return $graph . $three . $div . $variables . $script; + return $three . $renderer .$renderer2 . $graph . $div . $variables . $script; } function kg_load_css() { -- GitLab