一种3D模型的处理方法及终端与流程

文档序号:15274707发布日期:2018-08-28 22:51阅读:284来源:国知局

本申请涉及计算机技术领域,尤其涉及一种3d模型的处理方法及终端。



背景技术:

随着计算机技术的发展,人们不再满足于单一的3d模型,人们更希望拥有个性化的3d模型,并且更想要自己能够根据自己的爱好创作具有特色的3d模型。

目前,3d模型的创建需要专业的3d及渲染基础,然而一般的用户并不具备制作3d模型的基础,因此目前市面上的3d模型都是通过专业人员制作的,且大多数具有美术功底的专业人员制作的3d模型都比较精细和精美,因此该3d模型的制作效率低,且在游戏运行中该3d模型占用的系统资源也较多,同时用户是不能参与制作3d模型的,所以目前3d模型的创建方法无法满足用户自己创作的需求。



技术实现要素:

本申请实施例提供一种3d模型的处理方法及终端,可以通过绘制3d模型子节,实现整个3d模型的绘制,提高了制作效率,减少了游戏运行中整个3d模型占用的系统资源,提高了运行效率。

第一方面,本申请实施例提供了一种3d模型的处理方法,所述3d模型包括一组首尾排列的3d模型子节,该方法包括:

根据目标3d模型子节的n个中轴坐标点和与每个中轴坐标点对应的模型半径确定所述目标3d模型子节的n个3d模型圆环;

分别在所述n个3d模型圆环中确定m个圆环坐标点,从而得到n*m个圆环坐标点;

根据所述n*m个圆环坐标点确定所述目标3d模型子节的多个顶点索引;

获取所述目标3d模型子节的uv纹理坐标组,其中所述uv纹理坐标组中包含n*m个纹理坐标,每个纹理坐标的u值对应所述目标3d模型子节的中轴坐标点编号,v值对应所述目标3d模型子节的圆环坐标点编号;

根据所述目标3d模型子节的所述多个顶点索引和所述uv纹理坐标组,绘制所述目标3d模型子节。

在一种可能的设计中,所述根据所述n*m个圆环坐标点确定所述目标3d模型子节的多个顶点索引包括:

由第x个3d模型圆环上的第m个圆环坐标、第m+1个圆环坐标与第y个3d模型圆环上的第m个或第m+1个圆环坐标组成一个顶点索引,所述x和y为所述目标3d模型子节中相邻的中轴坐标点编号,所述m为圆环坐标点编号。

在一种可能的设计中,所述分别在所述n个3d模型圆环中确定m个圆环坐标点,从而得到n*m个圆环坐标点,包括:

以各个3d模型圆环的第一圆环坐标点为起点每间隔第一目标弧长确定一个圆环坐标点,从而得到各个3d模型圆环中的m个圆环坐标点,其中所述各个3d模型圆环的第一圆环坐标点的连线与所述各个3d模型圆环的中轴坐标点的连线平行。

在一种可能的设计中,所述根据目标3d模型子节的n个中轴坐标点和与每个中轴坐标点对应的模型半径确定所述目标3d模型子节的n个3d模型圆环之前,还包括:

检测到针对所述3d模型首端或尾端的拖动指令,所述拖动指令包括拖动轨迹;

若所述拖动轨迹的长度大于或等于3d模型子节的长度,在所述3d模型首端或尾端增加所述目标3d模型子节,其中所述目标3d模型子节的n个中轴坐标点位于所述拖动轨迹上。

在一种可能的设计中,所述方法,还包括:

获取到针对所述3d模型中的目标3d模型子节的缩放指令,所述缩放指令包括第一缩放比例;

根据所述第一缩放比例,调整所述目标3d模型子节的模型半径;

根据所述3d模型中第一3d模型子节与所述目标3d模型子节之间的子节间隔数量和预设的缩放衰减比例,确定针对所述第一3d模型子节的第二缩放比例;

根据所述第二缩放比例调整所述第一3d模型子节的模型半径。

在一种可能的设计中,所述方法,还包括:

获取针对所述3d模型的视角旋转指令;

根据所述视角旋转指令,旋转所述3d模型的显示视角。

在一种可能的设计中,所述方法,还包括:

获取针对所述3d模型中的第二3d模型子节和第三3d模型子节的子节旋转指令,所述第二3d模型子节与所述第三3d模型子节相邻;

根据所述子节旋转指令,调整所述第二3d模型子节与所述第三3d模型子节之间的相对方向。

第二方面,本申请实施例提供了一种终端,该终端包括:

第一确定单元,用于根据目标3d模型子节的n个中轴坐标点和与每个中轴坐标点对应的模型半径确定所述目标3d模型子节的n个3d模型圆环;

第二确定单元,用于分别在所述n个3d模型圆环中确定m个圆环坐标点,从而得到n*m个圆环坐标点;

第三确定单元,用于根据所述n*m个圆环坐标点确定所述目标3d模型子节的多个顶点索引;

第一获取单元,用于获取所述目标3d模型子节的uv纹理坐标组,其中所述uv纹理坐标组中包含n*m个纹理坐标,每个纹理坐标的u值对应所述目标3d模型子节的中轴坐标点编号,v值对应所述目标3d模型子节的圆环坐标点编号;

绘制单元,用于根据所述目标3d模型子节的所述多个顶点索引和所述uv纹理坐标组,绘制所述目标3d模型子节。

在一种可能的设计中,所述第三确定单元,具体用于:

由第x个3d模型圆环上的第m个圆环坐标、第m+1个圆环坐标与第y个3d模型圆环上的第m个或第m+1个圆环坐标组成一个顶点索引,所述x和y为所述目标3d模型子节中相邻的中轴坐标点编号,所述m为圆环坐标点编号。

在一种可能的设计中,所述第二确定单元,具体用于:

以各个3d模型圆环的第一圆环坐标点为起点每间隔第一目标弧长确定一个圆环坐标点,从而得到各个3d模型圆环中的m个圆环坐标点,其中所述各个3d模型圆环的第一圆环坐标点的连线与所述各个3d模型圆环的中轴坐标点的连线平行。

在一种可能的设计中,所述终端还包括:

检测单元,用于检测到针对所述3d模型首端或尾端的拖动指令,所述拖动指令包括拖动轨迹;

增减单元,用于若所述拖动轨迹的长度大于或等于3d模型子节的长度,在所述3d模型首端或尾端增加所述目标3d模型子节,其中所述目标3d模型子节的n个中轴坐标点位于所述拖动轨迹上。

在一种可能的设计中,所述终端还包括:

第二获取单元,用于获取到针对所述3d模型中的目标3d模型子节的缩放指令,所述缩放指令包括第一缩放比例;

第一调整单元,用于根据所述第一缩放比例,调整所述目标3d模型子节的模型半径;

第四确定单元,用于根据所述3d模型中第一3d模型子节与所述目标3d模型子节之间的子节间隔数量和预设的缩放衰减比例,确定针对所述第一3d模型子节的第二缩放比例;

所述第一调整单元,还用于根据所述第二缩放比例调整所述第一3d模型子节的模型半径。

在一种可能的设计中,所述第二获取单元,还用于获取针对所述3d模型的视角旋转指令;

所述终端还包括旋转单元,用于根据所述视角旋转指令,旋转所述3d模型的显示视角。

在一种可能的设计中,所述第二获取单元,还用于获取针对所述3d模型中的第二3d模型子节和第三3d模型子节的子节旋转指令,所述第二3d模型子节与所述第三3d模型子节相邻;

所述终端还包括第二调整单元,用于根据所述子节旋转指令,调整所述第二3d模型子节与所述第三3d模型子节之间的相对方向。

