VRay渲染器之家装户型渲染实战记录

Vray渲染器之家装户型渲染实战记录

简要介绍:

首先思路是分为客户端、服务器、中间件三大块。先从客户端传入json文件给包括mesh,灯光,模型的中间件,其中mesh和灯光可以用已有的API调用服务器的内容,然后调用模型中包含的json文件包括对应的ID号、三维信息,这些信息通过访问数据库中的vrscenes文件(或者max文件)来获取对应的其他参数,然后生成对应的场景文件;最后实现的效果非常好。

第一步:环境设置

1、语言选择:

  • vray渲染编程支持C++,python等语言。因为没有正式开发所以暂时使用python编写的。

2、下载VRaySDK:

  • 进入开发者主页:https://docs.chaosgroup.com/display/LIC5/Installing+the+License+Server
  • 点进入下载主页:https://download.chaosgroup.com/?product=48&release_type=official_release点最下面倒数第二个下载
    在这里插入图片描述
  • 选择对应的系统版本下载即可:
    在这里插入图片描述
  • 不同系统的安装位置参考:
    在这里插入图片描述
  • 安装后,输入自己的账户密码登入账户即可,如果没有购买可以申请试用期1-3个月不等,购买需要购买至少一个渲染节点和至少一个渲染服务器:

在这里插入图片描述

  • 命令行安装等其他参考官方文档。
  • 登入自己的本机地址localhost:30304查看证书和使用证书这里会显示你的使用状况,使用人数,使用期限,购买了哪些证书。
    在这里插入图片描述
  • 如果要换用户点击disable然后在重新登录即可:
    在这里插入图片描述

2、库文件载入:

  • 本机系统是macOS,相对Windows会麻烦一些,Windows只需将/ChaosGroup/VRay/AppSDk/python27/vray文件拷入工程中即可。而macOS在自己搞鼓和询问官方后得出的最简单的方式是直接在py文件开始处加入一句以下语句即可:
    vray.setSDKLibraryPath("/Applications/ChaosGroup/V-Ray/AppSDK/bin")
  • 还有就是在测试中Python2.7支持较好,建议使用该版本开发。

3、配置环境参数:

一部分会在安装VRay的时候就有,其他一部分自己添加

  • PYTHONPATH=:/Applications/ChaosGroup/V-Ray/AppSDK/python27
  • VRAY_OSL_PATH=/Applications/ChaosGroup/V-Ray/AppSDK/bin
  • VRAY_MDL_PATH=/Applications/ChaosGroup/V-Ray/Standalone_for_mavericks_x64/mdl
  • VRAY_PATH=:/Applications/ChaosGroup/V-Ray/Standalone_for_mavericks_x64/bin/mavericks_x64/gcc-4.2-cpp
  • VRAY_SDK=/Applications/ChaosGroup/V-Ray/AppSDK
  • VRAY_SEND_FEEDBACK=1

第二步、读取文件中的数据并简单建模

1、建一个house类:

  • 其中包括house字典和camera,walls,lights,models列表。使用常规的文件读取操作即可,然后初始化:
def __init__(self, filename):  with open(filename) as f:self.house = json.load(f)

2、读取json文件参数并实现房间的基本模型:

  • 编写一个日志函数可以返回相关的进程参数和报错:
def dumpMsg(renderer, message, level, instant):if level == vray.LOGLEVEL_ERROR:print("[ERROR]", message)elif level == vray.LOGLEVEL_WARNING:print("[Warning]", message)elif level == vray.LOGLEVEL_INFO:print("[info]", message)
renderer.setOnLogMessage(dumpMsg)
  • 调用house类读取json文件:
DEMO_house = json2vr.House("./json/name.json")
  • 依次循坏读入对应的定点坐标数据并修改他们的名称方便调用然后生成node节点包括他的mesh和材质(后面讲),
