POV-Ray简单上手教程——第一幅图像和基础图形

第一幅图像和基础图形

     在本篇中,我们将会用POV-Ray渲染出我们的第一幅图像,以及一些其他简单的图形物体(球,平面,正方体)。

1.坐标系

左手系坐标。Z轴指向屏幕里面(了解POV-Ray坐标系,有利于我们渲染图像,比如一些位置信息)。

2.添加INCLUDE文件

创建一个.pov类型的文件后,用POV-Ray打开,进行编辑(当然,你也可以用其他的文本编辑器进行编辑)。首先,我们就需要include一些基本文件,来构建我们的场景(这一点和一些语言的编程是很相像的)。

  #include "colors.inc"    // The include files contain
  #include "stones.inc"    // pre-defined scene elements

第一个文件,是加入颜色,第二个是加入石头的Texture的头文件(他们都是以.inc结尾的)。另外,我们还可以加入一些其他的文件,以后会继续用到。这里,只是为了得到一幅简单的图像,这两个头文件足够。

3.添加摄像机

 camera {
    location <0, 2, -3>
    look_at  <0, 1,  2>
  }

location是摄像机所在位置,look_at是摄像机指向方向。后面<x,y,z>是他在坐标系中的位置信息。

4.描述物体

 sphere {
    <0, 1, 2>, 2
    texture {
      pigment { color Yellow }
    }
  }

这里是创建一个球体(sphere)<0,1,2>是球心所在位置;2是半径。texture{}设置纹理。pigment是一个关键字。color Yellow设置为黄色(注意颜色首字母大写)

关于颜色,可以有几种使用方式:

color red 1.0 green 0.8 blue 0.8

 color rgb <1.0, 0.8, 0.8>

rgb <1.0, 0.8, 0.8>

5.定义光源

light_source { <2, 4, -3> color White}  

light_source{}是关键字,其他就不做过多解释了,很直接明了

最后是全部代码:

  #include "colors.inc"
  background { color Cyan }
  camera {
    location <0, 2, -3>
    look_at  <0, 1,  2>
  }
  sphere {
    <0, 1, 2>, 2
    texture {
      pigment { color Yellow }
    }
  }
  light_source { <2, 4, -3> color White}

加入的background是设置背景的,这里设置背景颜色为:Cyan

渲染效果如图:

其他基础图形

1.box

box
{
   <-1,0,-1>,
   <1,0.5,3>
   texture
   {
      T_Stone25  //设置纹理效果
      scale 4    //设置比例
   }
   rotate y*20
} 

(摄像机位置没有调整好,但是我们可以看到一块就有大理石材质的长方体)

2.cone(圆锥)

cone
{
   <0,1,0>, 0.3
   <1,2,3>, 1.0    //两个圆的坐标及半径
   open    //设置是否开口
   texture
   {
      T_Stone25
      scale 4
   }
}

3.cylinder

cylinder
{
   <0,2,0>,
   <-2,2,3>,
   0.5
   open
   texture{T_Stone25 scale 4}
} 

4.plane

plane
{
   <0,1,0>,-1
   pigment
   {
      checker color Red, color Blue  //红蓝相间
   }

} 

5.Torus(环形)

基础图形:

#include "colors.inc"

camera
{
   location <0,1,-25>
   look_at 0
   angle 30
}          

background { color Gray50}
light_source{<300,300,-1000> White}    

torus
{
   4,1
   rotate -90*x
   pigment {Green}  

}

高级变形(1):

#include "colors.inc"

camera
{
   location <0,1,-25>
   look_at 0
   angle 30
}          

background { color Gray50}
light_source{<300,300,-1000> White} 

#declare Half_Torus=difference      //difference:A与B两个物体。效果为:在A中去除AB相交的部分
{
torus
{
   4,1
   rotate -90*x

}
box{<-5,-5,-1>,<5,0,1>}
pigment {Green}        

}     

#declare Flip_It_Over=180*x;          //declare声明,便于后面调用
#declare Torus_Translate=8;
union
{
   object{Half_Torus}    

   object
   {
      Half_Torus
      rotate Flip_It_Over
      translate Torus_Translate*x
   }    