第三方面,本申请实施例提供了另一种终端,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储支持终端执行上述方法的计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行上述第一方面的方法。

第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面的方法。

第五方面,本申请实施例提供了一种计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行第一方面所描述的3d模型的处理方法。

本申请实施例中的3d模型包括一组首尾排列的3d模型子节,根据目标3d模型子节的n个中轴坐标点和与每个中轴坐标点对应的模型半径确定该目标3d模型子节的n个3d模型圆环,再分别在该n个3d模型圆环中确定m个圆环坐标点,从而得到n*m个圆环坐标点,根据该n*m个圆环坐标点确定该目标3d模型子节的多个顶点索引,获取该目标3d模型子节的uv纹理坐标组,并根据该目标3d模型子节的该多个顶点索引和该uv纹理坐标组,绘制该目标3d模型子节,可以通过绘制3d模型子节,实现整个3d模型的绘制,提高了制作效率,减少了游戏运行中整个3d模型占用的系统资源,提高了运行效率。

附图说明

为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的一种3d模型的处理方法的示意流程图;

图2a是3d模型的示意图;

图2b是3d模型圆环的示意图;

图2c是是目标3d模型子节顶点索引的示意图;

图3是本申请实施例提供的另一种3d模型的处理方法的示意流程图;

图4a是目标3d模型子节上缩小操作的示意图;

图4b是目标3d模型子节上放大操作的示意图;

图4c是3d模型的一种旋转视角的示意图;

图4d是3d模型的另一种旋转视角的示意图;

图4e是3d模型的子节旋转示意图;

图5是本申请实施例提供的一种终端的示意性框图;

图6是本申请实施例提供的另一种终端示意性框图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置展示该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

应当理解,本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”以及“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

具体实现中,本申请实施例中描述的终端包括但不限于诸如具有触摸敏感表面(例如,触摸屏显示器和/或触摸板)的移动电话、膝上型计算机或平板计算机之类的其它便携式设备。还应当理解的是,在某些实施例中,所述设备并非便携式通信设备,而是具有触摸敏感表面(例如,触摸屏显示器和/或触摸板)的台式计算机。

在接下来的讨论中,描述了包括显示器和触摸敏感表面的终端。然而,应当理解的是,终端可以包括诸如物理键盘、鼠标和/或控制杆的一个或多个其它物理用户接口设备。

终端支持各种应用程序,例如以下中的一个或多个:绘图应用程序、演示应用程序、文字处理应用程序、网站创建应用程序、盘刻录应用程序、电子表格应用程序、游戏应用程序、电话应用程序、视频会议应用程序、电子邮件应用程序、即时消息收发应用程序、锻炼支持应用程序、照片管理应用程序、数码相机应用程序、数字摄影机应用程序、web浏览应用程序、数字音乐播放器应用程序和/或数字视频播放器应用程序。

可以在终端上执行的各种应用程序可以使用诸如触摸敏感表面的至少一个公共物理用户接口设备。可以在应用程序之间和/或相应应用程序内调整和/或改变触摸敏感表面的一个或多个功能以及终端上显示的相应信息。这样,终端的公共物理架构(例如,触摸敏感表面)可以支持具有对用户而言直观且透明的用户界面的各种应用程序。

本申请实施例中的3d模型包括但不限于一组首尾排列的3d模型子节,该组3d模型子节可以是按该3d模型子节的编号大小首尾排列的,比如,编号为1的3d模型子节排在3d模型的首部,编号为2的3d模型子节排在编号为1的3d模型子节后,以此类推,编号最大的3d模型子节排在该3d模型的尾部。其中,本申请实施例所提及的目标3d模型子节的每个中轴坐标点对应的模型半径可以相同,比如该目标3d模型子节的每个中轴坐标点对应的模型半径都为1厘米;或者该目标3d模型子节的每个中轴坐标点对应的模型半径可以不相同,比如该每个中轴坐标点对应的模型半径为按照预设规则计算得到的,假设该预设规则为该目标3d模型子节的n个模型半径成等比数列,公比q=2,第一个模型半径为1mm(毫米),则第二个模型半径为1×22-1=2mm,第三个模型半径为1×23-1=4mm,以此类推,第n个模型半径为1×2n-1mm。本申请实施例接下来的介绍中均以目标3d模型子节的每个中轴坐标点对应的模型半径相同为例,模型半径不相同的情况与模型半径相同的处理方式相同。

下面将结合附图1-附图6,对本申请实施例提供的3d模型的处理方法及终端进行详细介绍。

参见图1,是本申请实施例提供一种3d模型的处理方法的示意流程图,如图所示,该3d模型的处理方法可包括:

s101,终端根据目标3d模型子节的n个中轴坐标点和与每个中轴坐标点对应的模型半径确定所述目标3d模型子节的n个3d模型圆环。

在本申请实施例中,终端可以获取目标3d模型子节的n个中轴坐标点和每个中轴坐标点对应的模型半径,并可以根据该n个中轴坐标点和该模型半径确定该目标3d模型子节的n个3d模型圆环,该n个中轴坐标点分别为该n个3d模型圆环的圆心,该n个中轴坐标点的连线可以为一条直线,该n可以为大于1的自然数,一个中轴坐标点和其对应的一个模型半径可以确定一个3d模型圆环。其中,该n个中轴坐标点可以为终端内预设的圆心坐标点,或者可以为按照预设规则生成的圆心坐标点,比如,预设规则为该n个中轴坐标点的y轴坐标呈等差数列,公差d=0.5(厘米),第一个中轴坐标点可以为(0,0,0),则第二个中轴坐标点为(1,0.5,0),以此类推,第n个中轴坐标点为(0,0.5*n,0)。该每个中轴坐标点对应的模型半径可以相同,比如n个模型半径都为1厘米,该每个中轴坐标点对应的模型半径也可以不相同。本申请实施例以每个中轴坐标点对应的模型半径相同为例。

可选的,终端在根据目标3d模型子节的n个中轴坐标点和与每个中轴坐标点对应的模型半径确定该目标3d模型子节的n个3d模型圆环之前,该终端还可以检测用户针对该3d模型首端或尾端的拖动指令,该拖动指令可以包括拖动轨迹,若检测到针对该3d模型首端或尾端的拖动指令,检测该拖动指令中该拖动轨迹的长度是否大于或等于3d模型子节的长度,若是,该终端可以在该3d模型首端或尾端增加该目标3d模型子节,其中,该3d模型中每个3d模型子节的长度可以相等,该目标3d模型子节的n个中轴坐标点位于该拖动轨迹上。如图2a所示,是3d模型的示意图,箭头所指示的方向表示离该箭头距离最近的3d模型子节的方向,其中,该箭头为示意性的,实际实现中该箭头是否存在、形状、大小等都可根据具体需求设定,若图2a所示3d模型的左边为该3d模型的首端,右边为该3d模型的尾端,用户可以拖动该3d模型尾端的箭头,若检测到该用户拖动该箭头产生的拖动轨迹的长度大于或等于一个3d模型子节的长度,比如3d模型子节长度为1.5厘米(cm),用户的拖动轨迹为2cm,2cm大于1.5cm,终端可以在该3d模型尾端增加一个目标3d模型子节,该目标3d模型子节的n个中轴坐标点位于用户拖动操作产生的拖动轨迹上。

