ngraph.three

3D graph renderer powered by three.js

Github星跟踪图

ngraph.three

This is a 3d graph renderer, which uses three.js as a rendering engine.
This library is a part of ngraph project.
Please check out ngraph.pixel - it is also developed with three.js,
however it uses lower level primitive (ShaderMaterial)
which allows it to be really fast (the price is flexibility of your UI model).

usage

Basic example:

// Create graph:
var createGraph = require('ngraph.graph');
var graph = createGraph();
graph.addLink(1, 2);

// And render it
var nthree = require('ngraph.three');
var graphics = nthree(graph);

graphics.run(); // begin animation loop

Very often it is required to do something with scene before animation frame is rendered. To do so
use onFrame() callback:

var nthree = require('ngraph.three');
var graphics = nthree(graph);

graphics.onFrame(function() {
 console.log('Frame is being rendered');
});
graphics.run(); // begin animation loop

Configuration

You can configure renderer in many ways. To do so you can pass settings object to the function. Calling

var nthree = require('ngraph.three');
var graphics = nthree(graph);

Is equivalent of calling:

var nthree = require('ngraph.three');
var graphics = nthree(graph, {
   // allow users to zoom/pan with mouse wheel:
  interactive: true,
  
  // DOM element where to render the graph:
  container: document.body,
  
  // Custom settings for physics engine simulator
  physicsSettings: {
      // Ideal length for links (springs in physical model).
      springLength: 30,

      // Hook's law coefficient. 1 - solid spring.
      springCoeff: 0.0008,

      // Coulomb's law coefficient. It's used to repel nodes thus should be negative
      // if you make it positive nodes start attract each other :).
      gravity: -1.2,

      // Theta coefficient from Barnes Hut simulation. Ranged between (0, 1).
      // The closer it's to 1 the more nodes algorithm will have to go through.
      // Setting it to one makes Barnes Hut simulation no different from
      // brute-force forces calculation (each node is considered).
      theta: 0.8,

      // Drag force coefficient. Used to slow down system, thus should be less than 1.
      // The closer it is to 0 the less tight system will be
      dragCoeff: 0.02,

      // Default time step (dt) for forces integration
      timeStep : 20
   },
  
  // custom 3d layout:
  layout: require('ngraph.forcelayout3d')(graph, this.physicsSettings),
  
  // Custom three.js renderer:
  renderer: isWebGlSupported ? new THREE.WebGLRenderer(this) : new THREE.CanvasRenderer(this),

  // allow clients to reuse custom three.js scene:
  scene: new THREE.Scene(),  
  
  // custom three.js camera:
  camera: new THREE.PerspectiveCamera(75, this.container.clientWidth/container.clientHeight, 0.1, 3000)
});

You can always override any of these settings with your own.

examples

Many examples are available in ngraph repository

install

With npm do:

npm install ngraph.three

license

MIT

主要指标

概览
名称与所有者anvaka/ngraph.three
主编程语言JavaScript
编程语言HTML (语言数: 2)
平台
许可证MIT License
所有者活动
创建于2014-01-22 04:22:25
推送于2019-04-01 02:40:52
最后一次提交2019-03-31 19:40:44
发布数13
最新版本名称v0.0.16 (发布于 2018-01-13 13:15:06)
第一版名称v0.0.4 (发布于 2014-04-19 02:32:18)
用户参与
星数45
关注者数5
派生数13
提交数68
已启用问题?
问题数3
打开的问题数1
拉请求数3
打开的拉请求数0
关闭的拉请求数0
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?