   object
   {

       Half_Torus

       translate Torus_Translate*x*2
   } 

   object
   {
       Half_Torus 

       rotate  Flip_It_Over

       translate Torus_Translate*x*3

   }

   object
   {
       Half_Torus 

       rotate  Flip_It_Over
       translate -x*Torus_Translate
   } 

   object
   {
       Half_Torus  

       translate -x*Torus_Translate*2

   }  

   object
   {
       Half_Torus
       rotate  Flip_It_Over
       translate -x*Torus_Translate*3
   } 

   object
   {
       Half_Torus
       translate -x*Torus_Translate*4
   }     

   rotate y*45  

   translate z*90   

}

蛇形图案

高级变形(2):

 #include "colors.inc"

camera
{
   location <0,1,-25>
   look_at 0
   angle 30
}          

background { color Gray50}
light_source{<300,300,-1000> White} 

#declare Half_Torus=difference
{
torus
{
   4,1
   rotate -90*x

}
box{<-5,-5,-1>,<5,0,1>}  

}     

#declare Flip_It_Over=180*x;
#declare Torus_Translate=8;    

#declare Chain_Segment=cylinder
{
   <0,4,0>,<0,-4,0>,1 

}   

#declare Chain_Gold=texture
{
   pigment{BrightGold}
   finish
   {
      ambient .1
      diffuse .4
      reflection .25
      specular 1
      metallic
   }
}  

#declare Link=union
{
   object
   {
       Half_Torus
       translate y*Torus_Translate/2

   }
   object
   {
       Half_Torus
       rotate Flip_It_Over
       translate -y*Torus_Translate/2
   }
   object
   {
       Chain_Segment
       translate x*Torus_Translate/2
   }
   object
   {
       Chain_Segment
       translate -x*Torus_Translate/2
   }     

   texture{Chain_Gold}
}

#declare Link_Translate=Torus_Translate*2-2*y;     

#declare Link_Pair=union
{
   object{Link}
   object
   {
      Link
      translate   y*Link_Translate
      rotate y*90
   }         

}   

#declare Chain=union
{
   object {Link_Pair}
   object
   {
      Link_Pair
      translate y*Link_Translate*2
   }
   object
   {
      Link_Pair
      translate y*Link_Translate*4
   }
   object
   {
      Link_Pair
      translate y*Link_Translate*6
   }
   object
   {
      Link_Pair
      translate -y*Link_Translate*2
   }
   object
   {
      Link_Pair
      translate -y*Link_Translate*4
   }
   object
   {
      Link_Pair
      translate -y*Link_Translate*6
   }
}   

object {Chain scale .1 rotate <0,45,-45>}

链条:

(好吧,关于Torus这部分,我偷懒了,其中有一些东西没有解释,但大家应该能够了解,如果有问题,大家可以留言,或者翻阅官方文档)

本篇结束!!!


时间: 2024-11-09 16:05:56

POV-Ray简单上手教程——第一幅图像和基础图形的相关文章

Github windows客户端简单上手教程

作为一个前端,如果不知道GitHub,那你有可能就是一个假前端(O(∩_∩)O哈哈~)开个玩笑...进入正题,咳咳... 1.第一步要在GitHub官网下载最新的客户端,网址是https://desktop.github.com/: 2.红框地方就是下载,点击下载即可: 3.下载好以后就是这个样子: 4.双击以后会出现一个对话框: 然后大概会有一个下载的进度条对话框出现,等待下载完成即可: 5.下载好以后桌面上会有2个图标出现,双击左边的客户端图标就可以打开了: 6.打开以后输入自己的账户密码就

iBatis简单入门教程

iBatis 简介: iBatis 是apache 的一个开源项目,一个O/R Mapping 解决方案,iBatis 最大的特点就是小巧,上手很快.如果不需要太多复杂的功能,iBatis 是能够满足你的要求又足够灵活的最简单的解决方案,现在的iBatis 已经改名为Mybatis 了. 官网为:http://www.mybatis.org/ 搭建iBatis 开发环境: 1 .导入相关的jar 包,ibatis-2.3.0.677.jar .mysql-connector-java-5.1.6

