three.js之缓冲类型几何体顶点

news2025/8/16 14:50:27

文章目录

  • 简介
    • 构成
  • 代码
    • 顶点构成图形
      • 核心代码
    • 顶点的位置与颜色
      • BufferAttribute
      • 颜色差值
    • 法向量
      • 不设置法向量
    • 顶点索引
      • 不复用顶点
      • 复用顶点

专栏目录请点击

简介

  • 顶点一般使我们在创建模型的时候使用的,他一般对应buffer类型的几何体,使用BufferGeometry创建 点击
  • 我们还会用到BufferAttribute来设置相应的属性,如顶点位置向量,面片索引,法向量,颜色值,UV坐标以及任何自定义 attribute 点击

构成

顶点是由两个元素组成的

  1. 顶点的位置
  2. 顶点的颜色

代码

顶点构成图形

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>第一个three.js文件_WebGL三维场景</title>
    <style>
        body {
            margin: 0;
            overflow: hidden;
            /* 隐藏body窗口区域滚动条 */
        }
    </style>
    <!--引入three.js三维引擎-->
    <script src="http://www.yanhuangxueyuan.com/versions/threejsR92/build/three.js"></script>
    <script src="http://www.yanhuangxueyuan.com/threejs/examples/js/controls/OrbitControls.js"></script>
</head>

<body>
    <script>
        /**
         * 创建场景对象Scene
         */
        var scene = new THREE.Scene();
        /**
         * 创建网格模型
         */
        var geometry = new THREE.BufferGeometry(); //创建一个Buffer类型几何体对象
        //类型数组创建顶点数据
        var vertices = new Float32Array([
            0, 0, 0, //顶点1坐标
            50, 0, 0, //顶点2坐标
            0, 100, 0, //顶点3坐标
            0, 0, 10, //顶点4坐标
            0, 0, 100, //顶点5坐标
            50, 0, 10, //顶点6坐标
        ]);
        // 创建属性缓冲区对象
        var attribue = new THREE.BufferAttribute(vertices, 3); //3个为一组,表示一个顶点的xyz坐标
        // 设置几何体attributes属性的位置属性
        geometry.attributes.position = attribue;
        const material = new THREE.MeshBasicMaterial({ color: 0xff0000 });
        const mesh = new THREE.Mesh(geometry, material);
        scene.add(mesh);
        // 辅助坐标系  参数250表示坐标系大小,可以根据场景大小去设置
        var axisHelper = new THREE.AxisHelper(250);
        scene.add(axisHelper);
        /**
         * 光源设置
         */
        //点光源
        var point = new THREE.PointLight(0xffffff); // 参数为光照强度
        point.position.set(400, 200, 300); //点光源位置
        scene.add(point); //点光源添加到场景中
        //环境光
        var ambient = new THREE.AmbientLight(0x444444);
        scene.add(ambient);
        // console.log(scene)
        // console.log(scene.children)
        /**
         * 相机设置
         */
        var width = window.innerWidth; //窗口宽度
        var height = window.innerHeight; //窗口高度
        var k = width / height; //窗口宽高比
        var s = 200; //三维场景显示范围控制系数,系数越大,显示的范围越大
        //创建相机对象
        var camera = new THREE.OrthographicCamera(-s * k, s * k, s, -s, 1, 1000);
        camera.position.set(200, 300, 200); //设置相机位置
        camera.lookAt(scene.position); //设置相机方向(指向的场景对象)
        /**
         * 创建渲染器对象
         */
        var renderer = new THREE.WebGLRenderer();
        renderer.setSize(width, height);//设置渲染区域尺寸
        renderer.setClearColor(0xb9d3ff, 1); //设置背景颜色
        document.body.appendChild(renderer.domElement); //body元素中插入canvas对象
        // 渲染函数
        function render() {
            renderer.render(scene, camera);//执行渲染操作
        }
        render();
        var controls = new THREE.OrbitControls(camera, renderer.domElement);//创建控件对象
        controls.addEventListener('change', render);//监听鼠标、键盘事件
    </script>
</body>

</html>

在这里插入图片描述

核心代码

