CN104574275A - 一种在模型绘制过程中合并贴图的方法 - Google Patents

一种在模型绘制过程中合并贴图的方法 Download PDF

Info

Publication number
CN104574275A
CN104574275A CN201410819066.3A CN201410819066A CN104574275A CN 104574275 A CN104574275 A CN 104574275A CN 201410819066 A CN201410819066 A CN 201410819066A CN 104574275 A CN104574275 A CN 104574275A
Authority
CN
China
Prior art keywords
pinup picture
pinup
merging
model
maps
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410819066.3A
Other languages
English (en)
Other versions
CN104574275B (zh
Inventor
谭贤亮
刘畅
李翔威
梁波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Xishanju Network Technology Co ltd
Zhuhai Kingsoft Digital Network Technology Co Ltd
Original Assignee
Western Hills Residence Guangzhou Shi You Network Technology Co Ltd
Zhuhai Kingsoft Online Game Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Hills Residence Guangzhou Shi You Network Technology Co Ltd, Zhuhai Kingsoft Online Game Technology Co Ltd filed Critical Western Hills Residence Guangzhou Shi You Network Technology Co Ltd
Priority to CN201410819066.3A priority Critical patent/CN104574275B/zh
Publication of CN104574275A publication Critical patent/CN104574275A/zh
Application granted granted Critical
Publication of CN104574275B publication Critical patent/CN104574275B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4038Image mosaicing, e.g. composing plane images from plane sub-images

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种在模型绘制过程中合并贴图的方法,即动态的将一个模型中所使用的多张贴图中信息合并到一张贴图中,只有第一次加载贴图的时候会触发合并逻辑并访问多张贴图,之后的访问中,都只需要从一张贴图中即可提取出相应的贴图数据,减少碎片化的访问,提高程序的性能。采用本发明的方法,将一个模型分散加载的多张贴图合并到一个大的贴图中,并维护好了模型和合并后贴图的关系,减少贴图加载过程中打开文件的次数和读取过程中所需要的额外空间,同时能减少零碎的贴图,提高程序的执行效率。

Description

一种在模型绘制过程中合并贴图的方法
技术领域
本发明涉及一种在模型绘制过程中合并贴图的方法。
背景技术
在游戏中,一个模型常常需要打开多张贴图。某些贴图是由多张小贴图,或多张贴图的一部分组合起来的,比如把人物的上衣、皮带、裤子等等分放在不同的贴图上。若是使用传统的方式,则需要打开并加载多张贴图,并读取某些贴图上的一个小区域。对于显卡来说,零碎的贴图会极大的降低性能;对于磁盘来说,打开多个文件也会降低性能和效率。如在一个模型中用到了图1所示的三个张贴图中的线框部分,若需要打开这三张贴图并只使用线框部分所标注的内容,则需要分别打开三张图,并读取线框部分的内容,可以看出使用率较低。
发明内容
为了解决现有技术中存在的上述问题,本发明提供一种在模型绘制过程中合并贴图的方法,即动态的将一个模型中所使用的多张贴图中信息合并到一张贴图中,只有第一次加载贴图的时候会触发合并逻辑并访问多张贴图,之后的访问中,都只需要从一张贴图中即可提取出相应的贴图数据,减少碎片化的访问,提高程序的性能。
本发明所采用的技术方案是:
一种在模型绘制过程中合并贴图的方法,包括以下步骤:
A.            传入所操作的一个模型ID;
B.    传入所需要加载的多张贴图的名称和位置信息,其每张贴图的位置信息为{贴图名称,x,y,w,h},其中贴图名称为文件名或文件名的哈希值,{x,y,w,h}是分块位置信息, x、y为要加载的位置的坐标,w、h为高宽信息;
C.            在合并名称表中查询这个模型的ID值,查看模型是否已经合并过贴图,若没有则暂时中断加载流程并进入贴图合并流程,并待合并流程结束后重新开始加载流程;否则读取出模型ID对应的贴图映射表和合并贴图名称并进入下一步;
D.            根据合并贴图名称打开合并后的贴图;
E.            在贴图映射表中查找下一张贴图的信息,其传入值是{贴图名称,x,y}这样一个三元组,得到的传出值为{x’,y’};
F.            读取出{合并贴图名称,x’,y’,w,h}位置的贴图信息,将其加载到内存中,并将其信息传给模型;
G.            若所有贴图都已经加载则结束加载流程,否则返回步骤e)加载下一张贴图。
上述步骤C中,所述贴图合并流程包括以下步骤:
a.            传入所操作的一个模型ID;
b.            传入所需要加载的张贴图的名称和位置信息,其每张贴图的位置信息为{贴图名称,x,y,w,h};
c.            生成一张空白的合并贴图;
d.            生成一张空的贴图映射表;
e.            根据位置信息{贴图名称,x,y,w,h}加载一张贴图;
f.            在合并贴图中找到一个空位置,将加载的贴图写入到合并贴图中的空位置处,并记下此位置的坐标,即{x’,y’};
g.            将{贴图名称,x,y}和{x’,y’}的对应关系加入到贴图映射表中;
h.            若所有贴图都已经加载完毕,则进入步骤j),否则返回步骤e)合并下一张贴图;
i.            将合并贴图保存到磁盘上,并将其命名;
j.            将模型ID、贴图映射表和合并贴图名称加入合并命中表中,合并流程结束。
上述贴图合并流程的步骤c中,生成的合并贴图的宽、高值要大于等于传入的所有贴图中w,h的最大值。
上述贴图合并流程的步骤f中,若合并贴图中的空位大小不足以保存加载的贴图,则增加合并贴图的宽、高值,其增加的值是当前贴图的w,h。
本发明的有益效果是:
采用本发明的方法,将一个模型分散加载的多张贴图合并到一个大的贴图中,并维护好了模型和合并后贴图的关系,减少贴图加载过程中打开文件的次数和读取过程中所需要的额外空间,同时能减少零碎的贴图,提高程序的执行效率。
附图说明
下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1是待加载的张贴图的示意图;
图2是本发明中合并命中表的示意图;
图3是本发明中贴图映射表以及贴图映射方式的示意图;
图4是本发明中贴图加载过程的流程图;
图5是本发明中贴图合并过程的流程图。
具体实施方式
本发明提供一种在模型绘制过程中合并贴图的方法,运用本方法的***中存在模型和贴图两种资源。模型保留所需绘制的物件的三维数据,所有模型都分别有一个唯一的ID值,其ID值可以是模型的名称或模型名称的哈希值。贴图为覆盖在模型表面的二维数据。模型在绘制过程前需要加载贴图,本***中一个模型对应多张贴图,一张贴图亦可为多个模型所使用。加载贴图的过程中会传入所需的多张贴图名称以及分块位置信息,其具体表示为{贴图名称,x,y,w,h},其中贴图名称为文件名或文件名的哈希值,{x,y,w,h}是分块位置信息,其中x、y为要加载的位置的坐标,w、h为高宽信息。
运用本方法的***,在初始化时建立一个合并命中表,参照图2,合并命中表维护了所有模型ID对应的{贴图映射表,合并贴图名称}的关系;其输入是一个模型ID,输出是{贴图映射表,合并贴图名称}这样一个二元组;其具体实现是一个哈希表。合并命中表的使用例子如下:传入“驿站掌柜.mod”这个模型ID,如果此模型的贴图已经合并,则会返回“驿站掌柜.mod”这个模型的一个贴图映射表和一个合并后的大贴图,否则提示查找失败。
运用本方法的***,还必须建立多个贴图映射表,贴图映射表用于维护合并前后贴图的对应关系,且每个贴图映射表唯一对应一个模型,如图3所示。这个映射表能够通过合并前贴图的位置信息查询出合并后贴图的位置信息,其输入是一个{贴图名称,x,y}的三元组,输出是一个{x’,y’}的二元组。贴图映射表的使用例子如下:传入{衣服01.jpg,100,200}可能传出{500,500},传入是合并前的贴图名称和x,y坐标。传出是一个合并后的贴图坐标。
下面以一个完整的实例演示贴图的加载和合并过程。
设有一个模型,其模型ID为模型A”。模型A将用到三张贴图,这三张贴图的位置信息分别:
1.文件:A.bmp,坐标:x = 100,y=100,宽高:w=100,h=100;
2.文件:B.bmp,坐标:x = 200,y=300,宽高:w=50,h=100;
3.文件:C.bmp,坐标:x = 500,y=500,宽高:w=200,h=100。
当上层应用加载本模型及其贴图时候将传入如下信息:
模型的 ID= “模型A”;
贴图1:{A.bmp,100,100,100,100};
贴图2:{B.bmp,200,300,50,100};
贴图3:{C.bmp,500,500,200,100}。
应用本***的程序根据如下步骤执行:
1.在合并命中表中查询模型A为ID值的表项,此时由于此表为空,因此查找失败,进入贴图合并流程,参照图5;
2.生成一张空贴图,即合并贴图,其大小为w=200,h=100(大于等于三张贴图中的高宽的最大值);
3.生成一张空的贴图映射表;
4.根据{A.bmp,100,100,100,100}打开A.bmp文件,加载x=100,y=100位置,宽高分别为w=100,h=100的贴图1;
5.在合并贴图中查找一个位置存放w=100,h=100的贴图1,此位置为x’=0,y’=0;
6.将贴图1写入到合并贴图的x’=0,y’=0的位置;
7.将{A.bmp,100,100}和{0,0}写入到贴图映射表中;
8.根据{B.bmp,200,300,50,100}打开B.bmp文件,加载x=200,y=300位置,宽高分别为w=50,h=100的贴图2;
9.在合并贴图中查找一个位置存放w=50,h=100的贴图2,此位置为x’=100,y’=0;
10.将贴图2写入到合并贴图的x’=100,y’=0的位置;
11.将{B.bmp,200,300}和{100,0}写入到贴图映射表中;
12.根据{C.bmp,500,500,200,100}打开C.bmp文件,加载x=500,y=500位置,宽高分别为w=200,h=100的贴图3;
13.在合并贴图中查找一个位置存放w=200,h=100的贴图3,此时找不到这样大的空位置,于是将合并贴图的宽高分别增加200和100,之后找到空位置为x’=150,y’=0;
14.将贴图3写入到合并贴图的x’=150,y’=0的位置;
15.将{C.bmp,500,500,}和{150,0}写入到贴图映射表中;
16.将合并贴图命名为“模型A_10_ALL.bmp”保存到磁盘上;
17.将模型ID,贴图映射表、合并贴图名称即{模型A,贴图映射表,模型A_10_ALL.bmp}加入到合并命中表中。
当在合并命中表中生成贴图映射表、合并贴图名称以及合并贴图后,则返回加载流程,如图4所示,并执行以下步骤:
1).在合并命中表中查询“模型A”为ID值的表项,此时由于此表中可以查找进入贴图加载流程;
2).在合并命中表中读取出模型A的贴图映射表和A_10_ALL.bmp;
3).打开A_10_ALL.bmp这张贴图;
4).根据{A.bmp,100,100,100,100}在贴图映射表中查找{A.bmp,100,100}得到{0,0};
5).加载{A_10_ALL.bmp,0,0,100,100}位置的贴图;
6).根据{B.bmp,200,300,50,100}在贴图映射表中查找{B.bmp,200,300}得到{100,0};
7).加载{A_10_ALL.bmp,100,0,50,100}位置的贴图;
8).根据{C.bmp,500,500,200,100}在贴图映射表中查找{C.bmp,500,500}得到{150,0};
9).加载{A_10_ALL.bmp,150,0,200,100}位置的贴图;
10).所有贴图加载完毕,结束加载流程。
采用本发明的方法,将一个模型分散加载的多张贴图合并到一个大的贴图中,并维护好了模型和合并后贴图的关系,减少贴图加载过程中打开文件的次数和读取过程中所需要的额外空间,同时能减少零碎的贴图,提高程序的执行效率。
以上仅为本发明的优先实施方式,只要以基本相同手段实现本发明目的的技术方案都属于本发明的保护范围之内。

