注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Code@Pig Home

喜欢背着一袋Code傻笑的Pig .. 忧美.欢笑.记忆.忘却 .之. 角落

 
 
 

日志

 
 

[maxscript] 导出 vertex uv  

2010-05-23 21:33:19|  分类: 3d_3dmax |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
终于说到如何导出贴图坐标(texture uv)了。为啥使用字母 uv 呢?因为位置坐标是 xyz 嘛,所以贴图坐标就用 uvw,huh?

首先打开 Material Editor。
  <1> 选择 Material Editor 按钮,打开 Material Editor
  <2> 添加一个 Diffuse Map
[maxscript] 导出 vertex uv - kasicass - Code@Pig Home

再选择 Bitmap,选择一个图片作为数据源。
[maxscript] 导出 vertex uv - kasicass - Code@Pig Home

OK,这时可看到图片显示到对应的 material 上了。选择 01 - Default 切换到 Map #1 的父结点(material #1)。
[maxscript] 导出 vertex uv - kasicass - Code@Pig Home

最后将此 material 作用到 object 上。
  <1> 这里可以看到,此 matieral 有一个对应的 Diffuse Map
  <2> 鼠标点中 (2),并拖动到对应的 object 上
  <3> 点(3),可以看到 object 上正确地显示了贴图效果
[maxscript] 导出 vertex uv - kasicass - Code@Pig Home

===========================================
又到了代码讲解时间,hoho~
-------------------- export_uv_color.ms ----------------------
function export_one_triangle fp tri_index =
(
    tri_vertices = getFace $ tri_index    -- only index
    tri_uvws     = getTVFace $ tri_index
 
    format "triangle #%\n" tri_index to:fp
    for i = 1 to 3 do
    (
        v  = getVert $ tri_vertices[i]
        uv = getTVert $ tri_uvws[i]
        format "v%: xyz(%,%,%) uv(%,%)\n" i v[1] v[2] v[3] uv[1] uv[2] to:fp
    )
    format "\n" to:fp
)

function export_uv fp =
(
    m = $.material
    if m == undefined then return undefined
    bm = getSubTexmap m 2
    if bm == undefined then return undefined
    format "tex: %\n" bm.filename to:fp
)

filename = getSaveFileName types:"Data(*.dat)|*.dat|All|*.*|"
if filename != undefined then
(
    convertToMesh $
    fp = openFile filename mode:"wt"
  export_uv fp
 
    num = getNumFaces $  -- triangle num
    for i = 1 to num do
    (
        export_one_triangle fp i
    )
 
    fclose fp
)
------------------------------------------------------------------------------
tex: E:\texture.PNG
triangle #1
v1: xyz(-10.0,-10.0,0.0) uv(1.0,0.0)
v2: xyz(-10.0,10.0,0.0) uv(1.0,1.0)
v3: xyz(10.0,10.0,0.0) uv(0.0,1.0)

triangle #2
v1: xyz(10.0,10.0,0.0) uv(0.0,1.0)
v2: xyz(10.0,-10.0,0.0) uv(0.0,0.0)
v3: xyz(-10.0,-10.0,0.0) uv(1.0,0.0)
...
------------------------------------------------------------------------------
关于 uv,可以说说关于 channel 的东西。
channel 0 - vertex color
channel 1 - uvw map
一个 mesh face 必然有对应的 texture and color face。这个是 3dmax channel 的基本使用规则。

getTVFace 取得对应的 uv face;getTVert 取得对应的 uv 坐标。

要重点理解下这个,getSubTexmap 取得 material 的某个 texmap。
[maxscript] 导出 vertex uv - kasicass - Code@Pig Home
如上图,material 的 texmap 一共有24个,所以 getNumSubTexmaps m 返回24,而 getSubTexmap m 2 其实是取第二个 texmap,也就是 diffuse color 这个。

参考资料:
[3ds Max Objects]
  ==> [Editable Meshes, Splines, ...]
    ==> [Editable_Mesh and TriMesh]
      ==> [Mesh Texture Vertex Methods] & [Understanding Texture Coordinates and Vertex Colors]

[3ds Max Objects]
  ==> [Material: MAXWrapper]
    ==> [Material Common Properties, Operators, and Methods]

[3ds Max Objects]
  ==> [TextureMap: Material]
    ==> [TextureMap Types]
      ==> [BitmapTexture: TextureMap]

目录中类似 TextureMap: Material 的文字,表示 TextureMap 继承自 Material。

怎么玩 UVW Map,这里有份简单的 tutorial。
  评论这张
 
阅读(1553)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017