var geometry = new THREE.BufferGeometry(); //创建一个Buffer类型几何体对象
//类型数组创建顶点数据
var vertices = new Float32Array([
    0, 0, 0, //顶点1坐标
    50, 0, 0, //顶点2坐标
    0, 100, 0, //顶点3坐标
    0, 0, 10, //顶点4坐标
    0, 0, 100, //顶点5坐标
    50, 0, 10, //顶点6坐标
]);
// 创建属性缓冲区对象
var attribue = new THREE.BufferAttribute(vertices, 3); //3个为一组,表示一个顶点的xyz坐标
// 设置几何体attributes属性的位置属性
geometry.attributes.position = attribue;
const material = new THREE.MeshBasicMaterial({ color: 0xff0000 });
const mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);

顶点的位置与颜色

var geometry = new THREE.BufferGeometry(); //声明一个缓冲几何体对象

//类型数组创建顶点位置position数据
var vertices = new Float32Array([
    0, 0, 0, //顶点1坐标
    50, 0, 0, //顶点2坐标
    0, 100, 0, //顶点3坐标

    0, 0, 10, //顶点4坐标
    0, 0, 100, //顶点5坐标
    50, 0, 10, //顶点6坐标
]);
// 创建属性缓冲区对象
var attribue = new THREE.BufferAttribute(vertices, 3); //3个为一组,作为一个顶点的xyz坐标
// 设置几何体attributes属性的位置position属性
geometry.attributes.position = attribue;
//类型数组创建顶点颜色color数据
var colors = new Float32Array([
    1, 0, 0, //顶点1颜色
    0, 1, 0, //顶点2颜色
    0, 0, 1, //顶点3颜色

    1, 1, 0, //顶点4颜色
    0, 1, 1, //顶点5颜色
    1, 0, 1, //顶点6颜色
]);
// 设置几何体attributes属性的颜色color属性
geometry.attributes.color = new THREE.BufferAttribute(colors, 3); //3个为一组,表示一个顶点的颜色数据RGB
//材质对象
var material = new THREE.PointsMaterial({
    // 使用顶点颜色数据渲染模型,不需要再定义color属性
    // color: 0xff0000,
    vertexColors: THREE.VertexColors, //以顶点颜色为准
    size: 10.0 //点对象像素尺寸
});
// 点渲染模式  点模型对象Points
var points = new THREE.Points(geometry, material); //点模型对象
scene.add(points); //点对象添加到场景
// 辅助坐标系  参数250表示坐标系大小,可以根据场景大小去设置
var axisHelper = new THREE.AxisHelper(250);
scene.add(axisHelper);

在这里插入图片描述
我们会发现他是一一对应的关系

  • 这里的材质的颜色设置,我们使用的是VertexColors这个属性,并不是使用的color属性
    • 他的默认值是THREE.NoColor,也就是说模型的颜色渲染效果取决于材质属性.color,如果把材质属性VertexColors的值设置为THREE.VertexColors,那么他进行渲染的时候就会使用几何体顶点的颜色数据geometry.attributes.color

BufferAttribute

这个属性是为了提供各种各样符合顶点的数据,比如顶点的颜色,顶点的位置数据,提供顶点属性的值,如geometry.attributes.position

颜色差值

当我们把下面代码

//材质对象
var material = new THREE.PointsMaterial({
    // 使用顶点颜色数据渲染模型,不需要再定义color属性
    // color: 0xff0000,
    vertexColors: THREE.VertexColors, //以顶点颜色为准
    size: 10.0 //点对象像素尺寸
});
// 点渲染模式  点模型对象Points
var points = new THREE.Points(geometry, material); //点模型对象
scene.add(points); //点对象添加到场景

修改成

//材质对象
var material = new THREE.MeshBasicMaterial({vertexColors: THREE.VertexColors,});
// 点渲染模式  点模型对象Points
var points = new THREE.Mesh(geometry, material); //点模型对象
scene.add(points); //点对象添加到场景

我们会发现他的渲染效果如下
在这里插入图片描述

  • 他呈现出一种渐变效果,之所以成年初渐变效果,是因为webgl进行渲染的时候会对于颜色数据进行差值计算
    • 比如端点1设置为红色,端点2设置为蓝色,那么整个线条会呈现出点1到点2红色到蓝色的渐变
    • 对于网格模型Mesh来说,就是餐侥幸的三个顶点分别设置一个颜色,三角形内部的区域像素会根据这三个顶点的颜色进行渲染计算
  • 插值计算示意图
    • 在这里插入图片描述