Claims (4)

1.一种在模型绘制过程中合并贴图的方法,其特征在于,包括以下步骤:
  A.传入所操作的一个模型ID;
  B.传入所需要加载的多张贴图的名称和位置信息,其每张贴图的位置信息为{贴图名称,x,y,w,h},其中贴图名称为文件名或文件名的哈希值,{x,y,w,h}是分块位置信息, x、y为要加载的位置的坐标,w、h为高宽信息;
  C.在合并名称表中查询这个模型的ID值,查看模型是否已经合并过贴图,若没有则暂时中断加载流程并进入贴图合并流程,并待合并流程结束后重新开始加载流程;否则读取出模型ID对应的贴图映射表和合并贴图名称并进入下一步;
  D.根据合并贴图名称打开合并后的贴图;
  E.在贴图映射表中查找下一张贴图的信息,其传入值是{贴图名称,x,y}这样一个三元组,得到的传出值为{x’,y’};
  F.读取出{合并贴图名称,x’,y’,w,h}位置的贴图信息,将其加载到内存中,并将其信息传给模型;
 G.若所有贴图都已经加载则结束加载流程,否则返回步骤e)加载下一张贴图。
2.根据权利要求1所述的一种在模型绘制过程中合并贴图的方法,其特征在于,上述步骤C中,所述贴图合并流程包括以下步骤:
  a.传入所操作的一个模型ID;
  b.传入所需要加载的张贴图的名称和位置信息,其每张贴图的位置信息为{贴图名称,x,y,w,h};
  c.生成一张空白的合并贴图;
  d.生成一张空的贴图映射表;
  e.根据位置信息{贴图名称,x,y,w,h}加载一张贴图;
  f.在合并贴图中找到一个空位置,将加载的贴图写入到合并贴图中的空位置处,并记下此位置的坐标,即{x’,y’};
  g.将{贴图名称,x,y}和{x’,y’}的对应关系加入到贴图映射表中;
  h.若所有贴图都已经加载完毕,则进入步骤j),否则返回步骤e)合并下一张贴图;
  i.将合并贴图保存到磁盘上,并将其命名;
  j.将模型ID、贴图映射表和合并贴图名称加入合并命中表中,合并流程结束。
