用blender环绕物体拍摄
用blender球形环绕物体拍摄
相机位置
相机位置使用球面函数计算。
相机位置 V:
相机旋转根据欧拉角计算
blender中相机坐标系
xyz的欧拉角旋转是绕世界系的xyz旋转的。
欧拉角计算:
旋转根据当前相机位置:
θz = acos(y*(x,y,0))
如果x >0
θz = 180-θz
反之
θz = θz - 180
θx = acos(z*V)
θy = 恒等于0
def creatCamera(T_location,Rotation_euler,scale):scene = bpy.context.scenesensor_width_in_mm = K[1][1]*K[0][2] / (K[0][0]*K[1][2])sensor_height_in_mm = 1 # doesn't matterresolution_x_in_px = K[0][2]*2 # principal point assumed at the centerresolution_y_in_px = K[1][2]*2 # principal point assumed at the centers_u = resolution_x_in_px / sensor_width_in_mms_v = resolution_y_in_px / sensor_height_in_mm# TODO include aspect ratiof_in_mm = K[0][0] / s_u# recover original resolutionscene.render.resolution_x = resolution_x_in_px / scalescene.render.resolution_y = resolution_y_in_px / scalescene.render.resolution_percentage = scale * 100# create a new camerabpy.ops.object.add(type='CAMERA',location=T_location)ob = bpy.context.objectob.name = 'CamFrom3x4PObj'cam = ob.datacam.name = 'CamFrom3x4P'# Lenscam.type = 'PERSP'cam.lens = f_in_mm cam.lens_unit = 'MILLIMETERS'cam.sensor_width = sensor_width_in_mmpi = math.piob.rotation_mode = 'XYZ'ob.rotation_euler[0] = Rotation_euler[0] * (pi / 180.0)ob.rotation_euler[1] = Rotation_euler[1] * (pi / 180.0)ob.rotation_euler[2] = Rotation_euler[2] * (pi / 180.0)# Displaycam.show_name = True# Make this the current camerascene.camera = ob#bpy.context.scene.update()
def getRotationFromLocation(T_location):V = T_locationY_axis = Vector((.0 , 1.0 ,.0))Z_axis = Vector((.0 , .0 ,1.0))tempV = Vector((T_location[0] , T_location[1] ,.0))pi = math.pisitaZ = tempV.angle(Y_axis)sitaZ = (180.0 * sitaZ) / pisitaX = V.angle(Z_axis)sitaX = (180.0 * sitaX) / piif(T_location[0] < 0):Rotation_euler = Vector((sitaX , 1.0 ,sitaZ-180.0))else:Rotation_euler = Vector((sitaX , 1.0 ,180.0-sitaZ))print(Rotation_euler)return Rotation_eulerif __name__ == "__main__":pi = math.pinRows = 5nCols = 14weidu_angles = [30,60,90,120,150]r = 10.0pi = math.pifor j in range(nRows):weidu = weidu_angles[j] / 180.0 * pifor i in range(nCols):jingdu = (i*360.0/nCols - 180.0) / 180.0 * piprint(math.sin(weidu))x = r*math.sin(weidu)*math.cos(jingdu)y = r*math.sin(weidu)*math.sin(jingdu)z = r*math.cos(weidu)K = Matrix(([2666.666748046875 , 0 , 960.0],[0 , 2666.666748046875 , 540.0],[0 , 0 , 1]))T_location = Vector((x , y , z))print(T_location)#T_location = Vector((-13.9922 , -9.63222 , 4.01505))Rotation_euler = getRotationFromLocation(T_location)#Rotation_euler = Vector((76.8264 , 0 , -55.3262))creatCamera(T_location,Rotation_euler,1)
结果:
用blender环绕物体拍摄相关推荐
- unity摄像机环绕物体旋转
实现原理: 把摄像机作为一个空物体的子对象,空物体自旋,摄像机也会旋转,并且视角一直注释着物体 具体实现: 要环视的物体 新建一个空对象 在空对象下新建一个相机 旋转空对象即可
- blender合并物体后材质丢失问题的解决办法
1,物体模式下,随便点一个需要合并的物体. 2,点击"物理数据属性-参看UV贴图" 3, 可能出现的情况: 合并失败的原因有两个,一是"UV贴图"这里有多个可选 ...
- blender指定物体旋转原点
1.画一个立方体 ctrl+a r尝试旋转立方体,此时旋转中心点在物体中心 2.设置立方体原点 1.选中立方体tab进入编辑模式 2.按1进入点编辑模式 3.点击选择要做为中心的点 4.右键-吸附至像 ...
- blender改变物体中心位置
- 商品3D展示来啦,HMS Core3D建模服务助力电商发展
传统电商商品展示采用图文结合的形式,文案介绍产品的相关参数,搭配精美图片去吸引客户眼球.但图文商品展示由于色差.尺寸不符等原因,会让消费者产生图片和实物不一致的疑虑,且消费者需要消耗大量精力阅读和比较 ...
- # PPT进阶——文字环绕
#<center>作者:21级 郭锴</center> #<center>审核:20级 王圻铭</center> 1.首先,输入一行文字,在文本效果中找 ...
- Blender宝剑制作
1.打开blender,在物体模式下将默认的正方体删掉,Shift+A新建一个柱体并将其段数数值设置为6. 2.Tab键进入编辑模式,S键+Z键竖直方向压扁,S键+X键前后方向压扁. 3.进入面模式, ...
- blender php,=== 斑斓中国 Blender 知识索引 ===【初步整理】 nirenyang
blender导入SVG二维图形建模 http://bbs.blendercn.org/forum.php?mod=viewthread&tid=40 详解 Blender 简易形变(弯曲)修 ...
- 本科生新算法打败NeRF,不用神经网络照片也能动起来,提速100倍
万万没想到,把照片变3D这件事,离了神经网络也是这般丝滑. 而在此之前,新视角合成这方面的"大牛",是近两年大火的NeRF(神经辐射场). 它是一个简单的全连接神经网络,使用2D图 ...
- 5分钟给商品建立3D模型,我是如何做到的?
提问:3D模型展示商品不香吗? 香!当然香. 当3D建模成为电商网购应用的左膀右臂,大同小异的产品首图就有了焕然一新的呈现面貌!商品3D模型360°全方位展示,细节更丰富,辅以线上虚拟"看. ...
最新文章
- 爬虫笔记|r.text-r.request.headers|修改,头
- Smarty的assign定义变量
- 学习Spring-Cloud –编写微服务
- UICollectionView下拉使header放大模糊
- 面试题6:从尾巴开始打印链表
- 嵌入式智能国际大会图文直播:探索人工智能的前世今生
- 2021年物联网设备CVE天梯榜
- php 匹配中文和标点符号,php正则匹配标点符号
- 【NOIP2015提高组Day1】斗地主
- 修改谷歌浏览器不安全提示
- 灼口综合征的症状这么多呢呀?!
- GDPR: Impact to Your Data Management Landscape: Part 2
- calendar的使用。以及如何获取某月份最后一天的方法
- 金融风控数据挖掘--Task1
- 图片切换的一种简单的方式
- SecureCRT 8.5字体配色步骤
- 【Codeforces Round #560 (Div. 3)】 A B C D E F1 F2
- oracle分析函数以及窗口,Oracle分析函数与窗口函数
- VS 网站项目 缺失或误删项目文件(.sln)
- 2023ssm基于微信小程序的家校通系统-JAVA.VUE(论文+开题报告+运行)
热门文章
- xp系统服务器找不到打印机无法连接失败,xp系统打印机共享提示连接失败的解决方法...
- 良树机器人_揭开坑王高屋良树不为人知的一面,你看过这部《冥王计划》吗?...
- linux下编译ffmpeg很多报错,linux下ffmpeg库 ARM交叉编译
- c语言中输入123输出123321,2011年计算机等级二级C语言章节习题及答案(39)
- 配流06—frank_wolfe配流算法
- 激活ltsb2016_WIN10 LTSB 2016电话激活步骤详解
- 明安图(卡特兰)数(及其扩展 折线法)
- 动词变名词的变化规则_动词变名词的规则?(要求完整)
- excel多级联动和不规则分组转置
- PostgreSQL文本搜索(七)——自定义配置