法向量

  • webgl中为了计算光线与物体表面入射角,首先要计算物体表面每个位置的法线方向
  • 在网格模型中,曲面是有一个一个三角形构成,为了表示物体表面各个位置的发现方向,我们可以给几何体的每个顶点定义一个方向向量

在这里插入图片描述

不设置法向量

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>顶点法向量光照计算</title>
    <style>
        body {
            margin: 0;
            overflow: hidden;
            /* 隐藏body窗口区域滚动条 */
        }
    </style>
    <!--引入three.js三维引擎-->
    <script src="http://www.yanhuangxueyuan.com/versions/threejsR92/build/three.js"></script>
    <!-- 引入threejs扩展控件OrbitControls.js -->
    <script src="http://www.yanhuangxueyuan.com/versions/threejsR92/examples/js/controls/OrbitControls.js"></script>
</head>

<body>
    <script>
        /**
         * 创建场景对象Scene
         */
        var scene = new THREE.Scene();
        /**
         * 创建网格模型
         */
        var geometry = new THREE.BufferGeometry(); //声明一个空几何体对象
        //类型数组创建顶点位置position数据
        var vertices = new Float32Array([
            0, 0, 0, //顶点1坐标
            50, 0, 0, //顶点2坐标
            0, 100, 0, //顶点3坐标

            0, 0, 0, //顶点4坐标
            0, 0, 100, //顶点5坐标
            50, 0, 0, //顶点6坐标

        ]);
        // 创建属性缓冲区对象
        var attribue = new THREE.BufferAttribute(vertices, 3); //3个为一组
        // 设置几何体attributes属性的位置position属性
        geometry.attributes.position = attribue

        //材质对象
        var material = new THREE.MeshLambertMaterial({
            color: 0x0000ff, //三角面颜色
            side: THREE.DoubleSide //两面可见
        });
        var mesh = new THREE.Mesh(geometry, material); //网格模型对象Mesh
        scene.add(mesh); //网格模型添加到场景中

        // 辅助坐标系
        var axisHelper = new THREE.AxisHelper(250);
        scene.add(axisHelper);
        /**
         * 光源设置
         */
        //点光源
        var point = new THREE.PointLight(0xffffff);
        point.position.set(400, 200, 300); //点光源位置
        scene.add(point); //点光源添加到场景中
        //环境光
        var ambient = new THREE.AmbientLight(0x444444);
        scene.add(ambient);
        /**
         * 相机设置
         */
        var width = window.innerWidth; //窗口宽度
        var height = window.innerHeight; //窗口高度
        var k = width / height; //窗口宽高比
        var s = 150; //三维场景显示范围控制系数,系数越大,显示的范围越大
        //创建相机对象
        var camera = new THREE.OrthographicCamera(-s * k, s * k, s, -s, 1, 1000);
        camera.position.set(200, 300, 200); //设置相机位置
        camera.lookAt(scene.position); //设置相机方向(指向的场景对象)
        /**
         * 创建渲染器对象
         */
        var renderer = new THREE.WebGLRenderer();
        renderer.setSize(width, height); //设置渲染区域尺寸
        renderer.setClearColor(0xb9d3ff, 1); //设置背景颜色
        document.body.appendChild(renderer.domElement); //body元素中插入canvas对象

        // 渲染函数
        function render() {
            renderer.render(scene, camera); //执行渲染操作
        }
        render();
        //创建控件对象  相机对象camera作为参数   控件可以监听鼠标的变化,改变相机对象的属性
        var controls = new THREE.OrbitControls(camera, renderer.domElement);
        //监听鼠标事件,触发渲染函数,更新canvas画布渲染效果
        controls.addEventListener('change', render);
    </script>

</body>

</html>

上面的代码没有设置法向量,他渲染的图形是下面这个样子的

在这里插入图片描述

  • 我们可以看到,整个图形就像是没有光照一样,但是当我们加上了下面的代码