进一步可选的,终端还可以检测用户针对该3d模型首端或尾端的拖动操作产生的拖动指令,该拖动指令可以包括拖动轨迹和拖动方向,若拖动方向为第一方向,且该拖动轨迹的长度大于或等于3d模型子节的长度,该终端可以在该3d模型首端或尾端增加该目标3d模型子节,其中,该3d模型中每个3d模型子节的长度可以相等,该目标3d模型子节的n个中轴坐标点位于该拖动轨迹上;若拖动方向为第二方向,且该拖动轨迹的长度大于或等于3d模型子节的长度,该终端可以在该3d模型首端或尾端减少该目标3d模型子节;该第一方向与该第二方向不相同,从而用户可以按照自己的爱好增加或减少一个目标3d模型子节,可以满足用户参与制作3d模型的需求。

s102,终端分别在所述n个3d模型圆环中确定m个圆环坐标点,从而得到n*m个圆环坐标点。

在本申请实施例中,根据终端的预设条件,该终端可以分别在上述n个3d模型圆环中确定m个圆环坐标点,从而得到n*m个圆环坐标点。其中,一个3d模型圆环对应m个圆环坐标点,该n可以为大于1的自然数,该m可以为大于或等于1的自然数。例如,n=5,该预设条件为预设弧度,假设该预设弧度为45度,一个完整的3d模型圆环360度,终端可以分别在上述n个3d模型圆环中确定8个圆环坐标点,从而得到n×m=5×8=40个圆环坐标点;或者该预设条件可以为预设弧长,假设该预设弧长为π(圆周率),若该n个3d模型圆环的每个3d模型圆环的模型半径均为2厘米,则每个3d模型圆环的周长为2π×r(半径)=2π×2=4π厘米,则终端可以分别在该n个3d模型圆环中确定4个点,从而得到n×m=5×4=20个圆环坐标点。

可选的,该终端可以以各个3d模型圆环的第一圆环坐标点为起点每间隔第一目标弧长确定一个圆环坐标点,该第一目标弧长可以为预设长度的弧长,例如2厘米,从而得到各个3d模型圆环中的m个圆环坐标点,n个3d模型圆环可得到n*m个圆环坐标点,其中m的值可以为该各个3d模型圆环的周长除以该第一目标弧长得到的商后,对该商值取整,比如,各个3d模型圆环的周长为4π,第一目标弧长为π,则m=[4π/π]=[4]=4;又如各个3d模型圆环的周长为5π,第一目标弧长为2π,则m=[5π/2π]=[2.5]=2。如图2b所示,是3d模型圆环的示意图,该3d模型圆环的模型半径r=1cm,第一目标弧长为π/2cm,第一圆环坐标点的位置如图2b所示,该终端以该3d模型圆环的第一圆环坐标点为起点每间隔π/2cm确定一个圆环坐标点,如图2b所示的第二圆环坐标点,以此类推,可得到该3d模型圆环的4个圆环坐标点,即m=4。

其中,该各个3d模型圆环的第一圆环坐标点的连线与该各个3d模型圆环的中轴坐标点的连线平行。若该各个3d模型圆环的中轴坐标点的连线为直线,该各个3d模型圆环的第一圆环坐标点的连线与该直线平行;若该各个3d模型圆环的中轴坐标点的连线为曲线,该各个3d模型圆环的第一圆环坐标点的连线可以与该曲线平行。平行线可以分成直线平行线和曲线平行线。在直线平行中,两条距离保持不变的直线是相互平行的,在曲线的平行中,距离保持不变的两条曲线且一条曲线上任意一点的法线也是另一条曲线的法线,那么这两条曲线可以称为平行。

s103,终端根据所述n*m个圆环坐标点确定所述目标3d模型子节的多个顶点索引。

在本申请实施例中,终端可以根据上述n*m个圆环坐标点确定上述目标3d模型子节的多个顶点索引,比如该终端可以选取第一3d模型圆环上相邻的两个圆环坐标点和第二3d模型圆环上的一个圆环坐标点,根据这3个圆环坐标点生成一个顶点索引,该第一3d模型圆环与该第二3d模型圆环相邻,该顶点索引被该终端用于绘制三角面。

可选的,终端可以将第x个3d模型圆环上的第m个圆环坐标、第m+1个圆环坐标与第y个3d模型圆环上的第m个或第m+1个圆环坐标组成一个顶点索引,n*m个圆环坐标点可以确定多个顶点索引,该多个顶点索引可以以成对的形式出现。例如,假设n为中轴坐标点编号,m为圆环坐标点编号,xn,m表示第n个3d模型圆环上的第m个圆环坐标点,则(xn,m,xn,m+1,xn+1,m)可以组成一个顶点索引,(xn+1,m,xn+1,m+1,xn,m+1)可以组成另一个顶点索引,该(xn,m,xn,m+1,xn+1,m)和(xn+1,m,xn+1,m+1,xn,m+1)可以称为一对顶点索引。其中,该x和y为该目标3d模型子节中相邻的中轴坐标点编号,该m为圆环坐标点编号。如图2c所示,是目标3d模型子节顶点索引的示意图,假设x=1,y=2,第一个3d模型圆环上的圆环坐标点编号为a,b,c,d,第二个3d模型圆环上的圆环坐标点编号为1,2,3,4;终端可以将第一个3d模型圆环上的编号为a,b的两个圆环坐标与第二个3d模型圆环上的编号为1的圆环坐标组成一个顶点索引(a,b,1),终端可以将第二个3d模型圆环上的编号为1,2的两个圆环坐标与第一个3d模型圆环上的编号为b的圆环坐标组成另一个顶点索引(1,2,b);终端可以将第一个3d模型圆环上的编号为b,c的两个圆环坐标与第二个3d模型圆环上的编号为2的圆环坐标组成一个顶点索引(b,c,2);终端可以将第二个3d模型圆环上的编号为2,3的两个圆环坐标与第一个3d模型圆环上的编号为c的圆环坐标组成另一个顶点索引(2,3,c);终端可以将第一个3d模型圆环上的编号为c,d的两个圆环坐标与第二个3d模型圆环上的编号为3的圆环坐标组成一个顶点索引(c,d,3),终端可以将第二个3d模型圆环上的编号为3,4的两个圆环坐标与第一个3d模型圆环上的编号为d的圆环坐标组成另一个顶点索引(3,4,d);终端可以将第一个3d模型圆环上的编号为d,a的两个圆环坐标与第二个3d模型圆环上的编号为4的圆环坐标组成一个顶点索引(d,a,4),终端可以将第二个3d模型圆环上的编号为4,1的两个圆环坐标与第一个3d模型圆环上的编号为a的圆环坐标组成另一个顶点索引(4,1,a);共8个或4对顶点索引。其中,该顶点索引被该终端用于绘制三角面。

s104,终端获取所述目标3d模型子节的uv纹理坐标组,其中所述uv纹理坐标组中包含n*m个纹理坐标,每个纹理坐标的u值对应所述目标3d模型子节的中轴坐标点编号,v值对应所述目标3d模型子节的圆环坐标点编号。

在本申请实施例中,一个中轴坐标点对应一个3d模型圆环,一个3d模型圆环有m个圆环坐标点,因此一个中轴坐标点对应有m个圆环坐标点。终端可以赋予每个中轴坐标点一个u值,每个圆环坐标点一个v值,从而得到上述目标3d模型子节的uv纹理坐标组,该uv纹理坐标组中包含n*m个纹理坐标。例如,n=5,m=10,若中轴坐标点编号为1,对应的u值为0,圆环坐标点编号为1,对应的v值也为0,即uv纹理坐标为(0,0);若中轴坐标点编号为1,对应的u值为0,圆环坐标点编号为2,对应的v值为1/m=1/10=0.1,即uv纹理坐标为(0,0.1);若中轴坐标点编号为2,对应的u值为1/n=1/5=0.2,圆环坐标点编号为2,对应的v值为1/m=1/10=0.1,即uv纹理坐标为(0.2,0.1)。其中,每个纹理坐标的u值对应该目标3d模型子节的中轴坐标点编号,v值对应该目标3d模型子节的圆环坐标点编号。