for i in range(len(walls)):string1 = 'wall_' + str(i) + '_node'string2 = 'mesh_' + str(i) + '_node'mesh.append(renderer.classes.GeomStaticMesh(string2))
  • 这里最关键的就是setWall函数用来生成基础的墙体,用顶点个数来做循环次数,分别读取对应json文件的嵌套列表中的坐标数据存入对应的列表中,准线法线等同理,然后把读取的数据传给我们创建的node中的mesh等对应数据中即可,这里VRay要求这4个参数是必须设置的,这里还添加了UV的相关数据是为以后贴图使用的,还有就是对于VRay的坐标轴来说是一个右手坐标系:
    for i in range(len(wall["Vertices"])):x = wall["Vertices"][i]["x"]y = wall["Vertices"][i]["y"]z = wall["Vertices"][i]["z"]point = vray.Vector(x, y, z)vertices_list.append(point)
  • 整个VRay的坐标设置查了很久资料,第一种方法是利用计算机图形学的里面的三维坐标变换法则即利用三维变化矩阵进行操作
    ,大致原理是:
    由于用齐次坐标表示,三维几何变换的矩阵是一个4阶方阵,其形式如下:

    其中产生按轴缩放、旋转、错切等变换。在这里插入图片描述产生平移变换,在这里插入图片描述产生投影变换,在这里插入图片描述产生整体的缩放变换。这样的话转换起来相当复杂。所以有了第二种方法使用内置的makeRotation()函数进行操作,只需提供一个接口获取旋转,大小比例,坐标的数值即可获取位置,省去了矩阵运算的过程。
def make_transform(rotX=0, rotY=0, rotZ=0, scale=1, offset=vray.Vector()):mS = vray.Matrix(scale)mX = vray.Matrix.makeRotationMatrixX(rotX)mY = vray.Matrix.makeRotationMatrixY(rotY)mZ = vray.Matrix.makeRotationMatrixZ(rotZ)transform = vray.Transform(mS * mZ * mY * mX, offset)return transform

3、设置相机和灯光

  • 在3维的世界里,相机就相当于人的眼睛,相机的设置是相当的关键的。VRay的坐标轴是右手系,并且初始的方向是Z轴朝下,顺着角度的增大做逆时针的旋转,其中的三个旋转参数分别代表了绕x,y,z轴旋绕,具体来看就是上下旋转,左右旋转,自身旋转。这里是使用的全景相机,如果使用常规相机则去掉settingsCamera的属性即可,fov属性是视场角的大小决定了光学仪器的视野范围,视场角越大,视野就越大,光学倍率就越小。通俗地说,目标物体超过这个角就不会被收在镜头里,VRay里的fov属性与unity和unreal的有一定的区别,他们之间有一定的转换是1:100,全景相机将fov值设为2pi即可,其他属性在前面的博客有讲解。补充:官方的说法只明确了VRAY渲染+Y表示上轴,左右应该是X轴,而前后是Y轴,相机的-Z轴方向是相机的取景方向,至于物体的正方向应该也是-Z轴。和博主在开发上有一些出入所以还是根据实际情况来调整。
    在这里插入图片描述
  • 灯光的函数在以前讲过这里直接就写进来,不同的灯光写成不同的函数,可以使用重载。这里的invisible属性非常重要,当我们的相机设置的位置处于灯后的话我们看到的就是一片漆黑,这里有两个方法,一个方法是使用invisble()使其透视
light = renderer.classes.LightRectangle()
lightPos = vray.Vector(0, 0, 270)
light.transform = make_transform(0, 0, 0, 1, lightPos)
light.color = vray.Color(1, 1, 1)
light.u_size = 500
light.v_size = 500
light.intensity = 2
light.invisible = 0

第二个是使用全局灯光模式,具体的属性见上。

gi = renderer.classes.SettingsGI.getInstanceOrCreate()
gi.on = True
gi.primary_engine = 0
gi.secondary_engine = 3

第三步、墙体的材质和贴图

  • 材质的设置一般分为初始化材质和使用时修改。用法都基本相同,只是初始化在墙体生成的时候就调用该函数根据自己的材质进行设置即可,建议使用VRay内置提供的材质初始化。

  • 在材质上我们既可以使用内置的材质,也可以还是使用简单的颜色组合赋给BRDF然后覆盖material属性

newBRDF = renderer.classes.BRDFDiffuse()
newBRDF.color = vray.AColor(r, g, b, a)
newMaterial = renderer.classes.MtlSingleBRDF()
newMaterial.brdf = newBRDF
renderer.plugins[node].material = newMaterial

或者获取对性的贴图,在VRay里面使用贴图都需要借助bitmap来进行设置贴图属性之后赋给材质然后设置diffiuse和reflect两个必要的参数,加上一些可选的设置,包括反光度,透光度等等,