var normals = new Float32Array([
    0, 0, 1, //顶点1法向量
    0, 0, 1, //顶点2法向量
    0, 0, 1, //顶点3法向量

    0, 1, 0, //顶点4法向量
    0, 1, 0, //顶点5法向量
    0, 1, 0, //顶点6法向量
]);
// 设置几何体attributes属性的位置normal属性
geometry.attributes.normal = new THREE.BufferAttribute(normals, 3); //3个为一组,表示一个顶点的法向量数据

他的渲染就是下面这个样子的
在这里插入图片描述
这样就有了光的散射

  • 所以,我们在集合体中,常用的属性如下
// 访问几何体顶点位置数据
BufferGeometry.attributes.position
// 访问几何体顶点颜色数据
BufferGeometry.attributes.color
// 访问几何体顶点法向量数据
BufferGeometry.attributes.normal

顶点索引

使用顶点索引的目的是用来复用顶点数据,什么是复用顶点数据呢,比如,下面这个矩形

在这里插入图片描述

  1. 这个矩形是用两个三角形拼凑而成,如果要定义顶点的话,那么需要定义6个顶点
  2. 但是我们会发现两个三角形有两个顶点的位置是重合的,而对于这些重合的顶点,我们可以值定义一次

不复用顶点

如果不复用顶点的话,我们需要定义6个顶点

/**
 * 创建网格模型
 */
var geometry = new THREE.BufferGeometry(); //声明一个空几何体对象
//类型数组创建顶点位置position数据
var vertices = new Float32Array([
    0, 0, 0, //顶点1坐标
    80, 0, 0, //顶点2坐标
    80, 80, 0, //顶点3坐标

    0, 0, 0, //顶点4坐标   和顶点1位置相同
    80, 80, 0, //顶点5坐标  和顶点3位置相同
    0, 80, 0, //顶点6坐标
]);
// 创建属性缓冲区对象
var attribue = new THREE.BufferAttribute(vertices, 3); //3个为一组
// 设置几何体attributes属性的位置position属性
geometry.attributes.position = attribue
var normals = new Float32Array([
    0, 0, 1, //顶点1法向量
    0, 0, 1, //顶点2法向量
    0, 0, 1, //顶点3法向量

    0, 0, 1, //顶点4法向量
    0, 0, 1, //顶点5法向量
    0, 0, 1, //顶点6法向量
]);
// 设置几何体attributes属性的位置normal属性
geometry.attributes.normal = new THREE.BufferAttribute(normals, 3); //3个为一组,表示一个顶点的xyz坐标

渲染如下

在这里插入图片描述

复用顶点

我们先定义顶点

var geometry = new THREE.BufferGeometry(); //声明一个空几何体对象
//类型数组创建顶点位置position数据
var vertices = new Float32Array([
  0, 0, 0, //顶点1坐标
  80, 0, 0, //顶点2坐标
  80, 80, 0, //顶点3坐标
  0, 80, 0, //顶点4坐标
]);
// 创建属性缓冲区对象
var attribue = new THREE.BufferAttribute(vertices, 3); //3个为一组
// 设置几何体attributes属性的位置position属性
geometry.attributes.position = attribue
var normals = new Float32Array([
  0, 0, 1, //顶点1法向量
  0, 0, 1, //顶点2法向量
  0, 0, 1, //顶点3法向量
  0, 0, 1, //顶点4法向量
]);
// 设置几何体attributes属性的位置normal属性
geometry.attributes.normal = new THREE.BufferAttribute(normals, 3); //3个为一组,表示一个顶点的xyz坐标

然后我们去定义复用的索引

// Uint16Array类型数组创建顶点索引数据
var indexes = new Uint16Array([
  // 0对应第1个顶点位置数据、第1个顶点法向量数据
  // 1对应第2个顶点位置数据、第2个顶点法向量数据
  // 索引值3个为一组,表示一个三角形的3个顶点
  0, 1, 2,
  0, 2, 3,
])
// 索引数据赋值给几何体的index属性
geometry.index = new THREE.BufferAttribute(indexes, 1); //1个为一组