需要说明的是,uv纹理坐标是三维模型的一个重要坐标系统,u和v分别表示图片在显示器水平、垂直方向上的的坐标,u和v的取值一般为0~1。

s105,终端根据所述目标3d模型子节的所述多个顶点索引和所述uv纹理坐标组,绘制所述目标3d模型子节。

在本申请实施例中,终端可以根据上述目标3d模型子节的上述多个顶点索引和上述uv纹理坐标组,利用开放图形库(opengraphicslibrary,简称opengl)中的库函数,例如gl_triangle_strip函数,绘制该目标3d模型子节,若该3d模型包括多个该目标3d模型子节,在制作3d模型时可以每次绘制一个目标3d模型子节,通过迭代的方法,重复绘制多个目标3d模型子节,从而实现整个3d模型的绘制,提高制作效率,同时利用该方法绘制的3d模型在游戏运行中可以减少整个3d模型占用的系统资源,提高运行效率。其中,该顶点索引被gl_triangle_strip函数用于确定三角面的顶点连接顺序,该uv纹理坐标组用于对gl_triangle_strip函数确定的三角面进行贴图处理,以使绘制的该目标3d模型子节能够在显示器上显示。

本申请实施例的3d模型包括一组首尾排列的3d模型子节,根据目标3d模型子节的n个中轴坐标点和与每个中轴坐标点对应的模型半径确定该目标3d模型子节的n个3d模型圆环,再分别在该n个3d模型圆环中确定m个圆环坐标点,从而得到n*m个圆环坐标点,根据该n*m个圆环坐标点确定该目标3d模型子节的多个顶点索引,获取该目标3d模型子节的uv纹理坐标组,并根据该目标3d模型子节的该多个顶点索引和该uv纹理坐标组,绘制该目标3d模型子节,可以通过绘制3d模型子节,实现整个3d模型的绘制,提高了制作效率,减少了游戏运行中整个3d模型占用的系统资源,提高了运行效率。

参见图3,是本申请实施例提供的另一种3d模型的处理方法的示意流程图,如图所示,该3d模型的处理方法可包括:

s301,终端根据目标3d模型子节的n个中轴坐标点和与每个中轴坐标点对应的模型半径确定所述目标3d模型子节的n个3d模型圆环。

s302,终端分别在所述n个3d模型圆环中确定m个圆环坐标点,从而得到n*m个圆环坐标点。

s303,终端根据所述n*m个圆环坐标点确定所述目标3d模型子节的多个顶点索引。

s304,终端获取所述目标3d模型子节的uv纹理坐标组,其中所述uv纹理坐标组中包含n*m个纹理坐标,每个纹理坐标的u值对应所述目标3d模型子节的中轴坐标点编号,v值对应所述目标3d模型子节的圆环坐标点编号。

s305,终端根据所述目标3d模型子节的所述多个顶点索引和所述uv纹理坐标组,绘制所述目标3d模型子节。

本申请实施例步骤s301-步骤s305请参照图1的实施例步骤s101-步骤s105,在此不再赘述。

s306,终端获取到针对所述3d模型中的目标3d模型子节的缩放指令,所述缩放指令包括第一缩放比例。

s307,终端根据所述第一缩放比例,调整所述目标3d模型子节的模型半径。

s308,终端根据所述3d模型中第一3d模型子节与所述目标3d模型子节之间的子节间隔数量和预设的缩放衰减比例,确定针对所述第一3d模型子节的第二缩放比例。

s309,终端根据所述第二缩放比例调整所述第一3d模型子节的模型半径。

在本申请实施例中,终端可以获取到用户针对上述3d模型中的目标3d模型子节上的缩小操作产生的缩小指令,该缩小操作可以为用户在目标3d模型子节上相向的滑动操作,如图4a所示,是目标3d模型子节上缩小操作的示意图,a点和b点可以表示用户一只手的两个不同手指,也可以表示用户两只手的不同手指,a、b点上箭头所示方向可以表示用户的滑动方向。该缩小指令可以包括第一缩小比例,该终端可以根据该第一缩小比例,调整该目标3d模型子节的模型半径,并且该终端还可以获取该3d模型中第一3d模型子节与该目标3d模型子节之间的子节间隔数量,根据该子节间隔数量和预设的缩放衰减比例,确定针对该第一3d模型子节的第二缩小比例,若该第二缩小比例小于1,根据该第二缩小比例调整该第一3d模型子节的模型半径;若该第二缩小比例大于或等于1,该第一3d模型子节的模型半径保持不变,即不做任何调整。例如,第一缩小比例a1=0.5,该终端可以将目标3d模型子节的模型半径缩小至该模型半径的0.5倍,若子节间隔数量n=1,缩放衰减比例q=0.7,第二缩小比例可以由公式(1)求得:

第二缩小比例s1=5/7<1,终端可以将第一3d模型子节的模型半径缩小至该模型半径的5/7倍;若子节间隔数量n=2,缩放衰减比例q=0.7,第二缩小比例:

第二缩小比例s2=50/49>1,该第一3d模型子节的模型半径保持不变。

终端可以获取到用户针对上述3d模型中的目标3d模型子节上的放大操作产生的放大指令,该放大操作可以为用户在目标3d模型子节上背向相离的滑动操作,如图4b所示,是目标3d模型子节上放大操作的示意图,a点和b点可以表示用户一只手的两个不同手指,也可以表示用户两只手的不同手指,a、b点上箭头所示方向为用户的滑动方向。该放大指令可以包括第一放大比例,该终端可以根据该第一放大比例,调整该目标3d模型子节的模型半径,并且该终端还可以获取该3d模型中第一3d模型子节与该目标3d模型子节之间的子节间隔数量,根据该子节间隔数量和预设的缩放衰减比例,确定针对该第一3d模型子节的第二放大比例,若该第二放大比例大于1,根据该第二放大比例调整该第一3d模型子节的模型半径;若该第二放大比例小于或等于1,该第一3d模型子节的模型半径保持不变,即不做任何调整。例如,第一放大比例a1=2,该终端可以将目标3d模型子节的模型半径放大至该模型半径的2倍,若子节间隔数量n=1,缩放衰减比例q=0.7,第二放大比例可以由公式(2)求得:

f1=a1×qn=2×0.71=1.4(2)

第二放大比例f1=1.4>1,终端可以将第一3d模型子节的模型半径放大至该模型半径的1.4倍;若子节间隔数量n=2,缩放衰减比例q=0.7,第二放大比例:

f2=a1×qn=2×0.72=0.98

第二放大比例f2=0.98<1,该第一3d模型子节的模型半径保持不变。

s310,终端获取针对所述3d模型的视角旋转指令。

s311,终端根据所述视角旋转指令,旋转所述3d模型的显示视角。