MySQL 上手教程

安装 通过官网选择版本下载安装.Mac 上可通过 Homebrew 方便地安装: $ brew install mysql 检查安装是否成功: $ mysql --version mysql Ver 8.0.15 for osx10.14 on x86_64 (Homebrew) 注意到安装成功后的提示里有一些有用的信息: ==> Caveats We've installed your MySQL database without a root password. To secure it r

程序员,一起玩转GitHub版本控制,超简单入门教程 干货2

本GitHub教程旨在能够帮助大家快速入门学习使用GitHub,进行版本控制.帮助大家摆脱命令行工具,简单快速的使用GitHub. 做全栈攻城狮-写代码也要读书,爱全栈,更爱生活. 更多原创教程请关注头条号.每日更新.也可以添加小编微信:fullstackCourse.一起交流,获取最新全栈教程信息.因为FQ原因,不能下载客户端的同仁,可以关注后回复“GitHub客户端”获取安装软件. 上篇教程:GitHub这么火,程序员你不学学吗? 超简单入门教程 干货 GitHub概念部分出现了一丝纰漏.为

spring4.0.6最新稳定版新特性学习,简单学习教程(一)

Spring Framework 4.0 学习整理. Spring框架的核心部分就是Ioc容器,而Ioc控制的就是各种Bean,一个Spring项目的水平往往从其XML配置文件内容就能略知一二,很多项目,往往是外包公司的项目,配置文件往往是乱七八糟,抱着能跑就行,不报错就行的态度去写,然后在项目中后期发现各种缺失又去一通乱补,其结果就是,整个文档可读性极差,毫无章法.这也不能怪写这个XML的人,拿着苦逼程序员的工资干着架构师的工作必然是这个结果.为了程序员的幸福,我认为有必要来一套简单快速的官方

新浪SAE快速上手教程

 新浪SAE快速上手教程[1]如何免费开通新浪云 2014-07-18 > 新浪SAE快速上手教程[2]如何创建.删除应用 2014-07-24 > 新浪SAE快速上手教程[3]如何上传应用代码包 2014-07-24 > 新浪SAE快速上手教程[4]如何在线编辑代码? 2014-07-28 > 新浪SAE快速上手教程[5]如何用svn部署代码 2014-07-28 http://jingyan.baidu.com/season/43090

Swift简单入门教程:30分钟玩转Swift

通常来说,编程语言教程中的第一个程序应该在屏幕上打印“Hello, world”.在 Swift 中,可以用一行代码实现:    println("hello, world") 如果你写过 C 或者 Objective-C 代码,那你应该很熟悉这种形式——在 Swift 中,这行代码就是一个完整的程序.你不需要为了输入输出或者字符串处理导入一个单独的库.全局作用域中的代码会被自动当做程序的入口点,所以你也不需要main函数.你同样不需要在每个语句结尾写上分号. 这个教程会通过一系列编程

github简单使用教程

github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开.对于一般人来说公共仓库就已经足够了,而且我们也没多少代码来管理,O(∩_∩)O~.下面是我总结的一些简单使用方法,供初学者参考. ~~廖雪峰老师关于git的教程写得很好,可以百度来看看 1.注册账户以及创建仓库 要想使用github第一步当然是注册github账号了.之后就可以创建仓库了(免费用户只能建公共仓库),Create a New Repository,填好名称后Cr

《微信公众平台快速上手教程》目录导航,刘子骏de新媒体,图解版本

10年互联网从业者,草根创业者,新媒体营销研究者.作者博客:www.liuzijun.com 有些公众平台的基本用法可以参照上面的教程. 微信公众平台快速上手教程Part1 注册账户与认证 微信公众平台快速上手教程Part2 消息管理与群发 微信公众平台快速上手教程Part3 素材编辑 微信公众平台快速上手教程Part4 关键词自动回复 微信公众平台快速上手教程Part5 开发模式讲解 微信公众平台快速上手教程Part6 公众会议帐号 微信公众平台快速上手教程Part7 微信运营十大要决 微信公