用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环绕物体拍摄相关推荐

  1. unity摄像机环绕物体旋转

    实现原理: 把摄像机作为一个空物体的子对象,空物体自旋,摄像机也会旋转,并且视角一直注释着物体 具体实现: 要环视的物体 新建一个空对象 在空对象下新建一个相机 旋转空对象即可

  2. blender合并物体后材质丢失问题的解决办法

    1,物体模式下,随便点一个需要合并的物体. 2,点击"物理数据属性-参看UV贴图" 3, 可能出现的情况: 合并失败的原因有两个,一是"UV贴图"这里有多个可选 ...

  3. blender指定物体旋转原点

    1.画一个立方体 ctrl+a r尝试旋转立方体,此时旋转中心点在物体中心 2.设置立方体原点 1.选中立方体tab进入编辑模式 2.按1进入点编辑模式 3.点击选择要做为中心的点 4.右键-吸附至像 ...

  4. blender改变物体中心位置

  5. 商品3D展示来啦,HMS Core3D建模服务助力电商发展

    传统电商商品展示采用图文结合的形式,文案介绍产品的相关参数,搭配精美图片去吸引客户眼球.但图文商品展示由于色差.尺寸不符等原因,会让消费者产生图片和实物不一致的疑虑,且消费者需要消耗大量精力阅读和比较 ...

  6. # PPT进阶——文字环绕

    #<center>作者:21级 郭锴</center> #<center>审核:20级 王圻铭</center> 1.首先,输入一行文字,在文本效果中找 ...

  7. Blender宝剑制作

    1.打开blender,在物体模式下将默认的正方体删掉,Shift+A新建一个柱体并将其段数数值设置为6. 2.Tab键进入编辑模式,S键+Z键竖直方向压扁,S键+X键前后方向压扁. 3.进入面模式, ...

  8. blender php,=== 斑斓中国 Blender 知识索引 ===【初步整理】 nirenyang

    blender导入SVG二维图形建模 http://bbs.blendercn.org/forum.php?mod=viewthread&tid=40 详解 Blender 简易形变(弯曲)修 ...

  9. 本科生新算法打败NeRF,不用神经网络照片也能动起来,提速100倍

    万万没想到,把照片变3D这件事,离了神经网络也是这般丝滑. 而在此之前,新视角合成这方面的"大牛",是近两年大火的NeRF(神经辐射场). 它是一个简单的全连接神经网络,使用2D图 ...

  10. 5分钟给商品建立3D模型,我是如何做到的?

    提问:3D模型展示商品不香吗? 香!当然香. 当3D建模成为电商网购应用的左膀右臂,大同小异的产品首图就有了焕然一新的呈现面貌!商品3D模型360°全方位展示,细节更丰富,辅以线上虚拟"看. ...

最新文章

  1. 爬虫笔记|r.text-r.request.headers|修改,头
  2. Smarty的assign定义变量
  3. 学习Spring-Cloud –编写微服务
  4. UICollectionView下拉使header放大模糊
  5. 面试题6:从尾巴开始打印链表
  6. 嵌入式智能国际大会图文直播:探索人工智能的前世今生
  7. 2021年物联网设备CVE天梯榜
  8. php 匹配中文和标点符号,php正则匹配标点符号
  9. 【NOIP2015提高组Day1】斗地主
  10. 修改谷歌浏览器不安全提示
  11. 灼口综合征的症状这么多呢呀?!
  12. GDPR: Impact to Your Data Management Landscape: Part 2
  13. calendar的使用。以及如何获取某月份最后一天的方法
  14. 金融风控数据挖掘--Task1
  15. 图片切换的一种简单的方式
  16. SecureCRT 8.5字体配色步骤
  17. 【Codeforces Round #560 (Div. 3)】 A B C D E F1 F2
  18. oracle分析函数以及窗口,Oracle分析函数与窗口函数
  19. VS 网站项目 缺失或误删项目文件(.sln)
  20. 2023ssm基于微信小程序的家校通系统-JAVA.VUE(论文+开题报告+运行)

热门文章

  1. xp系统服务器找不到打印机无法连接失败,xp系统打印机共享提示连接失败的解决方法...
  2. 良树机器人_揭开坑王高屋良树不为人知的一面,你看过这部《冥王计划》吗?...
  3. linux下编译ffmpeg很多报错,linux下ffmpeg库 ARM交叉编译
  4. c语言中输入123输出123321,2011年计算机等级二级C语言章节习题及答案(39)
  5. 配流06—frank_wolfe配流算法
  6. 激活ltsb2016_WIN10 LTSB 2016电话激活步骤详解
  7. 明安图(卡特兰)数(及其扩展 折线法)
  8. 动词变名词的变化规则_动词变名词的规则?(要求完整)
  9. excel多级联动和不规则分组转置
  10. PostgreSQL文本搜索(七)——自定义配置