在本申请实施例中,用户可以在终端屏幕的空白区域选中该3d模型,终端可以获取用户针对该3d模型的视角旋转指令,该视角旋转指令可以包括视角角度,并可以根据该视角旋转指令,旋转该3d模型的视角至该视角角度所指示的位置。比如,如图4c所示,是3d模型的一种旋转视角的示意图,如图4c所示虚线框用于表示用户的选中框,a点和b点用于表示用户的输入,a点不动用于表示用户的一个手指接触终端屏幕的空白区域不滑动,b点向右移动用于表示用户的另一个手指在终端屏幕的空白区域向右滑动,a点不动b点向右移动可以产生视角旋转指令,该视角旋转指令可以包括视角角度,终端可根据该视角旋转指令,将该3d模型的显示视角绕z轴顺时针旋转至该视角角度所指示的位置,若a点向左移动,b点不动,终端可将该3d模型的显示视角绕z轴旋转逆时针至该视角角度所指示的位置;如图4d所示,是3d模型的另一种旋转视角的示意图,如图4d所示虚线框用于表示用户的选中框,a点和b点用于表示用户的输入,a点不动用于表示用户的一个手指接触终端屏幕的空白区域不滑动,b点向上移动用于表示用户的另一个手指向上滑动,a点不动b点向上移动产生的指令可为视角旋转指令,该视角旋转指令可以包括视角角度,终端可根据该视角旋转指令,将该3d模型的显示视角绕y轴逆时针旋转至该视角角度所指示的位置,若a点向下移动,b点不动,终端可将该3d模型的显示视角绕y轴顺时针旋转至该视角角度所指示的位置。

可选的,用户在终端屏幕的空白区域选中该3d模型后,终端可以在该终端屏幕上显示视角旋转界面,该视角旋转界面可以包括多个按钮,比如上、下、左、右四个按钮,终端可以检测用户点击该视角旋转界面上的按钮产生的视角旋转指令,该视角旋转指令可以包括视角角度,并可以根据该视角旋转指令,旋转该3d模型的显示视角至该视角角度所指示的位置。比如,该视角旋转界面的上、下两个按钮可以用于表示该3d模型的显示视角绕y轴旋转,左、右两个按钮可以用于表示该3d模型的显示视角绕z轴旋转至视角角度所指示的位置。

s312,终端获取针对所述3d模型中的第二3d模型子节和第三3d模型子节的子节旋转指令,所述第二3d模型子节与所述第三3d模型子节相邻。

s313,终端根据所述子节旋转指令,调整所述第二3d模型子节与所述第三3d模型子节之间的相对方向。

在本申请实施例中,终端可以获取用户针对3d模型中的第二3d模型子节和第三3d模型子节的子节旋转指令,该第二3d模型子节和第三3d模型子节相邻,该子节旋转指令可以包括旋转角度,终端可以根据该子节旋转指令,调整该第二3d模型子节与该第三3d模型子节之间的相对方向至该旋转角度所指示的位置。如图4e所示,是3d模型的子节旋转示意图,a点和b点用于表示用户的输入,a点用于表示用户的一个手指选中该3d模型的第二3d模型子节,b点用于表示用户的另一个手指选中第三3d模型子节,a点不动用于表示用户的一个手指选中该第二3d模型子节不滑动,b点向上移动用于表示用户的另一个手指向上滑动该第三3d模型子节,终端获取滑动该第三3d模型子节的距离,获取该距离对应的旋转角度,如1cm对应30度,终端可以获取该终端屏幕上产生的子节旋转指令,该子节旋转指令包括旋转角度,终端可以根据该子节旋转指令,将该第三3d模型子节相对于该第二3d模型子节旋转至该旋转角度所指示的位置。

本申请实施例的3d模型包括一组首尾排列的3d模型子节,根据目标3d模型子节的n个中轴坐标点和与每个中轴坐标点对应的模型半径确定该目标3d模型子节的n个3d模型圆环,再分别在该n个3d模型圆环中确定m个圆环坐标点,从而得到n*m个圆环坐标点,根据该n*m个圆环坐标点确定该目标3d模型子节的多个顶点索引,获取该目标3d模型子节的uv纹理坐标组,并根据该目标3d模型子节的该多个顶点索引和该uv纹理坐标组,绘制该目标3d模型子节,终端可以分别获取该目标3d模型子节上的缩放指令、视角旋转指令以及子节旋转指令,根据不同的指令对该目标3d模型子节或该3d模型进行不同的处理,从而使得用户可以对3d模型进行更改,得到具有特色的3d模型,同时可以通过绘制3d模型子节,实现整个3d模型的绘制,提高了制作效率,减少了游戏运行中整个3d模型占用的系统资源,提高了运行效率。

本申请实施例提供一种终端,该终端用于执行前述任一项所述的方法的单元。具体地,参见图5,是本申请实施例提供的一种终端的示意性框图。本实施例的终端包括:

第一确定单元102,用于根据目标3d模型子节的n个中轴坐标点和与每个中轴坐标点对应的模型半径确定所述目标3d模型子节的n个3d模型圆环。

具体地,终端可以获取目标3d模型子节的n个中轴坐标点和每个中轴坐标点对应的模型半径,第一确定单元102可以根据该n个中轴坐标点和该模型半径确定该目标3d模型子节的n个3d模型圆环,该n个中轴坐标点分别为该n个3d模型圆环的圆心,该n个中轴坐标点的连线可以为一条直线,该n可以为大于1的自然数,一个中轴坐标点和其对应的一个模型半径可以确定一个3d模型圆环。其中,该n个中轴坐标点可以为终端内预设的圆心坐标点,或者可以为按照预设规则生成的圆心坐标点,比如,预设规则为该n个中轴坐标点的y轴坐标呈等差数列,公差d=0.5(厘米),第一个中轴坐标点可以为(0,0,0),则第二个中轴坐标点为(1,0.5,0),以此类推,第n个中轴坐标点为(0,0.5*n,0);该每个中轴坐标点对应的模型半径可以相同,比如n个模型半径都为1厘米,该每个中轴坐标点对应的模型半径也可以不相同。本申请实施例以每个中轴坐标点对应的模型半径相同为例。

可选的,该终端还包括检测单元100和增减单元101。

该检测单元100,用于检测到针对所述3d模型首端或尾端的拖动指令,所述拖动指令包括拖动轨迹。

该增减单元101,用于若所述拖动轨迹的长度大于或等于3d模型子节的长度,在所述3d模型首端或尾端增加所述目标3d模型子节,其中所述目标3d模型子节的n个中轴坐标点位于所述拖动轨迹上。

具体可选的,终端在根据目标3d模型子节的n个中轴坐标点和与每个中轴坐标点对应的模型半径确定该目标3d模型子节的n个3d模型圆环之前,该终端的检测单元100还可以检测用户针对该3d模型首端或尾端的拖动指令,该拖动指令可以包括拖动轨迹,若检测到针对该3d模型首端或尾端的拖动指令,检测该拖动指令中该拖动轨迹的长度是否大于或等于3d模型子节的长度,若是,该终端的增减单元101可以在该3d模型首端或尾端增加该目标3d模型子节,其中,该3d模型中每个3d模型子节的长度可以相等,该目标3d模型子节的n个中轴坐标点位于该拖动轨迹上。如图2a所示,是3d模型的示意图,箭头所指示的方向表示离该箭头距离最近的3d模型子节的方向,其中,该箭头为示意性的,实际实现中该箭头是否存在、形状、大小等都可根据具体需求设定,若图2a所示3d模型的左边为该3d模型的首端,右边为该3d模型的尾端,用户可以拖动该3d模型尾端的箭头,若检测到该用户拖动该箭头产生的拖动轨迹的长度大于或等于一个3d模型子节的长度,比如3d模型子节长度为1.5厘米(cm),用户的拖动轨迹为2cm,2cm大于1.5cm,终端可以在该3d模型尾端增加一个目标3d模型子节,该目标3d模型子节的n个中轴坐标点位于用户拖动操作产生的拖动轨迹上。

