1.首先创建vue3的项目

2.创建好后通过开发工具打开项目并打开命令行,输入指令 npm install 3d-force-graph 安装即可

3.在使用的页面中引入 3d-force-graph


<!--官网的 basic案例-->

<template>

<!-- ref 用于在组件中引用当前的 DOM 元素。-->
<div ref="container"></div></template>
<script setup>import {onMounted, ref} from "vue"; // 引入3d-force-graph import ForceGraph3D from "3d-force-graph";const container = ref(null)  // 作用是创建一个响应式的引用对象,并将其初始值设置为 null。const N = ref(300)const gData = ref({ nodes: [...Array(N).keys()].map(i => ({ id: i })), links: [...Array(N).keys()] .filter(id => id) .map(id => ({ source: id, target: Math.round(Math.random() * (id-1)) }))})onMounted(()=> { loadGrapg()})
// 渲染页面 const loadGrapg =() => {ForceGraph3D()(container.value) // 在给定的容器中创建一个 3D 力导向图 .graphData(gData.value);  // 将数据 gData 设置为力导向图的图数据}</script><style scoped></style>

4. 调用接口的时候,后端返回数据只需要nodes[{id:0},{id:1}], links: [{source:{}, target:{}]---source:原物体,target:目标物体

补充:

ForceGraph3D()等方法及用法如下:

// 在节点处显示文本,只需填写 nodes数组中对象的某个想要显示文本的属性名即可

.nodeLabel('id')

// 通过groudId来分组不同的颜色
.nodeAutoColorBy('group')
// 设置线条的箭头长度
.linkDirectionalArrowLength(3.5)
// 用于设置线条箭头的相对位置
.linkDirectionalArrowRelPos(1)
// 用于设置线条的曲率
.linkCurvature(0.25)
// 启用或禁用线条箭头的粒子效果
.linkDirectionalParticles(true)
// 设置箭头粒子的速度为
.linkDirectionalParticleSpeed(0.005)
// 设置线条透明度
.linkOpacity(0.5)
// 根据连接属性自动为连接线条着色,(这里官方文档写的是d => gData.nodes[d.source].group ,需要自己根据数据微调)
.linkAutoColorBy( d=> gData.value.nodes[d.value].group )
// 将节点转换成文字
.nodeThreeObject(node => {
const sprite = new SpriteText(node.id);   // 将想要的文字传入 SpriteText 
sprite.material.depthWrite = false; // false时 精灵对象将不会修改深度缓冲区的值,从而实现了精灵对象的透明背景
sprite.color = node.color; // 修改文字颜色
sprite.textHeight = 8; // 字体高度
return sprite;  // 返回此对象时报错如下,还未解决
/*报错
* 'get' on proxy: property 'modelViewMatrix' is a read-only and non-configurable data property on the proxy target but the proxy did not return its actual value (expected '#<Matrix4>' but got '#<Matrix4>')
TypeError: 'get' on proxy: property 'modelViewMatrix' is a read-only and non-configurable data property on the proxy target but the proxy did not return its actual value (expected '#<Matrix4>' but got '#<Matrix4>')
at Proxy.raycast (webpack-internal:///./node_modules/three/build/three.module.js:1677:2291)
at intersectObject (webpack-internal:///./node_modules/three/build/three.module.js:2755:674)
at Raycaster.intersectObjects (webpack-internal:///./node_modules/three/build/three.module.js:2755:410)
at HTMLCanvasElement.onPointerMove (webpack-internal:///./node_modules/three/examples/jsm/controls/DragControls.js:68:20)
* */
/*

问题可能在于 SpriteText 对象的创建和返回时发生了错误。为了解决这个问题,您可以尝试以下几个步骤:

  1. 确保正确引入了 SpriteText 对象所在的库。

  2. 检查 SpriteText 对象的创建和配置。确保您在创建 sprite 对象时正确设置了属性,例如 depthWritecolor 和 textHeight。另外,也可以尝试使用 Object.defineProperty 或 Reflect.defineProperty 来为 sprite.material 上的属性进行定义,以确保属性的可写性和可配置性。

  3. 检查使用 nodeThreeObject 方法时代理对象的配置。确保正确配置了代理对象,并为 modelViewMatrix 属性设置了正确的特性标志。

  4. 检查代码中其他与代理对象和 Three.js 相关的部分。确保没有其他地方对 modelViewMatrix 属性进行意外修改或干扰。

*/
})
.d3Force('charge').strength(-120) // 修改节点之间的电荷力强度为 -120

vue3 安装 3d-force-graph的更多相关文章

  1. Windows 10 上安装 3D Studio Max 2016 报错的解决办法

    在 Windows 10 上安装 3D Stuido Max 2016 报错,无法正常安装,查看日志是 VC 运行时安装错误,经过分析发现在 Windows 10 上已经有这些运行时并且版本比安装包中 ...

  2. 泡泡一分钟: A Linear Least Square Initialization Method for 3D Pose Graph Optimization Problem

    张宁 A Linear Least Square Initialization Method for 3D Pose Graph Optimization Problem "链接:https ...

  3. CSAcademy Beta Round #5 Force Graph

    题目链接:https://csacademy.com/contest/arhiva/#task/force_graph/ 大意是有若干个节点,每个节点对应一个二维坐标,节点之间相互有斥力存在.同时有些 ...

  4. RAMPS1.4 3D打印控制板:软件下载\连接\安装\测试

    RAMPS1.4 3D打印控制板:软件下载\连接\安装\测试 特别说明: 电源接反,电机驱动板接反将有可能烧毁芯片和电路,请再三确认后再进行通电. 如何使用: 1.需要用到的模块或器件: Arduin ...

  5. 转:3d max 2013 安装教程,凭着一种互联网精神提供给广大朋友

    看到有人在ps区咨询如何安装3d max教程,当你进行第一步之前,请先断开网络连接第一步:运行安装程序 第二步:接受安装协议,点击下一步会提示输入序列号 第三步:你会看到已经安装完成了的界面 第四部: ...

  6. 图数据库 Nebula Graph 的安装部署

    Nebula Graph:一个开源的分布式图数据库.作为唯一能够存储万亿个带属性的节点和边的在线图数据库,Nebula Graph 不仅能够在高并发场景下满足毫秒级的低时延查询要求,还能够实现服务高可 ...

  7. 用FireFox火狐浏览器的3D Tilt 插件查看网页3D视图效果

    逛博客发现了网页的3D视图效果,一搜原来是Firefox特有的一个功能,先看效果: 相当炫酷,接下来介绍如何实现. 1.首先安装3d tilt 插件: 从火狐浏览器的添加插件页面,搜索:3D Tilt ...

  8. [转]centos6.6 rpm安装与管理

    centos6.6 rpm安装与管理 原文地址:http://www.centoscn.com/CentOS/2015/0414/5182.html   rpm包管理:安装.升级.卸载.查询.检验 安 ...

  9. yum --rpm包安装

    rpm -ivh  package -i 表示安装install -v表示显示详细信息, -vv更详细些 -h表示显示安装进度 --force:表示强制安装 --nodeps:忽略依赖关系安装 --r ...

  10. Linux软件安装,RPM与YUM

    为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/3843955.html ...

随机推荐

  1. 单元测试、文档测试、读写文件、StringIO和BytesIO

    1.单元测试就是为了测试程序执行的正确性 2.编写单元测试时,需要编写一个单元测试类,继承unittest TestCase类 3.单元测试最常用的断言是assert,断言期望抛出指定的异常 4.运行 ...

  2. 开源项目audioFlux: 针对音频领域的深度学习工具库

    目录 时频变换 频谱重排 倒谱系数 解卷积 谱特征 音乐信息检索 audioFlux是一个Python和C实现的库,提供音频领域系统.全面.多维度的特征提取与组合,结合各种深度学习网络模型,进行音频领 ...

  3. Redis(一)五种基本数据类型

    1 NoSQl数据库 1.1 技术的发展 技术的分类: ①解决功能性问题:javase ②解决扩展性问题:框架 ③解决性能问题:redis 1.2 NoSQL数据库概述 NoSQL(Not Only ...

  4. Linux(三)磁盘管理

    Linux磁盘管理 Linux中的tree工具 tree可以查看目录的树形结构,前提是需要自行安装 yum install tree -y [root@hadoop100 ~]# tree ./ ./ ...

  5. CSS页面布局方式

    css页面布局方式 1.标准流 <!DOCTYPE html> <html lang="en"> <head> <meta charset ...

  6. c/c++零基础坐牢第一天

    c/c++从入门到入土(1) 开始时间2023-04-12 22:37:21 结束时间2023-04-13 00:02:26 前言:恭喜大家打开信息时代的大门,每个时代都有代表性的炫酷技能:原始时代的 ...

  7. C# 从0到实战 命名空间

    什么是命名空间 命名空间是C#为了解决类名冲突而产生的一种方案,通过特定的前缀来标识一个类,使得编程者可以在自己的命名空间中自由使用各种类名,这很类似于Java中的包. 一般新手学习C#都会使用一个 ...

  8. DFS手写排列

    DFS手写排列 虽然python中有自带的排列函数,但是在某些特殊情况需要手写排列.掌握了DFS手写排列对DFS的理解有一定的帮助. 1.手写排列(非字典序输出) 这种代码比较简单易懂,但是不是按照字 ...

  9. vue 项目全局修改element-ui的样式/主题颜色

    一,安装sass 1 npm i sass sass-loader --save 二,安装element主题生成工具 // 全局安装npm i element-theme --save // 安装主体 ...

  10. Java的对象包装器 & 自动装箱

    有时,需要将 int 这样的基本类型转换为对象.所有的基本类型都有一个与之对应的类.例如,Integer 类对应基本类型 int.通常,这些类被称为包装器(wrapper).这些对象包装器类拥有很明显 ...