我们可以看注释,也可以看下面的解释

  1. 在数组中一个数字代表一个顶点,三个数字代表一个三角形数据
  2. 0表示第一个顶点数据,1表示第二个顶点的数据,一次类推
  3. 我们可以看到一个数组中有两个重复的数据即 0和2,也就是说第一个和第三个顶点被复用
  • 在创建顶点索引的时候,可以根据顶点的数量选择类型数组
  • 对于顶点索引而言要选择整形类的数组,非索引的顶点数据,可以选择浮点类型的数组,如Float32Array
类型数组位数字节类型描述C语言等价类型
Int8Array81有符号8位整型int8_t
Uint8Array81无符号8位整型uint8_t
Int16Array162有符号16位整型 int16_t
Uint16Array162无符号16位整型int16_t
Int32Array324有符号32位整型int32_t
Uint32Array324无符号32位整型uint32_t
Float32Array324单精度(32位)浮点数float
Float64Array648双精度(64位)浮点数double

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/33185.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

有效备考浙大MEM的五个好习惯建议

作为去年上岸浙大mem项目的学长&#xff0c;很多身边计划备考的朋友都在咨询如何才能一年上岸&#xff0c;我在去年拿到了203分的成绩&#xff0c;在不影响工作和生活的前提下&#xff0c;自己认为有效备考浙大mem项目要基本做到五大好习惯&#xff0c;特别针对我们在职人群&am…

软件测试面试题及答案 这个可以免费白嫖的题库不要错过了

对于很多新手软件测试人来说&#xff0c;除了掌握扎实的专业技能之外&#xff0c;你还需要一份个互联网软件测试工程师面试题库才能在万千面试者中杀出重围&#xff0c;成功拿下offer。 一般软件测试的面试分为三轮&#xff1a;笔试&#xff0c;HR面试&#xff0c;技术面试。前…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java社区疫情防控管理系统nt4k1

最近发现近年来越来越多的人开始追求毕设题目的设创、和新颖性。以往的xx管理系统、xx校园系统都过时了。大多数人都不愿意做这类的系统了&#xff0c;确实&#xff0c;从有毕设开始就有人做了。但是很多人又不知道哪些毕设题目才算是新颖、创意。太老土的不想做&#xff0c;创…

HTML学生个人网站作业设计:宠物网站设计——宠物网站带会员登陆表单验证功能7页

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 |宠物网页设计 | 保护动物网页 | 鲸鱼海豚主题 | 保护大象 | 等网站的设计与制作 | HTML宠物网页设计 | HTML期末大学生网页设计作业&#xff0c;Web大学…

怎么裁剪视频时长?建议收藏这些方法

我们经常会在业余的时间&#xff0c;观看一些视频来放松自己。小伙伴们平时有没有喜欢看的视频呢&#xff1f;有时视频中会出现一些比较精彩的片段&#xff0c;如果我们想要将这些精彩片段分享给好友&#xff0c;还需要跟他们说跳转到视频的哪个位置&#xff0c;在操作上有些麻…

量化交易进行回测时有哪些有意义的统计指标?

做量化少不了要做回测&#xff0c;因为回测做好了才能进行梯度研究分析&#xff0c;但是回测报中&#xff0c;需要包含哪些指标呢&#xff1f;下面分享一下&#xff0c;小编觉得还比较有意义的统计指标&#xff0c;以及参照分析的原则与意义。 策略收益率&#xff1a;这部份没得…

2022Q3母婴行业三大热门赛道总结

本篇我们将继续来分析22年Q3季度中母婴行业的高增长概念。 在母婴行业中&#xff0c;我们发现了3个高增长品类&#xff0c;分别是&#xff1a;果泥、辅食料理机、婴儿湿巾。 一、营养辅食类高增长概念——果泥 在婴幼儿阶段&#xff0c;除了母乳和婴幼儿奶粉之外&#xff0c;后…

[打卡笔记]-RK3399平台开发入门到精通系列视频-Linux 设备树

14天学习训练营导师课程&#xff1a; 内核笔记《RK3399平台开发入门到精通系列视频》 14天学习训练营导师课程&#xff1a;周贺贺《ARMv8/ARMv9架构-快速入门》 前言 学习了一下雪松老师的视频课程&#xff0c;然后做出本文笔记。 如果您也想baipiao&#xff0c;开通学习会员&…

计算机网络复习——第五章传输层