进一步可选的,终端的检测单元100还可以检测用户针对该3d模型首端或尾端的拖动操作产生的拖动指令,该拖动指令可以包括拖动轨迹和拖动方向,若拖动方向为第一方向,且该拖动轨迹的长度大于或等于3d模型子节的长度,该终端的增减单元101可以在该3d模型首端或尾端增加该目标3d模型子节,其中,该3d模型中每个3d模型子节的长度可以相等,该目标3d模型子节的n个中轴坐标点位于该拖动轨迹上;若拖动方向为第二方向,且该拖动轨迹的长度大于或等于3d模型子节的长度,该终端的增减单元102可以在该3d模型首端或尾端减少该目标3d模型子节;该第一方向与该第二方向不相同,从而用户可以按照自己的爱好增加或减少一个目标3d模型子节,可以满足用户参与制作3d模型的需求。

第二确定单元103,用于分别在所述n个3d模型圆环中确定m个圆环坐标点,从而得到n*m个圆环坐标点。

具体地,根据终端的预设条件,该终端的第二确定单元103可以分别在上述n个3d模型圆环中确定m个圆环坐标点,从而得到n*m个圆环坐标点。其中,一个3d模型圆环对应m个圆环坐标点,该n可以为大于1的自然数,该m可以为大于或等于1的自然数。例如,n=5,该预设条件为预设弧度,假设该预设弧度为45度,一个完整的3d模型圆环360度,终端可以分别在上述n个3d模型圆环中确定8个圆环坐标点,从而得到n×m=5×8=40个圆环坐标点;或者该预设条件可以为预设弧长,假设该预设弧长为π(圆周率),若该n个3d模型圆环的每个3d模型圆环的模型半径均为2厘米,则每个3d模型圆环的周长为2π×r(半径)=2π×2=4π厘米,则终端可以分别在该n个3d模型圆环中确定4个点,从而得到n×m=5×4=20个圆环坐标点。

可选的,该第二确定单元103具体用于:

以各个3d模型圆环的第一圆环坐标点为起点每间隔第一目标弧长确定一个圆环坐标点,从而得到各个3d模型圆环中的m个圆环坐标点,其中所述各个3d模型圆环的第一圆环坐标点的连线与所述各个3d模型圆环的中轴坐标点的连线平行。

具体可选的,该终端的第二确定单元103可以以各个3d模型圆环的第一圆环坐标点为起点每间隔第一目标弧长确定一个圆环坐标点,该第一目标弧长可以为预设长度的弧长,例如2厘米,从而得到各个3d模型圆环中的m个圆环坐标点,n个3d模型圆环可得到n*m个圆环坐标点,其中m的值可以为该各个3d模型圆环的周长除以该第一目标弧长得到的商后,对该商值取整,比如,各个3d模型圆环的周长为4π,第一目标弧长为π,则m=[4π/π]=[4]=4;又如各个3d模型圆环的周长为5π,第一目标弧长为2π,则m=[5π/2π]=[2.5]=2。如图2b所示,是3d模型圆环的示意图,该3d模型圆环的模型半径r=1cm,第一目标弧长为π/2cm,第一圆环坐标点的位置如图2b所示,该终端以该3d模型圆环的第一圆环坐标点为起点每间隔π/2cm确定一个圆环坐标点,如图2b所示的第二圆环坐标点,以此类推,可得到该3d模型圆环的4个圆环坐标点,即m=4。

其中,该各个3d模型圆环的第一圆环坐标点的连线与该各个3d模型圆环的中轴坐标点的连线平行。若该各个3d模型圆环的中轴坐标点的连线为直线,该各个3d模型圆环的第一圆环坐标点的连线与该直线平行;若该各个3d模型圆环的中轴坐标点的连线为曲线,该各个3d模型圆环的第一圆环坐标点的连线可以与该曲线平行。平行线可以分成直线平行线和曲线平行线。在直线平行中,两条距离保持不变的直线是相互平行的,在曲线的平行中,距离保持不变的两条曲线且一条曲线上任意一点的法线也是另一条曲线的法线,那么这两条曲线可以称为平行。

第三确定单元104,用于根据所述n*m个圆环坐标点确定所述目标3d模型子节的多个顶点索引。

具体地,终端的第三确定单元104可以根据上述n*m个圆环坐标点确定上述目标3d模型子节的多个顶点索引,比如该终端可以选取第一3d模型圆环上相邻的两个圆环坐标点和第二3d模型圆环上的一个圆环坐标点,根据这3个圆环坐标点生成一个顶点索引,该第一3d模型圆环与该第二3d模型圆环相邻,该顶点索引被该终端用于绘制三角面。

可选的,该第三确定单元104,具体用于由第x个3d模型圆环上的第m个圆环坐标、第m+1个圆环坐标与第y个3d模型圆环上的第m个或第m+1个圆环坐标组成一个顶点索引,所述x和y为所述目标3d模型子节中相邻的中轴坐标点编号,所述m为圆环坐标点编号。

具体可选的,终端的第三确定单元104可以将第x个3d模型圆环上的第m个圆环坐标、第m+1个圆环坐标与第y个3d模型圆环上的第m个或第m+1个圆环坐标组成一个顶点索引,n*m个圆环坐标点可以确定多个顶点索引,该多个顶点索引可以以成对的形式出现。例如,假设n为中轴坐标点编号,m为圆环坐标点编号,xn,m表示第n个3d模型圆环上的第m个圆环坐标点,则(xn,m,xn,m+1,xn+1,m)可以组成一个顶点索引,(xn+1,m,xn+1,m+1,xn,m+1)可以组成另一个顶点索引,该(xn,m,xn,m+1,xn+1,m)和(xn+1,m,xn+1,m+1,xn,m+1)可以称为一对顶点索引。其中,该x和y为该目标3d模型子节中相邻的中轴坐标点编号,该m为圆环坐标点编号。如图2c所示,是目标3d模型子节顶点索引的示意图,假设x=1,y=2,第一个3d模型圆环上的圆环坐标点编号为a,b,c,d,第二个3d模型圆环上的圆环坐标点编号为1,2,3,4;终端可以将第一个3d模型圆环上的编号为a,b的两个圆环坐标与第二个3d模型圆环上的编号为1的圆环坐标组成一个顶点索引(a,b,1),终端可以将第二个3d模型圆环上的编号为1,2的两个圆环坐标与第一个3d模型圆环上的编号为b的圆环坐标组成另一个顶点索引(1,2,b);终端可以将第一个3d模型圆环上的编号为b,c的两个圆环坐标与第二个3d模型圆环上的编号为2的圆环坐标组成一个顶点索引(b,c,2);终端可以将第二个3d模型圆环上的编号为2,3的两个圆环坐标与第一个3d模型圆环上的编号为c的圆环坐标组成另一个顶点索引(2,3,c);终端可以将第一个3d模型圆环上的编号为c,d的两个圆环坐标与第二个3d模型圆环上的编号为3的圆环坐标组成一个顶点索引(c,d,3),终端可以将第二个3d模型圆环上的编号为3,4的两个圆环坐标与第一个3d模型圆环上的编号为d的圆环坐标组成另一个顶点索引(3,4,d);终端可以将第一个3d模型圆环上的编号为d,a的两个圆环坐标与第二个3d模型圆环上的编号为4的圆环坐标组成一个顶点索引(d,a,4),终端可以将第二个3d模型圆环上的编号为4,1的两个圆环坐标与第一个3d模型圆环上的编号为a的圆环坐标组成另一个顶点索引(4,1,a);共8个或4对顶点索引。其中,该顶点索引被该终端用于绘制三角面。

第一获取单元105,用于获取所述目标3d模型子节的uv纹理坐标组,其中所述uv纹理坐标组中包含n*m个纹理坐标,每个纹理坐标的u值对应所述目标3d模型子节的中轴坐标点编号,v值对应所述目标3d模型子节的圆环坐标点编号。

