导出模型中顶点与其对应的uv坐标

import bpy
import json
#读取jSON文件,将数据写入改文件
file_handle = open('C:/write.json','w')
#选择的物体
me = bpy.context.object.data
#选择物体的uv
uv_layer = me.uv_layers.active.data
#uv贴图的图的宽高
image_w = bpy.data.images['planar.jpg'].size[0]
image_h = bpy.data.images['planar.jpg'].size[1]
json_str = []
#每个多边形都引用循环数组中的一个切片,这样,多边形不会直接存储顶点或角数据(例如 UV),而只是对
#多边形使用的循环的引用
#循环选中物体的多边形,根据索引查找顶点及其对应的uv坐标,并根据图片大小计算对应的纹理坐标
for poly in me.polygons:
    # range is used here to show how the polygons reference loops,
    # for convenience 'poly.loop_indices' can be used instead.
    for loop_index in range(poly.loop_start, poly.loop_start + poly.loop_total):
        if len(uv_layer) >0:
            #加此判断是因为本人uv只贴了一部分图
            px = me.vertices[me.loops[loop_index].vertex_index].co.x
            py = me.vertices[me.loops[loop_index].vertex_index].co.y
            pz = me.vertices[me.loops[loop_index].vertex_index].co.z
        
            uvx = uv_layer[loop_index].uv.x
            uvy = uv_layer[loop_index].uv.y
            
            json_item = {
                "point":{
                    "x":px,
                    "y":py,
                    "z":pz
                },
                "uv":{
                    "x":uvx * image_w,
                    "y":uvy * image_h
                }
            }
            json_str.append(json_item)
将数据以写入json文件
json.dump(json_str,file_handle)
file_handle.close()

文中的polygons,poly.loop_start, poly.loop_start + poly.loop_total可至官网查询具体解释

https://docs.blender.org/api/current/bpy.types.Mesh.html#bpy.types.Mesh

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值