CG
Frank(Zhiyang-Dou)
A Ph.D. candidate at HKU. Mainly focus on CG.
展开
-
Unity3D 设置透明材质
描述本文介绍设置Unity3D中物理的透明材质.的步骤.操作对于你创建的基本体. 请注意Mesh Renderer 下Materials部分Element 0.有些初学者会发现你无法编译这个默认的Materials, 这是因为我们需先自定义Materials然后指定到这里,在项目Project中Asset/Materials中创建材料. 设置性质如下:创建完完毕后 拖给刚才的object就好....原创 2022-04-10 20:15:46 · 9993 阅读 · 0 评论 -
Unity3D error CS0227: Unsafe code may only appear if compiling with /unsafe...
描述Unity3D error CS0227: Unsafe code may only appear if compiling with /unsafe...解决设置File - > BuildSettings -> PlayerSettings -> Player -> OtherSettings -> Allow 'unsage' Code原创 2021-06-15 21:28:52 · 1184 阅读 · 2 评论 -
Level-set method (LSM)
综述水平集算法是一种隐式的表示曲线的方法。就是把低维目标用比他高一维的水平集函数的零水平集来表示。 Level Set Method 就是通过连续上下移动等高平面(下图中的蓝色平面),得到连续变化的轮廓,从而模拟曲线或曲面的连续变形。level-set方法使跟踪改变拓扑的形状变得非常容易,例如,当一个形状一分为二时,会出现孔洞,或者与这些操作相反。Refhttps://www.zhih...原创 2020-04-10 12:48:28 · 1124 阅读 · 0 评论 -
Ubuntu 16 安装 CGAL
安装sudo apt-get install build-essentialsudo apt-get install libpcl-dev pcl-tools sudo apt-get install libglu1-mesa-devsudo apt-get install libglut-devsudo apt-get install libopencv-dev ...原创 2020-03-16 17:23:37 · 1828 阅读 · 0 评论 -
DL-Deconvolution与Upsample
DeconvolutionDeconvolution又叫做transposed convolution。其实就是卷积操作的逆过程。比如卷积操作使用2 x 2的滤波器对这个patch进行处理,那么这个patch经过卷积以后就变成了1 x 1像素块。Deconvolution就是将整个过程倒过来。容易想象这样拓展后的区域容易出现棋盘效益。就是一块一块不够自然地效果。因此人们会在配合Upsample...原创 2019-12-10 20:48:00 · 377 阅读 · 0 评论 -
matlab保存/写入到obj文件
综述matlab保存/写入到obj文件代码function writeOBJ(filename, V,F,UV,TF,N,NF) % WRITEOBJ writes an OBJ file with vertex/face information % % writeOBJ(filename,V,F,UV,N) % % Input: % filename path ...原创 2019-04-17 16:47:06 · 3631 阅读 · 1 评论 -
matlab-读取off文件
综述matlab读取off文件代码function [V,F,UV,C,N] = readOFF( filename ) % READOFF reads an OFF file with vertex/face information % % [V,F,UV,C,N] = readOFF( filename ) % % Input: % filename path to .o...原创 2019-04-17 16:45:48 · 2220 阅读 · 4 评论 -
MATLAB实现蓝噪声采样
综述蓝噪声采样是一种在mesh上重要的采样技术。在迭代次数满足的情况下,他基本满足点的均匀分布。代码clcclear[V,F] = readOBJ('baby.obj');N = random_points_on_mesh(V, F, 4000, 'Color', 'blue', 'MaxIter', 300);filename = '/Users/frankdura/Deskto...原创 2019-01-16 20:51:11 · 2672 阅读 · 1 评论 -
合并三维模型:obj\off\stl等
综述最近在老师指导下和我的师弟赶了一次论文。中间确实发现了自己所欠缺的部分。比如渲染、比如模型的网格质量的提升等等。以前倒是写过off的合并代码传送门、off2obj 的转换代码传送门但是这些代码中间用到了cgal,很多人或许并不需要这么复杂的配置工作。(再说cgal版本更新实在是难受,有时候代码文件大幅改动…)所以我这里给出使用meshlab进行合并操作的方法。支持的文件有:obj/of...原创 2019-01-16 20:41:09 · 9640 阅读 · 3 评论 -
openGL-二维点输入采样
综述鼠标点击界面生成我们的采样点。这是我之前实现裁剪算法时候改的,无视注释即可。代码// SDU 16计算机基地 窦志扬// 联络:sdudzy@163.com// main.cpp// 采样////#include <GLUT/GLUT.h>#include <iostream>using namespace std;struct Po...原创 2018-12-10 21:35:32 · 535 阅读 · 0 评论 -
Mac-Mac下openGL无法绘制:Mojave版本下
综述升级了mojave, 真是惊心动魄。遇到了一下几个槽点:1.Virtual Box版本开始不兼容。(需要安装新版本。这并不复杂)2.使用clion等构建项目默认会给你选择c++14。3.最要命的,对openGL的不支持开始强烈显现。今天主要说说这个。问题在mac上编译结束后,openGL绘制不出来了(黑屏)!国外网友们已经遇到了这个问题。纷纷在stackflow开始吐槽。不少人...原创 2018-10-20 14:59:08 · 4672 阅读 · 1 评论 -
CGAL-线面、线线、点线求交、输出交点
综述当然对于求交、碰撞检测而言,很多人可能选择AABB、OBB等等。但是很多时候,可能并不需要那么复杂的设计。这里针对简单的物体模型(点、线、面),直接使用cgal原始计算方法给出结果以及代码。需要注意的是:不只是线线、线面对于其他物体相交只要是满足:CGAL::Exact_predicates_exact_constructions_kernel下的简单几何体皆可处理此外数学原理部分...原创 2018-09-05 20:45:07 · 6064 阅读 · 4 评论 -
合并OFF文件
说明环境: cgal release mac os clion编译器/* * 作者:窦志扬 * 日期:2018/8/12 * 联络:sdudzy@163.com * 版本说明:现只支持三角面 * */#include &amp;lt;fstream&amp;gt;#include &amp;lt;iostream&amp;gt;#include &amp;lt;CGAL/Exact_predi原创 2018-08-23 20:50:33 · 630 阅读 · 0 评论 -
matlab-off文件转化为obj文件
综述matlab-off文件转化为obj文件。这个操作比较普遍。基本思路,先读入off再写入obj代码%%create by Zhiyang Dou%2019/4/12%contact:sdudzy@163.com%note: this version is different from the 2D version;% we use the init medial mesh ...原创 2019-04-17 16:50:02 · 1420 阅读 · 6 评论 -
几何拓扑不变量——欧拉示性数
综述欧拉示性数X计算为:X = V + F - E如果:genus(亏格)设为G那么有X = V+F-E = 2 - 2G几个特点对于闭合多面体:以四面体为例:4 + 4 - 6 = 2 可以去检测所有的这样的形状都是满足该数值。这就是为什么欧拉示性数叫做不变量;对于一个平面三角形:可以计算是 3+1-3 =1;欧拉示性数越大,亏格越小;如果在原来的face延伸出一个edg...原创 2019-07-08 21:01:47 · 6023 阅读 · 0 评论 -
mac安装PCL
综述展开PCL(Point Cloud Library)是在吸收了前人点云相关研究基础上建立起来的大型跨平台开源C++编程库,它实现了大量点云相关的通用算法和高效数据结构,涉及到点云获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等。支持多种操作系统平台,可在Windows、Linux、Android、Mac OS X、部分嵌入式实时系统上运行。如果说OpenCV是2D信息...原创 2019-07-12 20:51:07 · 4726 阅读 · 2 评论 -
matlab绘制法线信息、矢量场
综述有时候,我们需要计算点法线,想看看结果如何。这时候可以使用matlab绘制显示命令这里x,y,z是点的位置这里u,v,w是法线的位置quiver3(x, y, z, u, v, w);demo:clcclose allclear all[V,F,UV,TF,N,NF] = readOBJ('000001.obj');x = V(:,1);y = V(:,2);z ...原创 2019-09-08 15:45:44 · 2255 阅读 · 0 评论 -
读取obj顶点颜色 vertex color渲染并保存图片
综述该程序是在我之前的项目中修改的。因为3dmax不支持顶点色彩的obj文件渲染,而meshlabserver不支持导出图片的批处理脚本。所以只好手写openGL渲染。这个项目的更加基本的版本是我之前的写的一个程序:openGL-读取off、stl、obj文件并旋转平移缩放操作-Zhiyang读取顶点色彩信息主要看readerOBJ即可。保存图片的关键函数是:void PPMWr...原创 2019-07-27 13:45:47 · 6632 阅读 · 10 评论 -
在三角形面上均匀采样
综述在面片上均匀采样结果代码#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>#include <CGAL/Regular_triangulation_3.h>#include <CGAL/Weighted_point_3.h>#include <iostream&...原创 2019-07-11 23:25:49 · 2004 阅读 · 0 评论 -
C++判断点和平面的位置关系
点与平面的位置关系如果令法向量N为(A,B,C),点P0为。则平面的方程为:Ax+By+Cz+D=0对于点P0,代入后满足NP0 + D = 0所以D = -NP0;判断某点和某平面的位置关系可以依照上面三个判断式,如下:判断式位置关系Ax+By+Cz+D=0点(x,y,z)在平面上Ax+By+Cz+D>0点(x,y,z)在正半空间Ax+B...原创 2019-07-10 21:40:07 · 4608 阅读 · 0 评论 -
自定义Edge/Face数据结构 set定义元素比较次序
综述自定义Edge/Face数据结构 set定义元素比较次序代码Face.cpp#include <set>#include <iostream>using namespace std;class Face{public: //the three points int u; int v; int k; Face(i...原创 2019-07-10 13:36:41 · 627 阅读 · 0 评论 -
C++-向量的点乘、叉乘等操作
综述向量的点乘、叉乘等操作。代码double ThreeDot(Point p,Point a,Point b){ return(a[0]-p[0])*(b[0]-p[0])+(a[1]-p[1])*(b[1]-p[1])+(a[2]-p[2])*(b[2]-p[2]);}//pa与pb的点积 (3点) Point ThreeCross(Point p,Point a,...原创 2019-07-09 18:48:25 · 16527 阅读 · 0 评论 -
C++-计算点到三角形距离代码
综述C+±计算点到三角形距离代码库CGAL 11代码double Point2tridistace(Point onepoint, Point triangle1,Point triangle2,Point triangle3 ){ // the point and the vertex of the triangle // output the distance ...原创 2019-07-09 16:00:33 · 2420 阅读 · 0 评论 -
C++-计算三角形面片的法线代码
综述C+±计算三角形面片的法线代码;随手记下来,免得找不到库依然是CGAL 11代码Point calTriNormal( Point ver1, Point ver2, Point ver3 ){double temp1[3], temp2[3],normal[3];double length = 0.0;temp1[0] = ver1[0] - ver2[0];...原创 2019-07-09 15:50:06 · 3214 阅读 · 0 评论 -
obj文件转off
vector<string> split(const string &str,const string &pattern){ //进行字符串的切割 //const char* convert to char* char * strc = new char[strlen(str.c_str())+1]; strcpy(strc, str....原创 2018-08-22 23:59:33 · 1806 阅读 · 0 评论 -
CGAL-三维Delaunay/Voronoi图/Powerdiagram
综述使用CGAL的LCC组织说明支持Delaunay三角的顶点输出 支持显示所有Voronoi顶点输出 支持显示所有有限空间划分的顶点输出环境clion maxos代码/* * 作者:窦志扬 * 日期:2018年8月13日 * 联络:sdudzy@163.com * 院校:山东大学 * */#include &amp;amp;amp;lt;CGAL/Linear_cell_c...原创 2018-08-14 00:23:40 · 6151 阅读 · 2 评论 -
CGAL-绘制Voronoi图\泰森多边形
综述前些日子,老师布置了一些CGAL基础操作的任务,进行练习。感觉国内这部分的介绍较少。这里做一点小的贡献吧。 Voronoi需要你先了解狄洛尼三角剖分。在cgal中Voronoi图是通过狄洛尼三角形求对偶得到的。环境以及版本xcode cgal 11代码#include <CGAL/Exact_predicates_inexact_constructions_ker...原创 2018-05-10 19:39:17 · 4384 阅读 · 3 评论 -
openGL-自定义像素坐标系
综述openGL中默认为归一化后的坐标系。这种坐标系再不同的显示条件下都是按比例缩放呈现的。具有一定的好处。 但是有时候为了便于操作和展示我们需要按照像素坐标系进行绘制。下面给出配置例子。 看看例子自己验证一下就都明白了。例子#include <iostream>#include <GLUT/GLUT.h>using namespace std;flo...原创 2018-04-07 13:35:27 · 1085 阅读 · 0 评论 -
openGL-设计交互平面图形(旋转、平移、缩放)
综述最近在学习图形学的一些知识。现在做一个可交互的平面图形。 要求是: 1.三个不同的平面图形 2.可以通过鼠标“各自”进行指定的操作。 3.第二条中操作包括:旋转、平移、缩放 该文章:首先介绍一个图形时候的情况。多个图形不断更新。环境我是用xcode写的。但是不用担心,你需要修改的或许只是include头文件的两个字母。基础知识:你会在这个过程中遇到一些新的...原创 2018-04-07 14:24:41 · 13513 阅读 · 1 评论 -
openGL-多边形裁剪算法
综述:这里只是简单记录了部分实现思想。该部分代码不具备实际使用功能。 考虑使用4把刀分别裁剪一个图形。核心思想是,有一个点在扫描整个图形的边界。在扫描过程中,如果从刀的内侧(需要自己定义)到刀的外侧那么就记录当前点p0,当再次从外侧进入内测时,将当前点和记录的p0连起来。对于“覆盖遮挡”的边界可以利用 (a^b)^b = a来实现“抹去还原”。#include <GLUT/GLUT.h>#in原创 2018-03-24 14:58:04 · 5120 阅读 · 0 评论 -
openGL-泛滥填充算法
说明其实就是BFS或者DFS都可以代码#include <GLUT/GLUT.h>#include <iostream>#include<iostream>#include<cstdlib>#include <queue>using namespace std;float wid = 400; //设置窗口的大小,约定窗口必须为正方形float height = wid原创 2018-03-16 18:21:32 · 1775 阅读 · 0 评论 -
openGL-扫描线填充算法
说明把最近一系列的图形学经典算法实现了一下。课业繁忙,关于该系列的推导随后再写。但是在注释里已经有较为充分的分析。分情况讨论注意对于横线需要特别讨论,但是对于垂直线却不必特别讨论。想一想为什么?代码#include <iostream>#include <GLUT/GLUT.h>#include <map>#include <vector>#include <list>#include <原创 2018-03-16 14:35:15 · 7174 阅读 · 1 评论 -
openGL-基于编码的剪裁算法Cohen-Sutherland
代码//// main.cpp// hw_1_codecut////#include <GLUT/GLUT.h>#include <iostream>using namespace std;struct Point{ //定义点的结构体,主要用于编码 float x,y; int code;};Point a,b;//定义两个点,我们最多只需两个点;i原创 2018-03-14 19:37:17 · 1308 阅读 · 0 评论 -
openGL-梁友栋-Barsky算法
代码//// main.cpp// hw_1_cut_line//// Created by 窦志扬 on 2018/3/11.// Copyright © 2018年 窦志扬. All rights reserved.//#include <GLUT/GLUT.h>#include <iostream>using namespace std;int x1,y1,x2,y2原创 2018-03-14 19:33:39 · 4081 阅读 · 1 评论 -
openGL-Bresenham中点画圆、椭圆算法
环境mac os x xcode代码#include <GLUT/GLUT.h>#include <iostream>#include <cmath>#include <algorithm>using namespace std;float wid = 400; //设置窗口的大小,约定窗口必须为正方形...原创 2018-03-14 19:29:05 · 3838 阅读 · 1 评论 -
openGL-读取off、stl、obj文件并旋转平移缩放操作
综述最近图形学实验要求做一个off、obj文件并旋转平移缩放操作的练习,我顺手把stl(二进制)也做了一下。 支持操作:旋转、平移、缩放、改变散射光、改变光源位置。而且可以在显示点、线、面三者切换 注意我没有使用半边结构,暴力存储的。文件读取说明不多说废话,代码写的很清楚。注意off和obj文件的格式很相似。然而stl二进制读取需要注意我是四个字节读三次来搞的。操作说明...原创 2018-05-05 10:59:08 · 11709 阅读 · 59 评论 -
Clion配置openGL
综述之前一直用xcode写openGL。最近要用到CGAL去做一些计算几何的任务,但是发现xcode配起来是真的麻烦。想到了clion+cmake环境。这个用cmakelist处理应该会很方便环境依然macos clion代码cmakelist.txt 注意我们的项目名是: OpenGL请你在必要的位置替换为你的项目名。cmake_minimum_requ...原创 2018-05-05 14:44:13 · 4496 阅读 · 0 评论 -
Clion-cmake配置CGAL(含openGL)
综述最近在搞计算几何的相关项目。由于xcode对eigen的配置支持较差(不方便) 而在泊松表面重建中需要用到它。 所以索性cmake配置走起。环境macos clion编译器说明首先确保您下载了cgal sudo brew install cgal代码cmakelist.txtcmake_minimum_required(VERSIO...原创 2018-05-05 15:57:48 · 2652 阅读 · 0 评论 -
CGAL-由多面体Polyhedron_3输出obj文件
综述多面体(四面体)输出obj实现#include <CGAL/Simple_cartesian.h>#include <CGAL/Polyhedron_3.h>#include <iostream>#include <string>typedef CGAL::Simple_cartesian<double> ...原创 2018-08-12 22:37:24 · 2247 阅读 · 0 评论 -
openGL-输入点并显示
综述没有任何技术含量,只是做一个备份。方便自己查阅。代码#include <GLUT/GLUT.h>#include <iostream>#include <string>#include <vector>#include <iomanip>#include <fstream>using na...原创 2018-08-11 12:36:53 · 1453 阅读 · 0 评论