- 博客(47)
- 收藏
- 关注
原创 PolarNet环境搭建
RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False
2022-07-24 19:23:50
564
原创 Ray tracing in a weekend (十二)
#include"vector.h"#include"ray.h"#include"sphere.h"#include"hitable_list.h"#include"camera.h"#include"material.h"#include"random.h"#include<random>#include<
2018-10-08 19:26:02
446
原创 Ray tracing in a weekend (十一)
Defocus Blur(散焦模糊)在之前渲染所得的图像中所有物体都是“清晰”的,现在要让图像更趋近于真实的camera相片,即“有实有虚”。camera.h#define M_PI 3.1415926#include"ray.h"#include"random.h"//ray的出发点限制在一个圆里,而非集中于一点//先求出在z=0平面,以(0,0,0)为圆...
2018-10-08 17:29:20
592
原创 Ray tracing in a weekend (十)
Positionable Camera#ifndef CAMERAH#define CAMERAH#define M_PI 3.1415926#include"ray.h"//之前关于image plain的信息和viewing ray的生成//都直接写在main里,现在要将它们封装进camera//类里,毕竟image plain本来就是camera的可视范围//而v...
2018-10-07 14:44:05
382
原创 Ray tracing in a weekend (九)
New material:Dielectrics(介质)概念:具有一定透明度,如玻璃、水、空气等。原理:当光线从光密介质进入光疏介质,并且入射角超过临界角,那么发生全反射,类似mirror reflection;否则光线分成两束,一束进入新介质发生折射,另一束返回原介质发生反射。介质的折射率(ref_idx)是其自身的属性,而反射率/强度(reflect_prob)则与角度有关。当没有发生...
2018-09-29 10:21:51
622
原创 Ray tracing in a weekend (八)
将lambertian(diffuse)和metal(reflection)封装进material类里,通过成员函数scatter生成反射线,前者的反射线方向随机生成,故为漫反射,而后者几乎为镜面反射(也有一定随机性,但将偏差限制在了一个单位球里)。在hit_record和sphere里添加指向material的指针成员,同时改写sphere的hit函数,使得ray在接触到sphere后可以将...
2018-09-27 19:41:34
388
原创 Ray tracing in a weekend (七)
Diffuse materials(漫反射材质)实现原理(还没有引入light)首先要将object的shape和material分开来理解。一个具有diffuse materials的object实际就是说与其surface相交的光线会以随机的方向反射(也可能被完全吸收,阴影的来源),从视线(viewing ray)的角度来说,也就是接触到其surface的viewing ray会以随机...
2018-09-26 17:46:22
376
原创 Ray tracing in a weekend (六)
将image plain的信息以及viewing ray的生成封装进camera class里camera.h#ifndef CAMERAH#define CAMERAH#include"ray.h"//之前关于image plain的信息和viewing ray的生成//都直接写在main里,现在要将它们封装进camera//类里,毕竟image plain本来就是cam...
2018-09-25 19:52:34
344
原创 Ray tracing in a weekend (五)
之前在计算color时是直接在源文件中定义ray与sphere的hit监测函数,也没有创建sphere类。现在我们要将object创建成类,将hit函数封装起来,用的时候作为接口调用。当前的场景中只存在球体,我们将先创建一个只有纯虚hit函数的抽象基类,再由其派生出sphere类和hitable_list类。后者可以视为将场景中所有object整合为一个对象。hitable.h#ifnd...
2018-09-24 15:59:09
427
原创 Ray tracing in a weekend (四)
visualize normal vector因为在之后的shading操作中会用到normal vector来计算不同intersection处pixel的RGB颜色,而现在因为没有light,所以先在normal vector和RGB颜色之间构造一个简单的映射。viewing ray以不同的方向与sphere相交,在这些交点处都存在法向量,其计算相当简单在本次操作中将不能仅仅考虑r...
2018-09-23 17:40:58
292
原创 Ray tracing in a weekend (三)
判断viewing ray和sphere的相交联立viewing ray和sphere的向量形式方程可得: 将该式进行转化,把t提出来,可得: 此即为一个关于t的一元二次方程,由该方程的判别式可以得知ray与sphere的相交情况:(PS:此处仅仅根据判别式大于零便确定相交,相当于将viewing ray视为了直线而非射线,当球体置于origin后面时也会得到与最终结果相...
2018-09-23 16:45:32
427
原创 Ray tracing in a weekend (二)
ray.h#ifndef RAYH#define RAYH#include"vector.h"class ray//只存储原点和方向信息,线上具体一点用函数来表示{public: ray() {} ray(const vec3 &a, const vec3 &b):A(a),B(b){} vec3 origin() const { return A; }...
2018-09-22 16:11:36
419
原创 Ray tracing in a weekend(一)
#include<iostream>#include<fstream>using namespace std;int main(){ int nx = 200;//200列 int ny = 100;//100行 ofstream out("d:\\theFirstPpm.txt"); out << "P3\n" << nx &
2018-09-20 20:29:17
596
原创 Effective C++:尽量用pass-by-reference替换pass-by-value;必须返回对象时,不要妄想返回其引用
Q:在编写类的成员函数时,比如重载一些运算符,时常会发现形参和返回类型在可以直接传值/返回对象的情况下却选择了引用的形式,而有时候则不如此,因而有些困惑。A:首先,大前提下,要尽可能用引用的形式代替函数中的传值/返回对象。因为在传值和返回对象的过程中,实际上进入函数的是实参的一个拷贝,而返回的也是一个拷贝。在创建这个拷贝的过程中会调用相应对象的拷贝构造函数,而之后还要调用其析构函数,这样一...
2018-09-19 20:34:22
334
原创 Texture(纹理贴图)和Material(材质)概念上的区别
我的理解是:纹理更偏向于“图”,而材质更偏向于“属性”。打个比方说,对同一个立方体模型进行处理:加纹理信息,可以认为是贴上图,比如木头的纹理图,大理石的纹理图。加材质信息,可以认为是为这个立方体加上属性(这些属性主要是指反射系数、折射系数等),比如木头的属性或大理石的属性。从另一个角度来看,加了纹理的模型是静态的和表面的,不会因为外界环境变化而变化(比如光照)。但是加了材质的模型是动态的和...
2018-09-17 21:16:36
12438
原创 渲染(render)和着色(shading)
Shader和renderer:shader中文为着色器,进行shading(着色);renderer为渲染器进行render(渲染)。渲染是指以软件由模型生成图像的过程。模型是用计算机语言或者数据结构严格定义的三维物体或虚拟场景的描述。在渲染的过程中有一项重要的工作便是为图像着色,即根据物体相对于光线的角度及其与光源的距离来计算图像中各像素的值,这个值决定了最终图像中显示出哪些图形(一些图形可能...
2018-09-17 21:14:39
6730
原创 Shadow Ray
Shadow ray is the last segment on the light path traveling through the scene (from camera to light source). It is just a technical term, only a label. In nutshell it marks anything that goes to light....
2018-09-03 22:08:17
926
原创 关于齐次坐标
齐次坐标(Homogeneous Coordinate)在空间直角坐标系中,任意一点可用一个三维坐标矩阵[x y z]表示。如果将该点用一个四维坐标的矩阵[Hx Hy Hz H]表示时,则称为齐次坐标表示方法。在齐次坐标中,最后一维坐标H称为比例因子。在OpenGL中,二维坐标点全看作三维坐标点,所有的点都用齐次坐标来描述,统一作为三维齐次点来处理。每个齐次点用一个向量(x, y, z, w)...
2018-09-02 22:18:06
1682
转载 计算机视觉、计算机图形学、图像处理的区别和联系
搞了CV一段时间,仍时不时因为概念问题而困惑,搞不清楚计算机视觉(Computer Vision),计算机图形学(Computer Graphics)和图像处理(Image Processing)的区别和联系。在知乎上看到了一个帖子,觉得解释的很好,结合自己的理解,形成此文存档。1.基本概念从定义理解概念是最严谨的。所以首先搞清楚维基百科中这些概念的定义。计算机视觉(CV):Co...
2018-09-02 16:18:26
1009
原创 Coursera吴恩达机器学习编程作业(ex5)对LinearRegression的bias/variance进行评估和改进
正则化的LinearRegression:linearRegCostFunction.mfunction [J, grad] = linearRegCostFunction(X, y, theta, lambda)%LINEARREGCOSTFUNCTION Compute cost and gradient for regularized linear %regression with mu...
2018-05-31 17:11:43
1720
3
原创 Coursera吴恩达机器学习编程作业(ex4)包含BackPropagation算法的NeuralNetwork多层分类
nnCostFunction.mfunction [J grad] = nnCostFunction(nn_params,input_layer_size,hidden_layer_size,num_labels,X, y, lambda)%NNCOSTFUNCTION Implements the neural network cost function for a two layer%ne...
2018-05-27 20:55:36
2740
1
原创 Coursera吴恩达机器学习编程作业(ex3)用LogisticRegression和NeuralNetwork处理MultiClass分类
建立一个正确的hypothesis function其实关键就在于找到合适的theta,使用优化后的高级算法, fmincg(更适用于参数非常多的情况)和 fminunc均可返回一组theta和该组theta对应的cost。oneVsAll.mfunction [all_theta] = oneVsAll(X, y, num_labels, lambda)%ONEVSALL trains mul...
2018-05-23 21:30:54
2577
2
原创 Coursera吴恩达机器学习编程作业(ex2)正则化的LogisticRegression
实现函数:sigmoid.mfunction g = sigmoid(z)%SIGMOID Compute sigmoid function% g = SIGMOID(z) computes the sigmoid of z.% You need to return the following variables correctly g = zeros(size(z));% ==...
2018-05-07 18:16:31
1411
1
原创 C++Primer5th 文本查询程序再探
#include "stdafx.h"#include<iostream>#include<string>#include<vector>#include<memory>#include<algorithm>#include<fstream>#include<map>#inclu
2018-04-13 19:51:01
688
转载 操作系统中的PV操作
无论是计算机考研、计算机软件水平考试、计算机操作系统期末考试还是其他计算机岗位考试,P、V原语操作都是一个常考点。下面笔者总结了关于P、V操作的一些知识。信号量是最早出现的用来解决进程同步与互斥问题的机制(也可实现进程通信),包括一个称为信号量的变量及对它进行的两个原语操作。信号量为一个整数,我们设这个信号量为:sem。很显然,我们规定在sem大于等于零的时候代表可供并发进程使用的资源实体数,se...
2018-03-27 10:28:49
1816
原创 C++中的拷贝、赋值和销毁
几个重要的概念:拷贝构造函数、拷贝赋值运算符;拷贝初始化、直接初始化如图,出现了两次“拷贝构造函数”。直接调用构造函数(包括拷贝构造函数)来初始化对象的都是直接初始化。用赋值运算符、函数的传值调用、函数返回非引用对象、用花括号列表进行初始化以及标准库容器的insert和push_back都是拷贝初始化。拷贝初始化通常使用拷贝构造函数来完成。...
2018-03-21 16:49:10
336
原创 (学习笔记)通过OLAMI平台语音控制unity游戏
关于OLAMI(具体指南)仅仅简略说下OSL(OLAMI 语法描述语言)。OSL由grammar、rule、slot、template四个元素组成。1.grammar:即语法,用OSL描述自然语言的形式,用来匹配语料,“[ ]” 语法规则符号表示方括号中的内容是可选的;“|” 表示 “或是” 的关系,左右两边的内容可以二选一,例如[你|您]表示 “你” 或是 “您” 两者皆可之意;“( )” 表示...
2018-03-14 21:24:11
1566
原创 语音识别技术自学笔记
关键概念:一帧信号通过傅里叶变换可以提取出频谱,频谱具有精细结构(反映音高,用处不大)和包络(反映音色,用处大)。MFCC:梅尔频率倒谱系数,主要描述频谱包络。梅尔频率是基于人耳听觉特性提出来的, 它与Hz频率成非线性对应关系。梅尔频率倒谱系数(MFCC)则是利用它们之间的这种关系,计算得到的Hz频谱特征。主要用于语音数据特征提取和降低运算维度(对于一个很多维(采样点)的数据,可以通过MFCC提取...
2018-03-13 19:58:38
579
原创 关于map容器的使用
虽然families中的每个元素是pair类型,但是当你用关键字进行访问时可以直接对值进行操作。只有当你不是用关键字去访问map容器中的元素,比如范围for语句中遍历families中的元素,此时得到的就是pair类型的对象,必须使用first和second。即:解引用map的迭代器所得到的类型和对map进行关键字访问得到的类型是不同的,这是与vector的区别。...
2018-03-12 15:25:54
554
原创 C++中vector的size和capacity,空和非空的理解
C++Primer P340当某vector对象为空容器时,不能对其进行拷贝、赋值、访问以及一些相关的写操作(如fill_n,copy等函数)。所谓容器为空,与其容量(即内存空间capacity,可存储元素的最大数量)无关,只跟其大小(size,已经存储的元素数量)有关。当对一个空容器执行resize()操作后,其size变成指定值,capacity也会变为那个值,容器非空;而若对空容器执行rev...
2018-03-06 19:45:35
3264
原创 U3D网络部分学习笔记
1.对于一个联机游戏而言,首要的就是创建一个Empty的Object,在其上添加NetworkManager和NetworkManager HUD组件。还有就是不要忘记在脚本的最开始加入using UnityEngine.Network。前者可以控制Player的自动生成,后者则是进入联机游戏时的UI部分(可以选择以Server还是Client身份连入游戏,填写主机地址等)。2
2018-01-24 14:04:30
412
原创 2D画面中使物体跟随鼠标的方向旋转(向量法)
void Update () { //获取鼠标的坐标,鼠标是屏幕坐标,Z轴为0,这里不做转换 Vector3 mouse = Input.mousePosition; //获取物体坐标,物体坐标是世界坐标,将其转换成屏幕坐标,和鼠标一直 Vector3 obj = Camera.main
2017-12-23 14:31:09
2286
1
转载 Mesh Filter和Mesh Renderer
Material 材质作用:定义了用于渲染的texture 和 color Shader包含:根据不同的显卡定义了不同的渲染对象的方法任意顶点和不同渲染的片段程序可指派材质中的纹理属性以及颜色和编号设置 Mesh:网格作用:由三角形组成。由一个数组存储,前3个元素表示第一个三角形的顶点,然后依次表示第2个、第三个。法线是三角形边和角之间的
2017-09-26 16:51:08
653
转载 一个Object上绑定多个AudioSource并控制其播放
using UnityEngine;using System.Collections;public class PlayMusic : MonoBehaviour { private AudioSource[] m_ArrayMusic; private AudioSource m_music1; private AudioSource m_music2;
2017-08-04 10:43:38
3989
转载 关于unity中的update、Lateupdate和FixedUpdate
MonoBehaviour.Update 更新 当MonoBehaviour启用时,其Update在每一帧被调用。 MonoBehaviour.FixedUpdate固定更新 当MonoBehaviour启用时,其 FixedUpdate在每一帧被调用。 处理Rigidbody时,需要用FixedUpdate代替Upd
2017-07-31 15:09:37
428
原创 Unity中关于Rigidbody和Collider的问题
Rigidbody: 给Object添加了Rigidbody组件,它会受到各种物理力的影响,成为动态物体,在接触到其他Object的Collider(碰撞器)后产生相应的受力运动(当然自己也得有Collider)。通过脚本控制物体移动(常用的几种方法),也要求其添加Rigidbody组件。 勾选Is Kinematic后,它将不受物理力的影响。 Collider: 没有Rigidbody
2017-07-25 11:31:42
4737
原创 Unity制作SurvivalShooter游戏
控制Player移动:public float speed;private void FixedUpdate(){ float moveHorizontal = Input.GetAxis("Horizontal");/*水平方向的移动输入,左右*/ float moveVertical = Input.GetAxis("Vertical");/*垂直方向上的移动输入,前后*/
2017-07-24 21:00:43
1489
转载 unity中Vector3.normalized和Vector3.Normalized的区别
共同点:实现规范化,让一个向量保持相同的方向,但它的长度为1.0,如果这个向量太小而不能被规范化,一个零向量将会被返回。不同点:Vector3.normalized的特点是当前向量是不改变的并且返回一个新的规范化的向量;Vector3.Normalize的特点是改变当前向量,也就是当前向量长度是1
2017-07-24 20:05:57
15305
转载 3DText/TextMesh文字模糊解决方法
将font size 调大,如果字体大小不合适,就调整scale缩放转载自:http://tieba.baidu.com/p/3023091682
2017-07-24 11:08:38
4367
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人