3.根据权利要求2所述的一种在模型绘制过程中合并贴图的方法,其特征在于:上述贴图合并流程的步骤c中,生成的合并贴图的宽、高值要大于等于传入的所有贴图中w,h的最大值。
4.根据权利要求2所述的一种在模型绘制过程中合并贴图的方法,其特征在于:上述贴图合并流程的步骤f中,若合并贴图中的空位大小不足以保存加载的贴图,则增加合并贴图的宽、高值,其增加的值是当前贴图的w,h。
CN201410819066.3A 2014-12-25 2014-12-25 一种在模型绘制过程中合并贴图的方法 Active CN104574275B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410819066.3A CN104574275B (zh) 2014-12-25 2014-12-25 一种在模型绘制过程中合并贴图的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410819066.3A CN104574275B (zh) 2014-12-25 2014-12-25 一种在模型绘制过程中合并贴图的方法

Publications (2)

Publication Number Publication Date
CN104574275A true CN104574275A (zh) 2015-04-29
CN104574275B CN104574275B (zh) 2017-12-12

Family

ID=53090260

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410819066.3A Active CN104574275B (zh) 2014-12-25 2014-12-25 一种在模型绘制过程中合并贴图的方法

Country Status (1)

Country Link
CN (1) CN104574275B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104899908A (zh) * 2015-06-12 2015-09-09 百度在线网络技术(北京)有限公司 生成事件组演化图的方法和装置
CN108537861A (zh) * 2018-04-09 2018-09-14 网易(杭州)网络有限公司 贴图生成方法、装置、设备和存储介质
CN109603155A (zh) * 2018-11-29 2019-04-12 网易(杭州)网络有限公司 合并贴图的获取方法、装置、存储介质、处理器及终端
CN109960887A (zh) * 2019-04-01 2019-07-02 网易(杭州)网络有限公司 基于lod的模型制作方法及装置、存储介质及电子设备
CN111080763A (zh) * 2019-12-26 2020-04-28 珠海金山网络游戏科技有限公司 一种贴图合并方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6392661B1 (en) * 1998-06-17 2002-05-21 Trident Systems, Inc. Method and apparatus for improving situational awareness using multiple map displays employing peripheral range bands
CN103886635A (zh) * 2014-04-18 2014-06-25 重庆市勘测院 基于面聚类的自适应lod模型构建方法
CN104183006A (zh) * 2014-09-05 2014-12-03 国家电网公司 一种基于Web3D模型的动态贴图方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6392661B1 (en) * 1998-06-17 2002-05-21 Trident Systems, Inc. Method and apparatus for improving situational awareness using multiple map displays employing peripheral range bands
CN103886635A (zh) * 2014-04-18 2014-06-25 重庆市勘测院 基于面聚类的自适应lod模型构建方法
CN104183006A (zh) * 2014-09-05 2014-12-03 国家电网公司 一种基于Web3D模型的动态贴图方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104899908A (zh) * 2015-06-12 2015-09-09 百度在线网络技术(北京)有限公司 生成事件组演化图的方法和装置
CN104899908B (zh) * 2015-06-12 2018-09-11 百度在线网络技术(北京)有限公司 生成事件组演化图的方法和装置
CN108537861A (zh) * 2018-04-09 2018-09-14 网易(杭州)网络有限公司 贴图生成方法、装置、设备和存储介质
CN108537861B (zh) * 2018-04-09 2023-04-18 网易(杭州)网络有限公司 贴图生成方法、装置、设备和存储介质
CN109603155A (zh) * 2018-11-29 2019-04-12 网易(杭州)网络有限公司 合并贴图的获取方法、装置、存储介质、处理器及终端
WO2020107920A1 (zh) * 2018-11-29 2020-06-04 网易(杭州)网络有限公司 合并贴图的获取方法、装置、存储介质、处理器及终端
US11325045B2 (en) 2018-11-29 2022-05-10 Netease (Hangzhou) Network Co., Ltd. Method and apparatus for acquiring merged map, storage medium, processor, and terminal
CN109960887A (zh) * 2019-04-01 2019-07-02 网易(杭州)网络有限公司 基于lod的模型制作方法及装置、存储介质及电子设备
CN111080763A (zh) * 2019-12-26 2020-04-28 珠海金山网络游戏科技有限公司 一种贴图合并方法及装置