具体地,一个中轴坐标点对应一个3d模型圆环,一个3d模型圆环有m个圆环坐标点,因此一个中轴坐标点对应有m个圆环坐标点。终端可以赋予每个中轴坐标点一个u值,每个圆环坐标点一个v值,从而得到上述目标3d模型子节的uv纹理坐标组,该uv纹理坐标组中包含n*m个纹理坐标。例如,n=5,m=10,若中轴坐标点编号为1,对应的u值为0,圆环坐标点编号为1,对应的v值也为0,即uv纹理坐标为(0,0);若中轴坐标点编号为1,对应的u值为0,圆环坐标点编号为2,对应的v值为1/m=1/10=0.1,即uv纹理坐标为(0,0.1);若中轴坐标点编号为2,对应的u值为1/n=1/5=0.2,圆环坐标点编号为2,对应的v值为1/m=1/10=0.1,即uv纹理坐标为(0.2,0.1)。其中,每个纹理坐标的u值对应该目标3d模型子节的中轴坐标点编号,v值对应该目标3d模型子节的圆环坐标点编号。

需要说明的是,uv纹理坐标是三维模型的一个重要坐标系统,u和v分别表示图片在显示器水平、垂直方向上的的坐标,u和v的取值一般为0~1。

绘制单元106,用于根据所述目标3d模型子节的所述多个顶点索引和所述uv纹理坐标组,绘制所述目标3d模型子节。

具体地,终端的绘制单元106可以根据上述目标3d模型子节的上述多个顶点索引和上述uv纹理坐标组,利用开放图形库(opengraphicslibrary,简称opengl)中的库函数,例如gl_triangle_strip函数,绘制该目标3d模型子节,若该3d模型包括多个该目标3d模型子节,在制作3d模型时可以每次绘制一个目标3d模型子节,通过迭代的方法,重复绘制多个目标3d模型子节,从而实现整个3d模型的绘制,提高制作效率,同时利用该方法绘制的3d模型在游戏运行中可以减少整个3d模型占用的系统资源,提高运行效率。其中,该顶点索引被gl_triangle_strip函数用于确定三角面的顶点连接顺序,该uv纹理坐标组用于对gl_triangle_strip函数确定的三角面进行贴图处理,以使绘制的该目标3d模型子节能够在显示器上显示。

可选的,该终端还包括第二获取单元107、第一调整单元108以及第四确定单元109。

该第二获取单元107,用于获取到针对所述3d模型中的目标3d模型子节的缩放指令,所述缩放指令包括第一缩放比例。

该第一调整单元108,用于根据所述第一缩放比例,调整所述目标3d模型子节的模型半径。

该第四确定单元109,用于根据所述3d模型中第一3d模型子节与所述目标3d模型子节之间的子节间隔数量和预设的缩放衰减比例,确定针对所述第一3d模型子节的第二缩放比例。

该第一调整单元108,还用于根据所述第二缩放比例调整所述第一3d模型子节的模型半径。

具体可选的,终端的第二获取单元107可以获取到用户针对上述3d模型中的目标3d模型子节上的缩小操作产生的缩小指令,该缩小操作可以为用户在目标3d模型子节上相向的滑动操作,如图4a所示,是目标3d模型子节上缩小操作的示意图,a点和b点可以表示用户一只手的两个不同手指,也可以表示用户两只手的不同手指,a、b点上箭头所示方向可以表示用户的滑动方向。该缩小指令可以包括第一缩小比例,该终端的第一调整单元108可以根据该第一缩小比例,调整该目标3d模型子节的模型半径,并且该终端还可以获取该3d模型中第一3d模型子节与该目标3d模型子节之间的子节间隔数量,该终端的第四确定单元109可以根据该子节间隔数量和预设的缩放衰减比例,确定针对该第一3d模型子节的第二缩小比例,若该第二缩小比例小于1,该终端的第一调整单元108根据该第二缩小比例调整该第一3d模型子节的模型半径;若该第二缩小比例大于或等于1,该第一3d模型子节的模型半径保持不变,即不做任何调整。例如,第一缩小比例a1=0.5,该终端可以将目标3d模型子节的模型半径缩小至该模型半径的0.5倍,若子节间隔数量n=1,缩放衰减比例q=0.7,第二缩小比例可以由公式(1)求得:

第二缩小比例s1=5/7<1,终端可以将第一3d模型子节的模型半径缩小至该模型半径的5/7倍;若子节间隔数量n=2,缩放衰减比例q=0.7,第二缩小比例:

第二缩小比例s2=50/49>1,该第一3d模型子节的模型半径保持不变。

终端的第二获取单元107可以获取到用户针对上述3d模型中的目标3d模型子节上的放大操作产生的放大指令,该放大操作可以为用户在目标3d模型子节上背向相离的滑动操作,如图4b所示,是目标3d模型子节上放大操作的示意图,a点和b点可以表示用户一只手的两个不同手指,也可以表示用户两只手的不同手指,a、b点上箭头所示方向为用户的滑动方向。该放大指令可以包括第一放大比例,该终端的第一调整单元108可以根据该第一放大比例,调整该目标3d模型子节的模型半径,并且该终端还可以获取该3d模型中第一3d模型子节与该目标3d模型子节之间的子节间隔数量,该终端的第四确定单元109可以根据该子节间隔数量和预设的缩放衰减比例,确定针对该第一3d模型子节的第二放大比例,若该第二放大比例大于1,该终端的第一调整单元108根据该第二放大比例调整该第一3d模型子节的模型半径;若该第二放大比例小于或等于1,该第一3d模型子节的模型半径保持不变,即不做任何调整。例如,第一放大比例a1=2,该终端可以将目标3d模型子节的模型半径放大至该模型半径的2倍,若子节间隔数量n=1,缩放衰减比例q=0.7,第二放大比例可以由公式(2)求得:

f1=a1×qn=2×0.71=1.4(2)

第二放大比例f1=1.4>1,终端可以将第一3d模型子节的模型半径放大至该模型半径的1.4倍;若子节间隔数量n=2,缩放衰减比例q=0.7,第二放大比例:

f2=a1×qn=2×0.72=0.98

第二放大比例f2=0.98<1,该第一3d模型子节的模型半径保持不变。

可选的,该终端还包括旋转单元110。

上述第二获取单元107,还用于获取针对所述3d模型的视角旋转指令。

该旋转单元110,用于根据所述视角旋转指令,旋转所述3d模型的显示视角。

具体可选的,用户可以在终端屏幕的空白区域选中该3d模型,终端的上述第二获取单元107可以获取用户针对该3d模型的视角旋转指令,该视角旋转指令可以包括视角角度,该旋转单元110可以根据该视角旋转指令,旋转该3d模型的视角至该视角角度所指示的位置。比如,如图4c所示,是3d模型的一种旋转视角的示意图,如图4c所示虚线框用于表示用户的选中框,a点和b点用于表示用户的输入,a点不动用于表示用户的一个手指接触终端屏幕的空白区域不滑动,b点向右移动用于表示用户的另一个手指在终端屏幕的空白区域向右滑动,a点不动b点向右移动可以产生视角旋转指令,该视角旋转指令可以包括视角角度,终端可根据该视角旋转指令,将该3d模型的显示视角绕z轴顺时针旋转至该视角角度所指示的位置,若a点向左移动,b点不动,终端可将该3d模型的显示视角绕z轴旋转逆时针至该视角角度所指示的位置;如图4d所示,是3d模型的另一种旋转视角的示意图,如图4d所示虚线框用于表示用户的选中框,a点和b点用于表示用户的输入,a点不动用于表示用户的一个手指接触终端屏幕的空白区域不滑动,b点向上移动用于表示用户的另一个手指向上滑动,a点不动b点向上移动产生的指令可为视角旋转指令,该视角旋转指令可以包括视角角度,终端可根据该视角旋转指令,将该3d模型的显示视角绕y轴逆时针旋转至该视角角度所指示的位置,若a点向下移动,b点不动,终端可将该3d模型的显示视角绕y轴顺时针旋转至该视角角度所指示的位置。