Today&#xff0c; ready to go home,啊哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 《计算机网络》&#xff08;谢希仁&#xff09;内容总结 (javaguide.cn) 重点知识&#xff1a; Today&#xff0c; at home,啊哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 进程&#xff08;process&…

Python字符串及正则表达式

一&#xff1a; 字符串可以用单引号或双引号来创建&#xff0c;也可以用三引号来创建多行字符串。 String_1 加快发展 String_2 "促进生产" String_3 """吾家吾国&#xff0c; 吾家吾国&#xff0c; 吾家吾国&#xff0c; 吾家吾国。""…

JDBC在IDEA中配置mysql过程及编程详解

目录 jdbc编程简介 1.导入jar包 2.建立数据库连接 2.1 创建数据源,描述数据库服务器在哪 2.2 实现一个mysql客户端,通过网络和服务器进行通信 3.使用代码操作数据库 3.1 增删改操作 增加操作 更新操作 删除操作 3.2 查询操作 4.断开连接,释放资源 jdbc编程简介 J…

关联规则之 Apriori 算法实现

一、数据预览 Apriori 算法是电商数据挖掘中的经典算法&#xff0c;用于发现商品之间的关联规则&#xff0c;例如买了 A 和 B 的情况下是否还会买 C&#xff0c;通过计算商品组合之间的支持度和置信度来实现。首先我们来看一张订单表&#xff0c;包含订单编号&#xff0c;和商…

数据可视化之雷达图:自助数据集处理,完美演绎球员数据可视化

数据可视化&#xff0c;不只应用于工作或者财务报告&#xff0c;在某些场合通过使用图表展示数据&#xff0c;进行信息可视化表达&#xff0c;不仅可以省去繁冗的文字&#xff0c;还能更为清晰直观地展示&#xff0c;化平庸为神奇&#xff0c;让任何人有认真看的欲望。 当今世…

Thinkpad X201i笔记本电脑开机Fan Error

Thinkpad X201i笔记本电脑开机Fan Error1 背景2 现象3 更换风扇3.1 准备工具3.2 开始拆机1 背景 家里的老笔记本电脑&#xff0c;thinkpad X201i笔记本电脑&#xff0c;一直在使用&#xff0c;之前给风扇清过会&#xff0c;添加过硬盘&#xff0c;基本上也是拆了卸&#xff0c…

Logger.error还不知道怎么传参打印?看完这个你就明白了

Logger.error方法打印出堆栈信息&#xff0c;非常重要&#xff0c;可以使我们快速定位出相关问题&#xff0c;提高效率。 但是Logger.error有多个重载方法&#xff0c;不同的传参&#xff0c;打印结果各不一样。 下面&#xff0c;来看一个示例&#xff0c; 一、代码示例 impor…

WordPress Mixed Content混合内容警告:4 种简单的修复方法

如果您在 WordPress 网站上看到混合内容警告&#xff0c;请不要惊慌&#xff0c;它是一个常见警告。即使您安装了 SSL&#xff08;安全套接字层&#xff09;证书&#xff0c;也可能在任何网站上发生这种情况。 WordPress Mixed Content混合内容警告不会阻止您的网站在页面上显示…

[附源码]java毕业设计医学季节性疾病筛查系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

学生Dreamweaver静态网页设计 基于HTML+CSS+JavaScript制作简食餐厅美食网站制作

&#x1f380; 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

计算机组成原理4小时速成:系统总线,片内总线,系统总线,通信总线,数据总线,地址总线,控制总线,传输率=带宽/传输周期

计算机组成原理4小时速成&#xff1a;系统总线&#xff0c;片内总线&#xff0c;系统总线&#xff0c;通信总线&#xff0c;数据总线&#xff0c;地址总线&#xff0c;控制总线&#xff0c;传输率带宽/传输周期 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬…

知识图谱-KGE-对抗模型-2018:KBGAN

KBGAN paper: KBGAN: Adversarial Learning for Knowledge Graph Embeddings 论文 本文是清华大学的一名同学发表在 NAACL&#xff08;虽然是 C&#xff0c;但是是北美的 ACL&#xff09; 2018 上的一篇文章&#xff0c;提出了 KBGAN&#xff0c;首次使用生成对抗网的思想做…