Also Published As

Publication number Publication date
CN104574275B (zh) 2017-12-12

Similar Documents

Publication Publication Date Title
TWI718375B (zh) 基於區塊鏈的資料處理方法及設備
CN104574275A (zh) 一种在模型绘制过程中合并贴图的方法
CN101630322B (zh) 树形目录结构下的文件集在数据库中的存储和访问方法
CN102541927B (zh) 一种实现数据缓存的方法和装置
CN104915450A (zh) 一种基于HBase的大数据存储与检索方法及***
CN102270225B (zh) 数据变更日志监控方法和数据变更日志监控装置
CN102841780B (zh) 一种创建并调用通用组件的方法及设备
CN111444274B (zh) 数据同步方法、数据同步***及其装置、介质和***
CN106095698B (zh) 面向对象的缓存写入、读取方法及装置
CN103577440A (zh) 一种非关系型数据库中的数据处理方法和装置
US20220092225A1 (en) Floorplan image tiles
CN104423982B (zh) 请求的处理方法和处理设备
CN104408053A (zh) 一种移动终端存储卡扩展方法
US11721052B2 (en) Floorplan image tiles
CN108830787A (zh) 图像变形的方法、装置及电子设备
CN105574808B (zh) 一种流水线纹理贴图单元***
CN102193806B (zh) 更新动画的方法和装置
CN103106260B (zh) 一种面向角色的虚拟文件***的建立方法
CN104572125A (zh) 实体关系图的绘制方法、存储方法、绘制装置及存储装置
US11869112B2 (en) Watermark embedding method and apparatus, terminal, and storage medium
CN103778239A (zh) 一种多数据库数据管理方法及***
CN107844519A (zh) 电子装置、数据库查询脚本生成方法及存储介质
CN106020794A (zh) 一种复杂页面门户页面布局方法
CN104021028A (zh) 虚拟机环境下的web缓存方法及装置
CN105045571A (zh) 一种新型的WebGIS架构

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: 519000 Room 102, 202, 302 and 402, No. 325, Qiandao Ring Road, Tangjiawan Town, high tech Zone, Zhuhai City, Guangdong Province, Room 102 and 202, No. 327 and Room 302, No. 329

Patentee after: Zhuhai Jinshan Digital Network Technology Co.,Ltd.

Patentee after: Guangzhou Xishanju Network Technology Co.,Ltd.

Address before: 519000 Jinshan software building, 8 Lanshan lane, Jida Jingshan Hill Road, Zhuhai, Guangdong

Patentee before: ZHUHAI KINGSOFT ONLINE GAME TECHNOLOGY Co.,Ltd.

Patentee before: GUANGZHOU SEASUN ENTERTAINMENT NETWORK TECHNOLOGY Co.,Ltd.

CP03 Change of name, title or address