进一步可选的,用户在终端屏幕的空白区域选中该3d模型后,终端可以在该终端屏幕上显示视角旋转界面,该视角旋转界面可以包括多个按钮,比如上、下、左、右四个按钮,终端可以检测用户点击该视角旋转界面上的按钮产生的视角旋转指令,该视角旋转指令可以包括视角角度,并可以根据该视角旋转指令,旋转该3d模型的显示视角至该视角角度所指示的位置。比如,该视角旋转界面的上、下两个按钮可以用于表示该3d模型的显示视角绕y轴旋转,左、右两个按钮可以用于表示该3d模型的显示视角绕z轴旋转至视角角度所指示的位置。

可选的,该终端还包括第二调整单元111。

上述第二获取单元107,还用于获取针对所述3d模型中的第二3d模型子节和第三3d模型子节的子节旋转指令,所述第二3d模型子节与所述第三3d模型子节相邻。

该第二调整单元111,还用于根据所述子节旋转指令,调整所述第二3d模型子节与所述第三3d模型子节之间的相对方向。

具体可选的,终端的上述第二获取单元107可以获取用户针对3d模型中的第二3d模型子节和第三3d模型子节的子节旋转指令,该第二3d模型子节和第三3d模型子节相邻,该子节旋转指令可以包括旋转角度,终端的第二调整单元111可以根据该子节旋转指令,调整该第二3d模型子节与该第三3d模型子节之间的相对方向至该旋转角度所指示的位置。如图4e所示,是3d模型的子节旋转示意图,a点和b点用于表示用户的输入,a点用于表示用户的一个手指选中该3d模型的第二3d模型子节,b点用于表示用户的另一个手指选中第三3d模型子节,a点不动用于表示用户的一个手指选中该第二3d模型子节不滑动,b点向上移动用于表示用户的另一个手指向上滑动该第三3d模型子节,终端获取滑动该第三3d模型子节的距离,获取该距离对应的旋转角度,如1cm对应30度,终端可以获取该终端屏幕上产生的子节旋转指令,该子节旋转指令包括旋转角度,终端可以根据该子节旋转指令,将该第三3d模型子节相对于该第二3d模型子节旋转至该旋转角度所指示的位置。

本申请实施例的3d模型包括一组首尾排列的3d模型子节,根据目标3d模型子节的n个中轴坐标点和与每个中轴坐标点对应的模型半径确定该目标3d模型子节的n个3d模型圆环,再分别在该n个3d模型圆环中确定m个圆环坐标点,从而得到n*m个圆环坐标点,根据该n*m个圆环坐标点确定该目标3d模型子节的多个顶点索引,获取该目标3d模型子节的uv纹理坐标组,并根据该目标3d模型子节的该多个顶点索引和该uv纹理坐标组,绘制该目标3d模型子节,可以通过绘制3d模型子节,实现整个3d模型的绘制,提高了制作效率,减少了游戏运行中整个3d模型占用的系统资源,提高了运行效率。

参见图6,是本申请实施例提供的另一种终端的示意性框图。如图所示的本实施例中的终端可以包括:一个或多个输入设备1000,一个或多个输出设备2000一个或多个处理器3000和存储器4000。上述输入设备1000、输出设备2000、处理器3000和存储器4000通过总线5000连接。存储器4000用于存储计算机程序,所述计算机程序包括程序指令,处理器3000用于执行存储器4000存储的程序指令。其中,处理器3000被配置用于调用所述程序指令执行:

根据目标3d模型子节的n个中轴坐标点和与每个中轴坐标点对应的模型半径确定所述目标3d模型子节的n个3d模型圆环;

分别在所述n个3d模型圆环中确定m个圆环坐标点,从而得到n*m个圆环坐标点;

根据所述n*m个圆环坐标点确定所述目标3d模型子节的多个顶点索引;

获取所述目标3d模型子节的uv纹理坐标组,其中所述uv纹理坐标组中包含n*m个纹理坐标,每个纹理坐标的u值对应所述目标3d模型子节的中轴坐标点编号,v值对应所述目标3d模型子节的圆环坐标点编号;

根据所述目标3d模型子节的所述多个顶点索引和所述uv纹理坐标组,绘制所述目标3d模型子节。

可选的,上述处理器3000具体用于由第x个3d模型圆环上的第m个圆环坐标、第m+1个圆环坐标与第y个3d模型圆环上的第m个或第m+1个圆环坐标组成一个顶点索引,所述x和y为所述目标3d模型子节中相邻的中轴坐标点编号,所述m为圆环坐标点编号。

可选的,上述处理器3000具体用于以各个3d模型圆环的第一圆环坐标点为起点每间隔第一目标弧长确定一个圆环坐标点,从而得到各个3d模型圆环中的m个圆环坐标点,其中所述各个3d模型圆环的第一圆环坐标点的连线与所述各个3d模型圆环的中轴坐标点的连线平行。

可选的,上述处理器3000还用于检测到针对所述3d模型首端或尾端的拖动指令,所述拖动指令包括拖动轨迹;

若所述拖动轨迹的长度大于或等于3d模型子节的长度,在所述3d模型首端或尾端增加所述目标3d模型子节,其中所述目标3d模型子节的n个中轴坐标点位于所述拖动轨迹上。

可选的,上述处理器3000还用于获取到针对所述3d模型中的目标3d模型子节的缩放指令,所述缩放指令包括第一缩放比例;

根据所述第一缩放比例,调整所述目标3d模型子节的模型半径;

根据所述3d模型中第一3d模型子节与所述目标3d模型子节之间的子节间隔数量和预设的缩放衰减比例,确定针对所述第一3d模型子节的第二缩放比例;

根据所述第二缩放比例调整所述第一3d模型子节的模型半径。

可选的,上述处理器3000还用于获取针对所述3d模型的视角旋转指令;

根据所述视角旋转指令,旋转所述3d模型的显示视角。

可选的,上述处理器3000还用于获取针对所述3d模型中的第二3d模型子节和第三3d模型子节的子节旋转指令,所述第二3d模型子节与所述第三3d模型子节相邻;

根据所述子节旋转指令,调整所述第二3d模型子节与所述第三3d模型子节之间的相对方向。

应当理解,在本申请实施例中,所称处理器3000可以是中央处理单元(centralprocessingunit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

输入设备1000可以包括触控板、指纹采集传感器(用于采集用户的指纹信息和指纹的方向信息)、麦克风等,输出设备2000可以包括显示器(lcd等)、扬声器等。

该存储器4000可以包括只读存储器和随机存取存储器,并向处理器3000提供指令和数据。存储器4000的一部分还可以包括非易失性随机存取存储器。例如,存储器4000还可以存储设备类型的信息。

具体实现中,本申请实施例中所描述的输入设备1000、输出设备2000、处理器3000可执行本申请实施例提供的3d模型的处理方法的第一实施例和第二实施例中所描述的实现方式,也可执行本申请实施例所描述的终端的实现方式,在此不再赘述。

在本申请的另一实施例中提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令执行时包括上述方法实施例中记载的任何一种3d模型的处理方法的部分或全部步骤。

该计算机可读存储介质可以是前述任一实施例所述的终端的内部存储单元,例如终端的硬盘或内存。该计算机可读存储介质也可以是该终端的外部存储设备,例如该终端上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,该计算机可读存储介质还可以既包括该终端的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该终端所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的终端和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的终端和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1