newBRDF = renderer.classes.BRDFDiffuse()
newBRDF.color = vray.AColor(r, g, b, a)
newMaterial = renderer.classes.MtlSingleBRDF()
newMaterial.brdf = newBRDF
renderer.plugins[node].material = newMaterial

第四步、导入家具物体

  • 家具的物体主要是通过获取vrscene中的对应家具数据,在使用数据之前需要先对vrscene中的数据进行处理去掉出了材质之外的其他不相关数据,因为其他数据都是我们自己设置嘛。
renderer.load(filename)
del renderer.plugins['setting']

获取对应数据重新建立一个node将对应vrscene的position,mesh,贴图全部赋进去即可。VRay值支持读取一个vrscene后面的会覆盖前面的,所以官方采用不同的物体的vrscene放在一个统一的vrscene里一起导入即可,再删除原来初始化的node即可

table = renderer.classes.Node()
table.geometry = renderer.plugins[geometry]
os.chdir(path)
table.material = material1
table.transform = make_transform(rotX, rotY, rotZ, scale, offset)

第五步 导出保存图片

  • VRay渲染器CPU的渲染10分钟左右就差不多到底了,再长时间效果改善不大,GPU则在合理范围内时间越长效果越好。
renderer.startSync()
renderer.waitForRenderEnd(20000)
renderer.export("exportAll.vrsence")
image = renderer.getImage()
image.save("name.jpg")

*这里到导出设置上询问了官方,给出的解决方案是和unreal里导出属性相同的compressed和hexArrays属性。

RayExportSettings settings;
setting.compressed = false;
setting.hexArrays = false;
vrayRendrer.exportScene(''filename.vrscene'',settings);

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Unity 实用插件篇】| 可视化图表插件XCharts (折线图、柱状图、饼图等)详细教学

前言【Unity 实用插件篇】| 可视化图表插件XCharts (折线图、柱状图、饼图等)详细教学一、XCharts介绍1.1 特性1.2 相关网站链接1.3 效果展示二、XCharts导入三、XCharts快速使用3.1 添加一个简单图表3.2 添加多个Seire3.3 给图表添加其他组件3.4 添加Serie组件,如给折线图区域…

食住玩|3dmax效果图大师们怎么用CR去测试效果图的渲染参数?

【本文导航】 本文所示范的步骤,只有5个,且皆有截图明示。 【解说全引导进入视频教程】 3dmax效果图CAD施工图进阶 ———————50分钟速成效果图全流程不教学更快进入视频教程————— 在corona渲染器的设置面板中,应该如何设置测试…

食住玩3dmax|室内设计师如何用CORONA设置成品效果图出大图的渲染参数?

【本文导航】 1、简介CR;2、转换CR材质方法;3、大图CR参数2个步骤;4、往期回顾。 【解说全引导进入视频教程】 3dmax效果图CAD施工图进阶 ———————50分钟速成效果图全流程不教学更快进入视频教程————— 【简介CR】前面几节课&a…

效果图渲染的几大实用技巧

效果图渲染是建筑、室内、景观、产品设计等行业中非常重要的一环。一个高质量的效果图可以让客户更好地了解和感受设计方案,提高设计师的竞争力。但是渲染效果的好坏和速度都取决于设计师的技巧和工具。本文将介绍几大实用技巧,帮助设计师更好地进行效果…

C语言实现双色球案例

双色球 1.案例描述 双色球是中国福利彩票目前的一种玩法,并非赌博,其彩票投注区分为红色球号码区和蓝色球号码区,每注投注号码由6个红色球和1个蓝色球号码组成。红色球号码从1-33中选择,蓝色球号码从1-16中选择。每期开出的红色…

历史数据双色球小工具

Python可视化界面小工具,可自定义历史期数,历史双色球数据,打印结果、写入excel表格、并进行简单的结果分析; 1、工具效果图如下图所示: 2、生成Excel表格数据格式如下图所示: 3、完整代码如下&#xff1a…

Python采集双色球历史开奖信息,看看哪个号中奖概率更大

目录标题 前言知识点:开发环境:基本流程:代码展示尾语 前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 知识点: 爬虫基本流程 requests的使用 动态数据抓包 开发环境: 解释器: python 3.8 编辑器: pycharm 2022.3 requests >>> pip install requests 第三…

华南理工大学计算机/软件 复试 经验贴整理

