Example 1 : A Single Sample Ray Tracer

原创 2016年06月01日 08:03:24
#include<vector>
#include<iostream>
#include"Vector3.h"
#include"rgb.h"
#include"Image.h"
#include"Shape.h"
#include"Triangle.h"
#include"Sphere.h"
#include <fstream>
using namespace std;

int main()
{
	ofstream testFile("test.ppm");
	HitRecord rec;
	bool is_a_hit;
	float tmax;
	Vector3 dir(0, 0, -1);

	vector<Shape*> shapes;
	shapes.push_back( new Sphere(Vector3(250, 250, -1000), 150, rgb(0.2, 0.2, 0.8), rgb(1, 1, 1), 1));
	shapes.push_back(new Triangle(Vector3(300.0f, 600.0f, -800.0f), Vector3(0, 100, -1000), Vector3(450, 20, -1000),
		rgb(0.8, 0.2, 0.2), rgb(1, 1, 1), 1));

	Image im(500, 500);
	for (int i = 0; i < 500; i++){
		for (int j = 0; j < 500; j++){
			tmax = 100000.0f;
			is_a_hit = false;
			Ray r(Vector3(i, j, 0), dir);
			for (int k = 0; k < shapes.size(); k++){
				if (shapes[k]->hit(r, 0.000001f, tmax, 0, rec)){
					tmax = rec.t;
					is_a_hit = true;
				}
			}
			if (is_a_hit){
				im.set(i, j, rec.color);
			}
			else{
				im.set(i, j, rgb(0.2f, 0.2f, 0.2f));
			}

		}
	}

	//im.writePPM(cout);
	im.writePPM(testFile);

}


1. generate a simple image using spheres and triangles with an  orthographic 。







Python版Raytracer

github上raytracer项目的相关介绍以及示例图片
  • i_dovelemon
  • i_dovelemon
  • 2017年05月02日 12:02
  • 677

我的ray tracer

最近,为了练手,也为了graphics的作业,亲手写了一个ray-tracer。其实,ray tracing的理论还是很简单的,但是,图形学就是这样,看着简单,但是写不出来,门槛很高,非图像所及耶~理...
  • tandychao
  • tandychao
  • 2010年06月06日 22:56
  • 633

Q88:全局光照(Global Illumination)——Path Tracing

88.1 引入(Introduction)   截至当前,回忆一下我们学过的针对直接光照和间接光照的不同反射模型。   直接光照: Phong反射模型。包含漫反射部分和高光反射部分。   ...
  • libing_zeng
  • libing_zeng
  • 2017年03月16日 18:54
  • 1076

hdu-1258 Sum It Up(简单深搜)

Sum It Up点我找原题Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot...
  • Nature_Ran
  • Nature_Ran
  • 2018年01月22日 09:11
  • 18

A Scene-Graph based Ray Tracer (1) – Intro

I just finished my 1st relatively decent graphics application– my own ray tracing sample. It takes m...
  • saintony
  • saintony
  • 2009年12月13日 04:21
  • 427

论文笔记--FaceNet & Online Hard Example Mining

昨天读了两篇论文,一篇是今年cvpr的一篇oral,R-CNN的作者,论文的重点不是提高检测速度,而是在进行更有效的训练—-如何挖掘有效的样本;另一篇是去年google提出的利用三元组进行人脸识别算法...
  • u013608402
  • u013608402
  • 2016年04月28日 16:31
  • 4981

在openGL中实现RayPicking

*原创文章,转载请注明出处* 在openGL中实现RayPicking 看过D3D入门龙书的朋友肯定知道,第十五章讲picking的时候,是利用拾取射线和包围球的的交叉测试来完成拾取的。但是在Open...
  • zhangci226
  • zhangci226
  • 2010年03月19日 16:44
  • 5980

json_sample

{     "person": {         "employees": [             {                 "id": 1,                 "fir...
  • lqrensn
  • lqrensn
  • 2015年04月02日 14:19
  • 702

Tracer Example

Tracer Example IntroductionThis example demonstrates the Tracer . Tracer is a tracing feature bu...
  • xgbjmxn
  • xgbjmxn
  • 2011年01月31日 18:03
  • 439

【论文笔记】(CVPR2016 Oral) Training Region-based Object Detectors with Online Hard Example Mining

基于Fast R-CNN框架做Online Boostrapping,在AlexNet和VGG Net的baseline上都提高了3个点左右。...
  • elaine_bao
  • elaine_bao
  • 2016年04月18日 18:14
  • 4235
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Example 1 : A Single Sample Ray Tracer
举报原因:
原因补充:

(最多只允许输入30个字)