文章目录 最新更新2023/02/24 : 我能提供?(21,22届复试全流程,如何找复试资料,一些学习技巧,前人经验,闲聊,会就答...)2020年2019年其它资料来源 最新更新202…

北京交通大学计算机考研02102、02103复试经验分享

【2023考研复试重要时间节点】 2023年3月20号左右计算机学院公布复试线与复试名单。2023年3月底参加复试。2023年4月初公布拟录取名单。 【复试解读】 【进入复试数据】 【1】新冠疫情之前(20、21、22考研),北交计算机复试一直都是包括线下…

西北工业大学网络安全考研复试经验

初试直接看我师姐的文章吧,传送门:西北工业大学网络空间安全考研经验分享_崔啊是个幸福的人的博客-CSDN博客_西北工业大学网络安全考研报考学校:西北工业大学学院:网络空间安全专业:847初试分数:391英语&am…

研究生计算机专业知识复试面试常见问题

研究生计算机专业复试面试常见问题 操作系统1. 进程和线程区别和联系2. 常见的调度算法3. 死锁的产生和解决4. 虚拟内存,页面置换算法5. 磁盘调度 数据结构1. 常见的排序算法过程和时间复杂度,空间复杂度2. 深度搜索和广度搜索深度搜索(DFS)广度搜索&…

计算机网络考研复试速成 - 知识点精炼 - 背诵版

计算机网络复试速成 针对于计算机考研复试 - 计算机网络 ,删除了很多初试中关于 计算、冗余 的内容,把复习中心放在 高频知识点 (偏向概念) ,希望可以节约准研究生们的复习时间!大家可以放心食用🍖🍖&#…

陕西师范大学计算机考研复试,复试干货 | 陕西师范大学考研复试经验分享贴...

本文为陕西师范大学应用心理学方向复试经验,其它方向复试流程与其基本一致,可放心参考学习~ヾ() 一、陕师大复试分数要求 每年的情况有一些不同,2017年以前进入复试分数线浮动在350-360分之间,2018年题稍难一些,复试分…

南师大教育技术学初试复试调剂经验分享

南师大教育技术学考研经验分享 1 概述... 1 2 初试准备经验... 2 2.1 政治部分... 2 2.2 英语部分... 2 2.3 c语言和web部分... 2 2.4 数据结构部分... 3 2.5 教学设计部分... 3 2.6 初试资料网盘分享... 3 2.7 当你不想学习时怎么办... 3 3 复试调剂经验... 3 3.1 复试和调剂资…

上海交通大学考研复试模块小结——密码学

好久没有写博客了,本来说的是自从成绩出来要好好准备复试,结果距离成绩出来一个月了,复试一点动静都没有,那我还是一边准备相关的专业课,一边按专业的形式,把相关的专业课知识再过一遍,哎~真是太…

河海大学软件工程学硕考研复试经验贴

一、写在前面 想必看到这篇文章的学弟学妹都已经考完初试了,考得如何每个人心中各有千秋。无论如何,坚持将考研整个过程走下来的你们就已经是最棒的了,现在可以好好休息一下,静待考研成绩的公布了。 我写下这篇文章的目的主要是…

夏令营导师推荐信怎么写(浙大CS上岸老学姐手把手教你)

Hello,我又来了!前几天分享了自己的个人陈述,写了一些注意事项,也把自己之前的模板分享给了很多学弟学妹,在这里祝大家早日拿到心仪offer!老规矩,还是先来介绍一下我自己: 本人就读于…

中科院一博士论文走红,看哭众多网友

本文转载自 凤凰网 “我走了很远的路,吃了很多的苦,才将这份博士学位论文送到你的面前。二十二载求学路,一路风雨泥泞,许多不容易。如梦一场,仿佛昨天一家人才团聚过。” 上述文字来自于一篇博士论文的《致谢》部分。…

恭喜马斯克、纳德拉当选美国工程院院士,张宏江、方岱宁入选外籍院士

2 月 9 日,美国国家工程院(National Academy of Engineering,NAE)宣布了 2021 年度国家工程院增补院士名单,此次共有 111 名院士和 22 名外籍院士入选。目前美国工程院院士总数达到 2388 名,国际院士人数达…

两院院士直言:不要迷信院士

本文来源:paperRSS,编辑:募格学术 导读: 王选(1937年2月5日-2006年2月13日),计算机专家。江苏无锡人。1991年当选为中国科学院院士,1994年当选为中国工程院院士,获得2001…