CN116342846A - 虚拟对象模型的处理方法、装置、计算机设备及存储介质 - Google Patents

虚拟对象模型的处理方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN116342846A
CN116342846A CN202310179596.5A CN202310179596A CN116342846A CN 116342846 A CN116342846 A CN 116342846A CN 202310179596 A CN202310179596 A CN 202310179596A CN 116342846 A CN116342846 A CN 116342846A
Authority
CN
China
Prior art keywords
candidate
model
vertex
vector
coordinate
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.)
Pending
Application number
CN202310179596.5A
Other languages
English (en)
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.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network 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 Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN202310179596.5A priority Critical patent/CN116342846A/zh
Publication of CN116342846A publication Critical patent/CN116342846A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/20Indexing scheme for editing of 3D models
    • G06T2219/2016Rotation, translation, scaling

Abstract

本申请实施例公开了一种虚拟对象模型的处理方法、装置、计算机设备及计算机可读存储介质。通过虚拟对象模型的左右侧顶点的坐标确定临时中心点,计算各顶点与临时中心的距离,结合各顶点的横向坐标,筛选出与临时中心的距离在预设阈值以上,且横轴坐标与临时中心距离超过另一预设阈值的候选顶点,利用候选顶点计算虚拟对象模型在竖直方向上的倾斜度向量,得到垂直于倾斜方向的旋转轴方向;获取与所筛选出的候选顶点相邻的候选模型面,基于候选模型面的法线向量以及面积,计算对虚拟对象模型的临时中心点的修正参数,并基于修正参数对临时中心点的位置进行修正,得到旋转轴位置坐标。以此,可以获得虚拟对象模型的准确轴心位置以及旋转轴方向。

Description

虚拟对象模型的处理方法、装置、计算机设备及存储介质
技术领域
本申请涉及计算机技术领域,具体涉及一种虚拟对象模型的处理方法、装置、计算机设备及计算机可读存储介质。
背景技术
在多边形模型制作中通常会遇到不规则的近圆物体,比如方向盘,或者某些异形缺口近圆零件。这些模型通常来源于三维扫描或制作人员手动制作,缺乏一个准确的轴心和转轴方向,在动画绑定时难以定位对应的骨骼位置和倾角。
相关技术中,通过制作人员手动选定轴心,使得轴心较为准确的对齐模型左右两侧的中心,且对于轴心的上下位置及其旋转轴倾角,仅能通过视觉观测评估一个大概的位置和方向。导致获取到偏差较大轴心位置以及旋转轴方向,从而影响虚拟对象模型的旋转效果。
发明内容
本申请实施例提供一种虚拟对象模型的处理方法、装置、计算机设备及计算机可读存储介质,获得虚拟对象模型的准确轴心位置以及旋转轴方向。
本申请实施例提供了一种虚拟对象模型的处理方法,包括:
获取虚拟对象模型中各模型顶点的顶点坐标,并基于所述顶点坐标,确定在第一坐标轴上坐标值最大的第一模型顶点和坐标值最小的第二模型顶点,其中,所述虚拟对象模型在一指定平面的形状为近圆形状;
根据所述第一模型顶点与所述第二模型顶点的顶点坐标,确定所述虚拟对象模型的候选旋转中心点和候选半径;
基于所述候选旋转中心点的坐标以及所述候选半径,从所述各模型顶点中确定候选模型顶点,其中,所述候选模型顶点为所述虚拟对象模型在所述指定平面与所述候选旋转中心点同轴心的圆对应的模型顶点;
基于所述候选模型顶点确定所述虚拟对象模型在所述指定平面的倾斜向量,以及垂直于所述倾斜向量的旋转轴方向向量,得到所述虚拟对象模型的旋转轴方向;
获取所述虚拟对象模型的模型面,并从所述模型面中确定正对所述候选旋转中心点的候选模型面;
基于所述候选模型面的法线向量和面积,确定所述候选旋转中心点在所述旋转轴方向上的位置修正参数,并基于所述位置修正参数对所述候选旋转中心点的位置进行修正,得到所述虚拟对象模型的修正后旋转中心点。
相应的,本申请实施例还提供了一种虚拟对象模型的处理装置,包括:
第一获取单元,用于获取虚拟对象模型中各模型顶点的顶点坐标,并基于所述顶点坐标,确定在第一坐标轴上坐标值最大的第一模型顶点和坐标值最小的第二模型顶点,其中,所述虚拟对象模型在一指定平面的形状为近圆形状;
第一确定单元,用于根据所述第一模型顶点与所述第二模型顶点的顶点坐标,确定所述虚拟对象模型的候选旋转中心点和候选半径;
第二确定单元,用于基于所述候选旋转中心点的坐标以及所述候选半径,从所述各模型顶点中确定候选模型顶点,其中,所述候选模型顶点为所述虚拟对象模型在所述指定平面与所述候选旋转中心点同轴心的圆对应的模型顶点;
第三确定单元,用于基于所述候选模型顶点确定所述虚拟对象模型在所述指定平面的倾斜向量,以及垂直于所述倾斜向量的旋转轴方向向量,得到所述虚拟对象模型的旋转轴方向;
第二获取单元,用于获取所述虚拟对象模型的模型面,并从所述模型面中确定正对所述候选旋转中心点的候选模型面;
第四确定单元,用于基于所述候选模型面的法线向量和面积,确定所述候选旋转中心点在所述旋转轴方向上的位置修正参数,并基于所述位置修正参数对所述候选旋转中心点的位置进行修正,得到所述虚拟对象模型的修正后旋转中心点。
相应的,本申请实施例还提供了一种计算机设备,包括存储器,处理器及存储在储存器上并可在处理器上运行的计算机程序,其中,处理器执行本申请实施例任一提供的虚拟对象模型的处理方法。
相应的,本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有多条指令,指令适于处理器进行加载,以执行如上的虚拟对象模型的处理方法。
本申请实施例通过虚拟对象模型的左右侧顶点的坐标确定临时中心点,计算各顶点与临时中心的距离,结合各顶点的横向坐标,筛选出与临时中心的距离在预设阈值以上,且横轴坐标与临时中心距离超过另一预设阈值的候选顶点,利用候选顶点计算虚拟对象模型在竖直方向上的倾斜度向量,得到垂直于倾斜方向的旋转轴方向;获取与所筛选出的候选顶点相邻的候选模型面,基于候选模型面的法线向量以及面积,计算对虚拟对象模型的临时中心点的修正参数,并基于修正参数对临时中心点的位置进行修正,得到旋转轴位置坐标。以此,可以获得虚拟对象模型的准确轴心位置以及旋转轴方向。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种虚拟对象模型的处理方法的流程示意图。
图2为本申请实施例提供的一种虚拟对象模型的处理方法的应用场景示意图。
图3为本申请实施例提供的一种虚拟对象模型的处理方法的应用场景示意图。
图4为本申请实施例提供的一种虚拟对象模型的处理方法的应用场景示意图。
图5为本申请实施例提供的一种虚拟对象模型的处理方法的应用场景示意图。
图6为本申请实施例提供的一种虚拟对象模型的处理方法的应用场景示意图。
图7为本申请实施例提供的一种虚拟对象模型的处理方法的应用场景示意图。
图8为本申请实施例提供的一种虚拟对象模型的处理方法的应用场景示意图。
图9为本申请实施例提供的一种虚拟对象模型的处理方法的应用场景示意图。
图10为本申请实施例提供的一种虚拟对象模型的处理方法的应用场景示意图。
图11为本申请实施例提供的一种虚拟对象模型的处理方法的应用场景示意图。
图12为本申请实施例提供的一种虚拟对象模型的处理方法的应用场景示意图。
图13为本申请实施例提供的一种虚拟对象模型的处理方法的应用场景示意图。
图14为本申请实施例提供的一种虚拟对象模型的处理方法的应用场景示意图。
图15为本申请实施例提供的一种虚拟对象模型的处理装置的结构框图。
图16为本申请实施例提供的计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供一种虚拟对象模型的处理方法、装置、计算机可读存储介质及计算机设备。具体地,本申请实施例的虚拟对象模型的处理方法可以由计算机设备执行,其中,该计算机设备可以为终端或者服务器等设备。该终端可以为智能手机、平板电脑、笔记本电脑、触控屏幕、个人计算机(PC,Personal Computer)、个人数字助理(PersonalDigital Assistant,PDA)等终端设备。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
例如,该计算机设备可以是终端,该终端可以获取虚拟对象模型中各模型顶点的顶点坐标,并基于顶点坐标,确定在第一坐标轴上坐标值最大的第一模型顶点和坐标值最小的第二模型顶点,其中,虚拟对象模型在一指定平面的形状为近圆形状;根据第一模型顶点与第二模型顶点的顶点坐标,确定虚拟对象模型的候选旋转中心点和候选半径;基于候选旋转中心点的坐标以及候选半径,从各模型顶点中确定候选模型顶点,其中,候选模型顶点为虚拟对象模型在指定平面与候选旋转中心点同轴心的圆对应的模型顶点;基于候选模型顶点确定虚拟对象模型在指定平面的倾斜向量,以及垂直于倾斜向量的旋转轴方向向量,得到虚拟对象模型的旋转轴方向;获取虚拟对象模型的模型面,并从模型面中确定正对候选旋转中心点的候选模型面;基于候选模型面的法线向量和面积,确定候选旋转中心点在旋转轴方向上的位置修正参数,并基于位置修正参数对候选旋转中心点的位置进行修正,得到虚拟对象模型的修正后旋转中心点。
基于上述问题,本申请实施例提供第一种虚拟对象模型的处理方法、装置、计算机设备及计算机可读存储介质,获得虚拟对象模型的准确轴心位置以及旋转轴方向。
以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
本申请实施例提供一种虚拟对象模型的处理方法,该方法可以由终端或服务器执行,本申请实施例以虚拟对象模型的处理方法由终端执行为例来进行说明。
请参阅图1,图1为本申请实施例提供的一种虚拟对象模型的处理方法的流程示意图。该虚拟对象模型的处理方法的具体流程可以如下:
101、获取虚拟对象模型中各模型顶点的顶点坐标,并基于顶点坐标,确定在第一坐标轴上坐标值最大的第一模型顶点和坐标值最小的第二模型顶点。
在本申请实施例中,虚拟对象模型指的是根据虚拟对象的外形创建的对象模型,虚拟对象模型可以为三维模型。在创建的虚拟对象模型后,通常需要进行一些编辑操作,比如旋转、缩放等。
在虚拟对象模型进行旋转操作之前,首先需要确定出旋转轴心点,以便基于旋转轴心点控制虚拟对象模型的旋转操作。具体的,可以根据虚拟对象模型在一指定平面的几何形状确定出旋转轴心点。对于在指定平面为正圆形状的虚拟对象模型,可以根据圆心确定出旋转轴心点;而对于在指定平面为非正圆形状(也即近圆形状)的虚拟对象模型,相关技术中主要通过人工确定旋转轴心点,而通过人工确定旋转轴心点会存在偏差情况,从而导致虚拟对象模型在旋转操作时做偏心运动,不便于对虚拟对象模型在旋转过程中进行定位。
因此,本申请方案中主要针对上述近圆形状的虚拟对象模型的旋转轴心的确定方式进行改进,以确定各类近圆形状的虚拟对象模型对应的旋转轴心点。
其中,虚拟对象模型在一指定平面的形状可以为近圆形状,近圆形状指的是接近圆形,但不属于正圆的形状,比如,近圆形状可以椭圆形、不规则圆形以及缺口圆形等。
例如,请参阅图2、图2为本申请实施例提供的一种虚拟对象模型的处理方法的应用场景示意图。图2示出了多种近圆形状,可以包括:椭圆形、不规则圆形以及缺口圆形。
在一些实施例中,虚拟对象模型可以为方向盘模型。
例如,请参阅图3,图3为本申请实施例提供的一种虚拟对象模型的处理方法的应用场景示意图。图3示出了多种在一指定平面的形状为不同近圆形状的虚拟对象模型。
其中,第一坐标轴可以为虚拟对象模型在水平方向的坐标轴。
例如,请参阅图4,图4为本申请实施例提供的另一种虚拟对象模型的处理方法的应用场景示意图。虚拟对象模型可以为方向盘的三维模型,也即方向盘模型。本方案可以以图4所示的方向盘为例进行说明。设方向盘的对称轴为坐标系Y轴,即驾驶舱左右为Y轴方向,前后为X轴方向,上下为Z轴方向。其中,Y轴也即第一坐标轴。
具体的,基于顶点坐标,确定在第一坐标轴上坐标值最大的第一模型顶点和坐标值最小的第二模型顶点可以包括以下操作:首先,获取制作人员在虚拟对象模型中所选择的方向盘模型的部分面,或着获取整个方向盘模型的面,记入集合F,转化获取组成这些面的模型顶点,将这些模型顶点记入集合V。
然后,按集合V中各模型顶点V0、V1、V2…Vi的顺序获取每一模型顶点的三维坐标,并把每一模型顶点Vi的X轴坐标值(也即在X轴上的坐标值)记入浮点数集合P的第3*i位,把Y轴坐标值(也即在Y轴上的坐标值)记入集合P的第3*i+1位,把Z轴坐标值(也即在Z轴上的坐标值)记入集合P的第3*i+2位。
其中,i为模型顶点在集合V中的序号(从0开始编号,下同)。在此过程中,把集合中第一个模型顶点V0在Y轴上的坐标值记入Ymin与Ymax,当后续模型顶点的Y轴坐标值大于Ymax时,把该模型顶点的Y轴坐标值记为新的Ymax,当后续模型顶点的Y轴坐标值小于Ymin时,把该模型顶点的Y轴坐标记为新的Ymin。
其中,Ymin表示在Y轴上的最小坐标值,Ymax表示在Y轴上的最大坐标值。
进一步的,遍历集合V中所有模型顶点后,获得整个模型顶点合集在Y轴上的取值范围,即[Ymin,Ymax],查找Ymin与Ymax值在集合P中的序号,分别记为l与r,则方向盘模型在Y轴上取值最大和最小的模型顶点XYZ坐标值分别为<<P(l-1),Pl,P(l+1)>>和<<P(r-1),Pr,P(r+1)>>。基于虚拟对象模型中顶点坐标为<<P(l-1),Pl,P(l+1)>>的模型顶点,得到第一模型顶点,基于虚拟对象模型中顶点坐标为<<P(r-1),Pr,P(r+1)>>的模型顶点,得到第二模型顶点。
102、根据第一模型顶点与第二模型顶点的顶点坐标,确定虚拟对象模型的候选旋转中心点和候选半径。
在一些实施例中,步骤“根据第一模型顶点与第二模型顶点的顶点坐标,确定虚拟对象模型的候选旋转中心点和候选半径”,可以包括以下操作:
获取第一模型顶点的顶点坐标中在各坐标轴上的第一坐标值,以及第二模型顶点的顶点坐标中在各坐标轴上的第二坐标值;
计算在同一坐标轴上的第一坐标值与第二坐标值的均值,得到在各坐标轴上的第三坐标值;
基于在各坐标轴上的第三坐标值对应的位置,确定候选旋转中心;
基于在第一坐标轴上的第三坐标值对应的数值,得到候选半径。
具体的,候选旋转中心在X轴上的坐标值的计算公式可以如下:
Figure BDA0004109127750000081
其中,Pcx指的是候选旋转中心在X轴上的坐标值,P(l-1)指的是第一模型顶点在X轴上的坐标值,P(r-1)指的是第二模型顶点在X轴上的坐标值。
具体的,候选旋转中心在Y上的坐标值的计算公式可以如下:
Figure BDA0004109127750000091
其中,Pcy指的是候选旋转中心在Y轴上的坐标轴,Pl指的是第一模型顶点在Y轴上的坐标值,Pr指的是第二模型顶点在Y轴上的坐标值。
具体的,候选旋转中心在Z上的坐标值的计算公式可以如下:
Figure BDA0004109127750000092
其中,Pcz指的是候选旋转中心在Z轴上的坐标轴,P(l+1)指的是第一模型顶点在Z轴上的坐标值,P(r+1)指的是第二模型顶点在Z轴上的坐标值。
从而得到候选旋转中心点Ctemp的X轴坐标值Pcx,Y轴坐标值Pcy,Z轴坐标值Pcz,得到候选中心点。
其中,基于在第一坐标轴上的第三坐标值对应的数值,得到候选半径,计算公式可以如下:
半径
Figure BDA0004109127750000093
从而得到候选半径。
例如,请参阅图5,图5为本申请实施例提供的另一种虚拟对象模型的处理方法的应用场景示意图。在图5中,展示虚拟对象模型在指定平面的形状示意图。其中,模型顶点A指的是坐标为<<P(l-1),Pl,P(l+1)>>的第一模型顶点,模型顶点B指的是坐标为<<P(r-1),Pr,P(r+1)>>的第二模型顶点。Ctemp也即根据模型顶点A与模型顶点B的坐标确定的候选旋转中心点,候选半径R为根据模型顶点A与模型顶点B在Y轴上的坐标值的均值。
103、基于候选旋转中心点的坐标以及候选半径,从各模型顶点中确定候选模型顶点。
其中,候选模型顶点为虚拟对象模型在指定平面与候选旋转中心点同轴心的圆对应的模型顶点。
在一些实施例中,为了筛选出准确的用于确定虚拟对象模型旋转轴心位置的模型顶点,步骤“基于候选旋转中心点的坐标以及候选半径,从各模型顶点中确定候选模型顶点”,可以包括以下操作:
根据各模型顶点的顶点坐标和候选旋转中心点的坐标,计算各模型顶点与候选旋转中心点之间的第一距离;
从各模型顶点中确定第一距离大于第一距离阈值的第一候选模型顶点;
从第一候选模型顶点中确定在第一坐标轴上大于第一坐标阈值,或者小于第二坐标阈值的模型顶点,得到候选模型顶点。
具体的,根据各模型顶点的顶点坐标和候选旋转中心点的坐标,计算各模型顶点与候选旋转中心点之间的第一距离可以基于以下计算公式:
Figure BDA0004109127750000101
其中,d表示第一距离,(Px,Py,Pz)表示模型顶点的顶点坐标,(Pcx,Pcy,Pcz)表示候选旋转中心点的坐标。
其中,第一距离阈值基于候选半径确定。
在一些实施例中,还可以包括以下步骤:
获取预设距离系数,计算预设距离系数与候选半径的乘积,得到第一距离阈值。
在本申请方案中,设置筛选半径Rlom=Rfactor*R,将筛选半径Rlom作为第一距离阈值。其中,Rfactor为经验数值,也即预设距离系数,可取值0.8,用于筛选出与候选旋转中心点Ctemp距离超过Rlim的顶点,得到第一候选模型顶点。
具体的,从第一候选模型顶点中确定在第一坐标轴上大于第一坐标阈值,或者小于第二坐标阈值的模型顶点,可以将第一候选模型顶点在Y轴上的坐标值与第一坐标阈值和第二坐标阈值分别进行比较,将在Y轴上的坐标值大于第一坐标阈值,或者小于第二坐标阈值的第一候选模型顶点,作为候选模型顶点。
其中,第一坐标阈值基于第一模型顶点在第一坐标轴上的坐标值确定,第二坐标阈值基于第二模型顶点在第一坐标轴上的坐标值确定。
在一些实施例中,还可以包括以下步骤:
获取预设坐标浮动值,计算第一模型顶点在第一坐标轴上的坐标值与预设坐标浮动值的差值,得到第一坐标阈值;
计算第二模型顶点在第一坐标轴上的坐标值与预设坐标浮动值的和值,得到第二坐标阈值。
在本申请实施例中,设置坐标值宽度筛选上下限:
Wmax=Ymax-Wfactor*R,将Wmax作为第一坐标阈值;
Wmin=Ymin+Wfactor*R,将Wmin作为第二坐标阈值,用于筛选Y轴坐标值大于Wmax或小于Wmin的顶点。其中,Wfactor为经验数值,也即预设坐标浮动值,可取值0.2。
例如,将候选旋转中心点Ctemp的Z轴坐标轴Pcz记为Zmin和Zmax,从V0开始遍历集合V中的模型顶点,设当前顶点Vi在集合V中的序号为i,则顶点Vi在XYZ轴的坐标值Px=P(i*3),Py=P(i*3+1),Pz=P(i*3+2)。若Py∈[Wmin,Wmax],则跳过该顶点,并开始计算下一顶点。若Py<Wmin或Py>Wmax,则计算该模型顶点与候选旋转中心点Ctemp的距离d,若d>Rlim,则把顶点Vi添加进集合Vc,把其序号i添加进集合T,在此基础上,若Pz>Zmax,则把i记为H,把Pz记为新的Zmax,若Pz<Zmin,则把i记为L,把Pz记为新的Zmin,最终获得距离Ctemp大于Rlim且Y轴坐标处于[Wmin,Wmax]范围外的所有顶点在集合V中的序号的集合T(目的是筛选出绝大部分方向盘模型中位于握把上,与同轴心同半径的圆重合度最高的,可以用于定位轴心参考的顶点)。
例如,请参阅图6,图6为本申请实施例提供的另一种虚拟对象模型的处理方法的应用场景示意图。在图6所示的方向盘模型,位于该方向盘模型两侧握把位置的模型顶点,即为筛选出的同轴心同半径的圆重合度最高的,可以用于定位轴心参考的顶点。
104、基于候选模型顶点确定虚拟对象模型在指定平面的倾斜向量,以及垂直于倾斜向量的旋转轴方向向量,得到虚拟对象模型的旋转轴方向。
其中,指定平面为第一坐标轴和第二坐标轴构成的平面,也即图5所示,由第一坐标轴Y轴与第二坐标轴Z轴构成的平面。
其中,倾斜向量指的是虚拟对象模型中候选模型顶点对应的部位在竖直方向(可以为Z轴方向)上的倾斜度向量,然后,基于与该倾斜度向量垂直的向量,得到虚拟对象模型的旋转轴方向向量,从而可得到垂直于倾斜方向的旋转轴方向。
在一些实施例中,为了准确计算虚拟对象模型的旋转轴方向,步骤“基于候选模型顶点确定虚拟对象模型在指定平面的倾斜向量,以及垂直于倾斜向量的旋转轴方向向量”,可以包括以下步骤:
从候选模型顶点中确定在第二坐标轴上的坐标值最大的第三模型顶点和坐标值最小的第四模型顶点;
基于第三模型顶点和第四模型顶点的顶点坐标,确定由第四模型顶点指向第三模型顶点的向量,得到倾斜向量;
计算倾斜向量在垂直于指定平面的方向上的垂直向量,得到旋转轴方向向量。
具体的,从候选模型顶点中确定在第二坐标轴上的坐标值最大的第三模型顶点和坐标值最小的第四模型顶点,可以从候选模型顶点中筛选出在Z轴上的坐标值最大的候选模型顶点,得到第三模型顶点,以及在Z轴上坐标值最小的候选模型顶点,得到第四模型顶点。
例如,请继续参阅图6,从方向盘模型的握把位置的模型顶点中筛选出Z轴坐标值最大的顶点Vh(序号为h的模型顶点),得到第三模型顶点,和Z轴坐标值最小的顶点Vl(序号为l的模型顶点),得到第四模型顶点。
其中,在本申请实施例中,使用序号而非直接把模型顶点记入集合,是为了用顶点序号和集合P序号的对应关系,在集合P中快速查找相应顶点的坐标信息,无需重复读取顶点坐标,节省计算时间。
具体的,基于第三模型顶点和第四模型顶点的顶点坐标,确定由第四模型顶点指向第三模型顶点的向量,可以按照以下计算公式:
Figure BDA0004109127750000131
其中,
Figure BDA0004109127750000132
表示由第四模型顶点指向第三模型顶点的向量在XZ平面上的投影,也即倾斜向量;P(H*3)为第三模型顶点在X轴上的坐标值,P(L*3)为第四模型顶点在X轴上的坐标值,(P(H*3+2)为第三模型顶点在Z轴上的坐标值,P(L*3+2)为第四模型顶点在Z轴上的坐标值。
在本申请实施例中,为了方便计算,可以对倾斜向量进行归一化处理,也即归一化
Figure BDA0004109127750000133
具体的,对/>
Figure BDA0004109127750000134
进行归一化处理为:x2+y2+z2=1,其中,x,y,z表示组成/>
Figure BDA0004109127750000135
向量的值。
例如,请参阅图7,图7为本申请实施例提供的另一种虚拟对象模型的处理方法的应用场景示意图。在图7中,
Figure BDA0004109127750000136
为从顶点Vl指向顶点Vh的向量在XZ平面上的投影的归一化向量。
具体的,计算倾斜向量在垂直于指定平面的方向上的垂直向量,可以按照以下计算公式:
Figure BDA0004109127750000137
其中,
Figure BDA0004109127750000138
表示旋转轴方向向量,通过计算/>
Figure BDA0004109127750000139
与Y轴向量<<0,1,0>>的叉积,得到为
Figure BDA00041091277500001310
同样的,为了方便计算,可以对旋转轴方向向量进行归一化处理,也即归一化/>
Figure BDA00041091277500001311
则所得的归一化向量/>
Figure BDA00041091277500001312
既垂直于/>
Figure BDA00041091277500001313
也垂直于Y轴。
例如,请参阅图8,图8为本申请实施例提供的另一种虚拟对象模型的处理方法的应用场景示意图。在图8中,
Figure BDA00041091277500001314
为从顶点Vl指向顶点Vh的向量在XZ平面上的投影的归一化向量,/>
Figure BDA00041091277500001315
为垂直于/>
Figure BDA00041091277500001316
和垂直于Y轴的向量。
在一些实施例中,为了得到虚拟对象模型的正确的旋转轴方向,还可以包括以下步骤:
确定候选旋转中心点指向各候选模型顶点的第一向量;
基于第一向量、倾斜向量以及旋转轴方向向量,计算候选旋转中心点指向各候选模型顶点的加权距离;
确定加权距离最大的候选模型顶点,得到第五模型顶点;
获取在第二坐标轴上与第五模型顶点处于候选旋转中心点另一侧的模型顶点,得到第六模型顶点;
基于第五模型顶点与第六模型顶点的顶点坐标对倾斜向量进行修正,得到修正后倾斜向量,并基于倾斜向量对旋转轴方向向量进行修正,得到修正后旋转轴方向向量。
具体的,确定候选旋转中心点指向各候选模型顶点的第一向量,可以包括以下操作:
遍历集合T,读取集合T(集合T为包括候选模型顶点的集合)中的顶点序号:T0、T1、T2、…、Ti,令x=T(i*3),令z=x+2,则顶点VTi的X轴坐标轴为集合P中序号为x的小数Px,Z轴坐标为集合P中序号为z的小数Pz。则计算候选旋转中心点指向各候选模型顶点的第一向量,可以按照以下计算公式:
Figure BDA0004109127750000141
其中,
Figure BDA0004109127750000142
指的是候选旋转中心点Ctemp指向候选模型顶点VTi的线段在XZ平面的投影的向量/>
Figure BDA0004109127750000143
作为第一向量;Px指的是候选模型顶点VTi在X轴上的坐标值,Pcx指的是候选旋转中心点Ctemp在X轴上的坐标值,Pz指的是候选模型顶点VTi在Z轴上的坐标值,Pcz指的是候选旋转中心点Ctemp在Z轴上的坐标值。
在一些实施例中,步骤“基于第一向量、倾斜向量以及旋转轴方向向量,计算候选旋转中心点指向各候选模型顶点的加权距离”,可以包括以下操作:
基于第一向量与倾斜向量,计算第一向量在倾斜向量方向上的第一分量长度;
基于第一向量与旋转轴方向向量,计算第一向量在旋转轴方向向量方向上的第二分量长度;
基于第一分量长度与第二分量长度,计算候选旋转中心点指向各候选模型顶点的加权距离。
其中,基于第一向量与倾斜向量,计算第一向量在倾斜向量方向上的第一分量长度可以按照以下计算公式:
Figure BDA0004109127750000151
也即通过计算
Figure BDA0004109127750000152
与/>
Figure BDA0004109127750000153
的点积与/>
Figure BDA0004109127750000154
长度的比值,获得向量/>
Figure BDA0004109127750000155
在/>
Figure BDA0004109127750000156
方向上的分量的长度,得到第一分量长度。
其中,基于第一向量与旋转轴方向向量,计算第一向量在旋转轴方向向量方向上的第二分量长度,可以按照以下计算公式:
Figure BDA0004109127750000157
也即通过计算
Figure BDA0004109127750000158
与/>
Figure BDA0004109127750000159
的点积与/>
Figure BDA00041091277500001510
长度的比值,获得向量/>
Figure BDA00041091277500001511
在/>
Figure BDA00041091277500001512
方向上的分量的长度,得到第二分量长度。
在一些实施例中,步骤“基于第一分量长度与第二分量长度,计算候选旋转中心点指向各候选模型顶点的加权距离”,可以包括以下操作:
计算第一分量长度与预设权重系数的乘积,得到加权后分量长度;
计算加权后分量长度与第二分量长度的和值,得到加权距离。
在本申请实施例中,设计加权距离的计算公式如下:
Figure BDA00041091277500001513
其中,d表示加权距离,dfactor表示预设权重系数。
Figure BDA00041091277500001514
表示第一分量长度,
Figure BDA00041091277500001515
表示第二分量长度。
具体的,通过计算
Figure BDA00041091277500001516
与/>
Figure BDA00041091277500001517
的点积与/>
Figure BDA00041091277500001518
长度的比值,获得向量/>
Figure BDA00041091277500001519
在/>
Figure BDA00041091277500001520
方向上的分量的长度,以该长度与权重系数dfactor(dfactor可按经验取值0.1)的积加上
Figure BDA0004109127750000161
在/>
Figure BDA0004109127750000162
方向上的分量的长度,获得候选旋转中心点Ctemp指向候选模型顶点VTi的加权距离d。
在一些实施例中,由于
Figure BDA0004109127750000163
均经过归一化处理,因此/>
Figure BDA0004109127750000164
因此加权距离的计算公式可简化为:
Figure BDA0004109127750000165
若d>dmax,则把顶点VTi的顶点序号Ti记为新的Ta,把d记为新的dmax并计算下一顶点序号,直至遍历集合T中所有顶点序号。最终获得与Ctemp的加权距离最大的顶点VTa及其序号Ta,也即VTa为第五模型顶点,然后可以查找集合P获取顶点VTa的X轴坐标Ppinx=P(Ta*3),Z轴坐标Ppinz=P(Ta*3+2)。
例如,请参阅图9,图9为本申请实施例提供的另一种虚拟对象模型的处理方法的应用场景示意图。在图9中,模型顶点VTa即为计算出的与候选旋转中心点Ctemp的加权距离最大的模型顶点。
在一些实施例中,步骤“获取在第二坐标轴上与第五模型顶点处于候选旋转中心点另一侧的模型顶点,得到第六模型顶点”,可以包括以下操作:
从候选模型顶点中确定在第二坐标轴上的坐标值大于候选旋转中心的模型顶点,得到第二候选模型顶点;
计算第二候选模型顶点指向第五模型顶点的第二向量;
计算第二向量在倾斜向量方向上的投影长度;
基于旋转轴方向向量与第二向量之间的夹角、投影长度计算各第二候选模型顶点对应的比值参数;
基于比值参数最小的模型顶点,确定第六模型顶点。
具体的,从候选模型顶点中确定在第二坐标轴上的坐标值大于候选旋转中心的模型顶点,可以包括以下步骤:
首先,设定比较参数Sign,Sign的计算公式可以为:
Figure BDA0004109127750000166
其中,Pcz为候选旋转中心点Ctemp在Z轴上的坐标值,Ppinx指的是第五模型顶点VTa在Z轴上的坐标值。
然后,遍历集合T(包括候选模型顶点的集合),读取集合T中的顶点序号:T0、T1、T2、…、Ti,令x=T(i*3),令z=x+2,则顶点VTi的X轴坐标值为集合P中序号为x的小数Px,Z轴坐标值为集合P中序号为z的小数Pz。若(Pz–Pcz)*Sign>0,则跳至下一顶点。这一步骤是为了筛选出Z轴坐标值与顶点VTa处于候选旋转中心点Ctemp另一侧的顶点,若其Z轴坐标值相对于Ctemp的Z轴坐标处于同侧,则跳过该顶点并进入下一个循环;若其Z轴坐标值相对于Ctemp的Z轴坐标不处于同侧,则可以将该模型顶点作为第二候选模型顶点。
进一步的,计算第二候选模型顶点指向顶点VTa的线段在XZ平面上的投影
Figure BDA0004109127750000171
可以为:
Figure BDA0004109127750000172
其中,Px为第二候选模型顶点在X轴上的坐标值,Pz为第二候选模型顶点在Z轴上的坐标值;Ppinx为VTa在X轴上的坐标值,Ppinz为VTa在Z轴上的坐标值。从而可以计算得到第二向量
Figure BDA0004109127750000173
具体的,计算第二向量在倾斜向量方向上的投影长度,可以包括如下:
Figure BDA0004109127750000174
也即,通过计算
Figure BDA0004109127750000175
与/>
Figure BDA0004109127750000176
的点积与/>
Figure BDA0004109127750000177
长度的比值,获得向量/>
Figure BDA0004109127750000178
在/>
Figure BDA0004109127750000179
方向上的投影长度。
其中,在本申请实施例中,预设初始比值参数A,令Amin=180。
具体的,基于旋转轴方向向量与第二向量之间的夹角、投影长度计算各第二候选模型顶点对应的比值参数,可以按照以下比值计算公式:
Figure BDA00041091277500001710
其中,θ是向量
Figure BDA0004109127750000181
与/>
Figure BDA0004109127750000182
之间的夹角,是/>
Figure BDA0004109127750000183
在/>
Figure BDA0004109127750000184
方向上的投影长度,Sfactor是敏感系数,该系数越小,/>
Figure BDA0004109127750000185
在/>
Figure BDA0004109127750000186
方向上的投影距离对比值A的影响越大,该系数越大,对比值A的影响越小。当前案例可按经验取Sfactor=50。
进一步的,将第二候选模型顶点对应的比值参数A与初始壁纸参数Amin进行比较,若A<Amin,则把顶点VTi的序号Ti记为新的Tb,把A记为新的Amin并计算下一顶点序号,直至遍历集合T中所有顶点序号。以比值A筛选出在顶点集合V中,所得向量
Figure BDA0004109127750000187
在计算顶点与VTa在/>
Figure BDA0004109127750000188
方向上距离加权后,与/>
Figure BDA0004109127750000189
最接近的顶点VTb,得到确定第六模型顶点,及其序号Tb,查找集合P获取顶点VTb的X轴坐标Pspinx=P(Tb*3),Z轴坐标Pspinz=P(Tb*3+2)。
例如,请参阅图10,图10为本申请实施例提供的另一种虚拟对象模型的处理方法的应用场景示意图。在图10中,模型顶点VTb即为计算出在顶点集合V中,所得向量
Figure BDA00041091277500001810
在计算顶点与VTa在/>
Figure BDA00041091277500001811
方向上距离加权后,与/>
Figure BDA00041091277500001812
最接近的顶点。
最后,基于第五模型顶点与第六模型顶点的顶点坐标对倾斜向量进行修正,得到修正后倾斜向量,以及基于倾斜向量对旋转轴方向向量进行修正,得到修正后旋转轴方向向量。
具体的,第五模型顶点VTa与第六模型顶点VTb在XZ平面上的投影修正向量
Figure BDA00041091277500001813
若Pspinz>Ppinz,也即VTb在Z轴上的坐标值大于VTa在Z轴上的坐标值,则可以计算修正后倾斜向量:
Figure BDA00041091277500001814
若Pspinz≤Ppinz,也即VTb在Z轴上的坐标值小于等于VTa在Z轴上的坐标值,则可以计算修正后倾斜向量:
Figure BDA00041091277500001815
在一些实施例中,可以对修正后倾斜向量进行归一化处理,归一化
Figure BDA00041091277500001816
确保/>
Figure BDA00041091277500001817
从Z轴的低处指向高处。同时,根据修正后的倾斜向量更新/>
Figure BDA00041091277500001818
令/>
Figure BDA00041091277500001819
并归一化/>
Figure BDA00041091277500001820
例如,请参阅图11,图11为本申请实施例提供的另一种虚拟对象模型的处理方法的应用场景示意图。图11示出了更新后的
Figure BDA0004109127750000191
和/>
Figure BDA0004109127750000192
在一些实施例中,步骤“确定候选旋转中心点在旋转轴方向上的位置修正参数”,可以包括以下操作:
确定候选旋转中心点在修正后旋转轴方向向量对应的旋转轴方向上的位置修正参数。
105、获取虚拟对象模型的模型面,并从模型面中确定正对候选旋转中心点的候选模型面。
具体的,获取虚拟对象模型的所有模型面,将所有模型面记入集合F。
在一些实施例中,为了确定虚拟对象模型的准确的旋转轴心,步骤“从模型面中确定正对候选旋转中心点的候选模型面”,可以包括以下操作:
从模型面中确定与候选模型顶点相邻的模型面,得到第一候选模型面;
获取第一候选模型面的法线向量;
基于法线向量从第一候选模型面中确定候选模型面。
具体的,获取集合F(包括所有模型面的集合)中与集合Vc(包括候选模型顶点的集合)中顶点相邻的面,得到第一候选模型面,并将得到第一候选模型面存放至集合Fc,按集合Fc中各面Fc0、Fc1、Fc2…Fci的顺序获取其中心的三维坐标,并把面Fci中心的X轴坐标记入浮点数集合Pf的第3*i位,把Y轴坐标记入集合Pf的第3*i+1位,把Z轴坐标记入集合Pf的第3*i+2位,其中i为该面在集合Fc中的序号。
然后,获取面Fci的归一化法线向量并记入集合NOR的第i位,获取面Fci的面积并记入集合SA的第i位。
在一些实施例中,步骤“基于法线向量从第一候选模型面中确定候选模型面”,可以包括以下操作:
获取从候选旋转中心点指向第一候选模型面的中心点的第三向量;
计算第三向量与法线向量之间的第一夹角;
确定第一夹角不大于预设角度的第一候选模型面,得到候选模型面。
具体的,遍历集合Fc,对集合中第i个面Fci执行下列操作,令x=i*3,y=x+1,z=y+1,求得从候选旋转中心点Ctemp指向面Fci中心点的向量
Figure BDA0004109127750000201
即/>
Figure BDA0004109127750000202
其中,
Figure BDA0004109127750000203
为从候选旋转中心点指向第一候选模型面的中心点的第三向量,候选旋转中心点的坐标为:(Pcx,Pcy,Pcz),第一候选模型面的中心点的坐标为:(Pfx,Pfy,Pfz)。
进一步的,记向量
Figure BDA0004109127750000204
的在XYZ轴的三轴值为<<Nx,Ny,Nz>>,求得当前面法线
Figure BDA0004109127750000205
与/>
Figure BDA0004109127750000206
的夹角Angle,也即得到第一夹角。
将第一夹角与预设角度进行比较,预设角度可以为:20°(20°为经验取值)。若Angle大于20°,则认为面Fci并不正对Ctemp,无法用作修正Ctemp位置的参考。
若Angle小于等于20°,则认为面Fci正对Ctemp,也即若
Figure BDA0004109127750000207
与/>
Figure BDA0004109127750000208
的夹角小于20°。
例如,请参阅图12,图12为本申请实施例提供的另一种虚拟对象模型的处理方法的应用场景示意图。图12中,面Fci的法线向量
Figure BDA0004109127750000209
与/>
Figure BDA00041091277500002010
的夹角Angle小于20°,确定面Fci为正对候选旋转中心点的模型面。
106、基于候选模型面的法线向量和面积,确定候选旋转中心点在旋转轴方向上的位置修正参数,并基于位置修正参数对候选旋转中心点的位置进行修正,得到虚拟对象模型的修正后旋转中心点。
在一些实施例中,步骤“基于候选模型面的法线向量和面积,确定候选旋转中心点在旋转轴方向上的位置修正参数”,可以包括以下操作:
确定法线向量沿负方向延伸至在第一坐标轴上的坐标值与候选旋转中心点相同的延伸点;
获取从候选旋转中心点指向延伸点的第四向量;
计算第四向量在倾斜向量方向上的第三分量长度;
基于第三分量长度与面积的乘积,得到候选模型面对候选旋转中心点的位置修正参数。
在确定用于对候选旋转中心点的位置进行修正的候选模型面之后,按以下方法计算面Fci对Ctemp位置的累计修正值:
首先,确定法线向量沿负方向延伸至在第一坐标轴上的坐标值与候选旋转中心点相同的延伸点,获取从候选旋转中心点指向延伸点的第四向量,如下:
<<(Pfx–k*Nx-Pcx),0,(Pfz–k*Nz-Pcz)>>;
其中,Pfx指的是候选模型面Fci的中心点在X轴上的坐标值,Pfz指的是候选模型面Fci的中心点在Z轴上的坐标值;Nx指的是从原点(0,0,0)指向坐标为(Nx,Ny,Nz)的点的有向线段在X轴上的投影坐标值,Nz指的是从原点指向坐标为(Nx,Ny,Nz)的点的有向线段在Z轴上的投影坐标值,Pcx指的是候选旋转中心点在X轴上的坐标值,Pcz指的是候选旋转中心点在Z轴上的坐标值。
其中,k为预设系数,k的计算公式可以为:
k=dy/Ny;其中,dy指的是候选模型面Fci的中心点与候选旋转中心点Ctemp在Y轴上坐标的差值,Ny指的是从原点指向坐标为(Nx,Ny,Nz)的点的有向线段在Y轴上的投影坐标值。
具体的,计算第四向量在倾斜向量方向上的第三分量长度,计算公式可以如下:
Figure BDA0004109127750000211
也即通过计算<<(Pfx–k*Nx-Pcx),0,(Pfz–k*Nz-Pcz)>>与
Figure BDA0004109127750000212
的点点积,除以/>
Figure BDA0004109127750000213
的长度1,得到即为该向量在/>
Figure BDA0004109127750000214
方向上的分量dc,得到第三分量长度。
例如,请参阅图13,图13为本申请实施例提供的另一种虚拟对象模型的处理方法的应用场景示意图。若dc>0,则表示Ctemp指向
Figure BDA0004109127750000221
正向,否则表示Ctemp指向/>
Figure BDA0004109127750000222
负向。
进一步的,计算第三分量长度与面积的乘积,得到候选模型面对候选旋转中心点的位置修正参数。
例如,候选模型面Fci对应的第三分量长度可以为dc,权重系数为SAi,则得到候选模型面Fci对候选旋转中心点的位置修正参数为:dc*SAi。其中,令SAi是对应的面Fci的面积,将SAi作为权重系数计入修正值。
在一些实施例中,步骤“基于第三分量长度与面积的乘积,得到候选模型面对候选旋转中心点的位置修正参数”,可以包括以下操作:
将每一候选模型面对候选旋转中心点的位置修正参数进行叠加,得到叠加后位置修成参数;
则步骤“基于位置修正参数对候选旋转中心点的位置进行修正”,可以包括以下操作者:
计算所有候选模型面的面积之和,得到总面积;
计算叠加后位置修成参数与总面积的比值;
计算候选旋转中心点的坐标与比值的和值,得到修正后的候选旋转中心点的坐标。
在本申请实施例中,预设初始修正值Adj与面的总面积SAsum,对初始修正值Adj与面的总面积SAsum进行初始化,比如,可以令Adj=SAsum=0。
进一步的,令dc与权重系数SAi的积和当前累计修正值Adj相加(dc*SAi+Adj)并把结果记为新的Adj,把SAi与当前累计面积SAsum相加并记为新的SAsum,也即总面积。
其中,计算叠加后位置修成参数与总面积的比值,可以为:
Figure BDA0004109127750000223
具体的,遍历集合Fc中所有模型面后,最终的方向盘轴心点位置Paxis的计算公式可以如下:
Figure BDA0004109127750000231
其中,Paxis为修正后的候选旋转中心的位置,
<<Pcx,Pcy,Pcz>>为候选旋转中心的初始位置,
Figure BDA0004109127750000232
为修正后倾斜向量。
具体的,Paxis指的是可以在当前Ctemp的位置基础上按各候选模型面的面积加权后的累计修正值在
Figure BDA0004109127750000233
轴向上修正,Paxis的坐标为从Ctemp开始,往/>
Figure BDA0004109127750000234
方向移动/>
Figure BDA0004109127750000235
单位距离的位置。
例如,请参阅图14,图14为本申请实施例提供的另一种虚拟对象模型的处理方法的应用场景示意图。图13示出了各种方向盘模型应用本案求得轴心位置和倾角后,生成一个同半径的圆柱体并对齐其轴心和倾角的效果演示。
在一些实施例中,对于确定修正后旋转中心点的虚拟对象模型,可以进行多种操作,则该方法还可以包括以下步骤:
响应于述虚拟对象模型的旋转操作,控制虚拟对象模型基于修正后旋转中心点进行旋转。
其中,旋转操作指的是设计人员通过设计软件对虚拟对象模型进行的旋转。具体的,可以将修正后旋转中心点作为虚拟对象模型进行旋转的中心点,然后控制虚拟对象模型按照修正后旋转中心点进行旋转,从而实现近圆形状的虚拟对象模型在旋转过程中的旋转面保持在同一平面,避免近圆形状的虚拟对象模型的偏心运动。
在一些实施例中,对于确定修正后旋转中心点的虚拟对象模型,还可以基于修正后旋转中心点对虚拟对象模型进行移动、缩放等需要以轴心及方向为基础的模型编辑操作。
在一些实施例中,虚拟对象模型在应用场景中需要实现运动动画,则在虚拟对象模型制作完成后,可以对虚拟对象模型进行蒙皮处理。通过本方案确定出虚拟对象模型的修正后旋转中心点,获取虚拟对象模型对应的骨骼模型,基于修正后旋转中心点定位虚拟对象模型各模型顶点与骨骼模型之间的位置,进而将定位后的虚拟对象模型与骨骼模型快速进行绑定,提高虚拟对象模型的骨骼绑定效果。
本方案先通过方向盘握把上较为规整的左右外侧端点获取待计算模型的横向中心坐标,然后设立一个临时中心点,计算模型上各顶点与临时中心的距离,再结合方向盘上各顶点的横向坐标,筛选出与临时中心的距离在预设阈值以上的,横轴坐标与临时中心距离在另一预设阈值以上的顶点,这些顶点就是绝大多数方向盘或近圆零件上与同轴心的圆重叠最多的部位,利用这些部位的顶点求出握把在竖直方向上的倾斜度向量,即可得到垂直于倾斜方向的旋转轴方向。
进一步的,获取与所筛选出的顶点相邻的面,筛选出临时中心指向某个面几何中心的向量与这个面自身的法线方向的夹角处于一定阈值范围内的面(可以认为这些面就是朝向真正的旋转轴附近的),通过遍历这些筛选出的面的法线穿过方向盘中心横轴坐标时的位置获得该面对临时中心点在倾斜方向上的修正距离,然后以面的面积加权累计上述面的总体修正距离,最终以这个距离在垂直于旋转轴和横向坐标轴的方向上修正临时中心点的位置,获得旋转轴位置坐标。
本申请实施例公开了一种虚拟对象模型的处理方法,该方法包括:获取虚拟对象模型中各模型顶点的顶点坐标,并基于顶点坐标,确定在第一坐标轴上坐标值最大的第一模型顶点和坐标值最小的第二模型顶点,其中,虚拟对象模型在一指定平面的形状为近圆形状;根据第一模型顶点与第二模型顶点的顶点坐标,确定虚拟对象模型的候选旋转中心点和候选半径;基于候选旋转中心点的坐标以及候选半径,从各模型顶点中确定候选模型顶点,其中,候选模型顶点为虚拟对象模型在指定平面与候选旋转中心点同轴心的圆对应的模型顶点;基于候选模型顶点确定虚拟对象模型在指定平面的倾斜向量,以及垂直于倾斜向量的旋转轴方向向量,得到虚拟对象模型的旋转轴方向;获取虚拟对象模型的模型面,并从模型面中确定正对候选旋转中心点的候选模型面;基于候选模型面的法线向量和面积,确定候选旋转中心点在旋转轴方向上的位置修正参数,并基于位置修正参数对候选旋转中心点的位置进行修正,得到虚拟对象模型的修正后旋转中心点。以此,获得虚拟对象模型的准确轴心位置以及旋转轴方向。
为便于更好的实施本申请实施例提供的虚拟对象模型的处理方法,本申请实施例还提供一种基于上述虚拟对象模型的处理方法的虚拟对象模型的处理装置。其中名词的含义与上述虚拟对象模型的处理方法中相同,具体实现细节可以参考方法实施例中的说明。
请参阅图15,图15为本申请实施例提供的一种虚拟对象模型的处理装置的结构框图,该装置包括:
第一获取单元301,用于获取虚拟对象模型中各模型顶点的顶点坐标,并基于所述顶点坐标,确定在第一坐标轴上坐标值最大的第一模型顶点和坐标值最小的第二模型顶点,其中,所述虚拟对象模型在一指定平面的形状为近圆形状;
第一确定单元302,用于根据所述第一模型顶点与所述第二模型顶点的顶点坐标,确定所述虚拟对象模型的候选旋转中心点和候选半径;
第二确定单元303,用于基于所述候选旋转中心点的坐标以及所述候选半径,从所述各模型顶点中确定候选模型顶点,其中,所述候选模型顶点为所述虚拟对象模型在所述指定平面与所述候选旋转中心点同轴心的圆对应的模型顶点;
第三确定单元304,用于基于所述候选模型顶点确定所述虚拟对象模型在所述指定平面的倾斜向量,以及垂直于所述倾斜向量的旋转轴方向向量,得到所述虚拟对象模型的旋转轴方向;
第二获取单元305,用于获取所述虚拟对象模型的模型面,并从所述模型面中确定正对所述候选旋转中心点的候选模型面;
第四确定单元306,用于基于所述候选模型面的法线向量和面积,确定所述候选旋转中心点在所述旋转轴方向上的位置修正参数,并基于所述位置修正参数对所述候选旋转中心点的位置进行修正,得到所述虚拟对象模型的修正后旋转中心点。
在一些实施例中,第二确定单元303可以包括:
第一计算子单元,用于根据各模型顶点的顶点坐标和所述候选旋转中心点的坐标,计算各模型顶点与所述候选旋转中心点之间的第一距离;
第一确定子单元,用于从所述各模型顶点中确定第一距离大于第一距离阈值的第一候选模型顶点,其中,所述第一距离阈值基于所述候选半径确定;
第二确定子单元,用于从所述第一候选模型顶点中确定在所述第一坐标轴上大于第一坐标阈值,或者小于第二坐标阈值的模型顶点,得到所述候选模型顶点,其中,所述第一坐标阈值基于所述第一模型顶点在所述第一坐标轴上的坐标值确定,所述第二坐标阈值基于所述第二模型顶点在所述第一坐标轴上的坐标值确定。
在一些实施例中,该装置还可以包括:
第一计算单元,用于获取预设距离系数,计算所述预设距离系数与所述候选半径的乘积,得到所述第一距离阈值;
第二计算单元,用于获取预设坐标浮动值,计算所述第一模型顶点在所述第一坐标轴上的坐标值与所述预设坐标浮动值的差值,得到所述第一坐标阈值;
第三计算单元,用于计算所述第二模型顶点在所述第一坐标轴上的坐标值与所述预设坐标浮动值的差值,得到所述第二坐标阈值。
在一些实施例中,第三确定单元304可以包括:
第三确定子单元,用于从所述候选模型顶点中确定在所述第二坐标轴上的坐标值最大的第三模型顶点和坐标值最小的第四模型顶点;
第四确定子单元,用于基于所述第三模型顶点和所述第四模型顶点的顶点坐标,确定由所述第四模型顶点指向所述第三模型顶点的向量,得到所述倾斜向量;
第二计算子单元,用于计算所述倾斜向量在垂直于所述指定平面的方向上的垂直向量,得到所述旋转轴方向向量。
在一些实施例中,该装置还可以包括:
第四确定单元,用于确定所述候选旋转中心点指向各候选模型顶点的第一向量;
第四计算单元,用于基于所述第一向量、所述倾斜向量以及所述旋转轴方向向量,计算所述候选旋转中心点指向各候选模型顶点的加权距离;
第五确定单元,用于确定加权距离最大的候选模型顶点,得到第五模型顶点;
第三获取单元,用于获取在所述第二坐标轴上与所述第五模型顶点处于所述候选旋转中心点另一侧的模型顶点,得到第六模型顶点;
修正单元,用于基于所述第五模型顶点与所述第六模型顶点的顶点坐标对所述倾斜向量进行修正,得到修正后倾斜向量,并基于所述倾斜向量对所述旋转轴方向向量进行修正,得到修正后旋转轴方向向量。
在一些实施例中,第四确定单元306可以包括:
第五确定子单元,用于确定所述候选旋转中心点在所述修正后旋转轴方向向量对应的旋转轴方向上的位置修正参数。
在一些实施例中,第四计算单元可以包括:
第三计算子单元,用于基于所述第一向量与所述倾斜向量,计算所述第一向量在所述倾斜向量方向上的第一分量长度;
第四计算子单元,用于基于所述第一向量与所述旋转轴方向向量,计算所述第一向量在所述旋转轴方向向量方向上的第二分量长度;
第五计算子单元,用于基于所述第一分量长度与所述第二分量长度,计算所述候选旋转中心点指向各候选模型顶点的加权距离。
在一些实施例中,第五计算子单元具体可以用于:
计算所述第一分量长度与预设权重系数的乘积,得到加权后分量长度;
计算所述加权后分量长度与所述第二分量长度的和值,得到所述加权距离。
在一些实施例中,第三获取单元可以包括:
第六确定子单元,用于从所述候选模型顶点中确定在所述第二坐标轴上的坐标值大于所述候选旋转中心的模型顶点,得到第二候选模型顶点;
第六计算子单元,用于计算所述第二候选模型顶点指向所述第五模型顶点的第二向量;
第七计算子单元,用于计算所述第二向量在所述倾斜向量方向上的投影长度;
第七确定子单元,用于基于所述旋转轴方向向量与所述第二向量之间的夹角、所述投影长度计算各第二候选模型顶点对应的比值参数;
第八确定子单元,用于基于所述比值参数最小的模型顶点,确定所述第六模型顶点。
在一些实施例中,第二获取单元305可以包括:
第九确定子单元,用于从所述模型面中确定与所述候选模型顶点相邻的模型面,得到第一候选模型面;
获取子单元,用于获取所述第一候选模型面的法线向量;
第十确定子单元,用于基于所述法线向量从所述第一候选模型面中确定所述候选模型面。
在一些实施例中,第十确定子单元具体可以用于:
获取从所述候选旋转中心点指向所述第一候选模型面的中心点的第三向量;
计算所述第三向量与所述法线向量之间的第一夹角;
确定所述第一夹角不大于预设角度的第一候选模型面,得到所述候选模型面。
在一些实施例中,第四确定单元306可以包括:
第十确定子单元,用于确定所述法线向量沿负方向延伸至在所述第一坐标轴上的坐标值与所述候选旋转中心点相同的延伸点;
第二获取子单元,用于获取从所述候选旋转中心点指向所述延伸点的第四向量;
第七计算子单元,用于计算所述第四向量在所述倾斜向量方向上的第三分量长度;
第三获取子单元,用于基于所述第三分量长度与所述面积的乘积,得到所述候选模型面对所述候选旋转中心点的位置修正参数。
在一些实施例中,第三获取子单元具体可以用于:
将每一候选模型面对所述候选旋转中心点的位置修正参数进行叠加,得到叠加后位置修成参数。
在一些实施例中,第四确定单元306可以包括:
第八计算子单元,用于计算所有候选模型面的面积之和,得到总面积;
第九计算子单元,用于计算所述叠加后位置修成参数与所述总面积的比值;
第十计算子单元,用于计算所述候选旋转中心点的坐标与所述比值的和值,得到修正后的候选旋转中心点的坐标。
在一些实施例中,第一确定单元302可以包括:
第四获取子单元,用于获取所述第一模型顶点的顶点坐标中在各坐标轴上的第一坐标值,以及所述第二模型顶点的顶点坐标中在各坐标轴上的第二坐标值;
第十一计算子单元,用于计算在同一坐标轴上的第一坐标值与第二坐标值的均值,得到在各坐标轴上的第三坐标值,得到在各坐标轴上的第三坐标值;
第十一确定子单元,用于基于在各坐标轴上的第三坐标值对应的位置,确定所述候选旋转中心;
第十二确定子单元,用于基于在所述第一坐标轴上的第三坐标值对应的数值,得到所述候选半径。
在一些实施例中,该装置还可以包括:
控制单元,用于响应于述虚拟对象模型的旋转操作,控制虚拟对象模型基于修正后旋转中心点进行旋转。
本申请实施例公开了一种虚拟对象模型的处理装置,通过第一获取单元301于获取虚拟对象模型中各模型顶点的顶点坐标,并基于所述顶点坐标,确定在第一坐标轴上坐标值最大的第一模型顶点和坐标值最小的第二模型顶点,其中,所述虚拟对象模型在一指定平面的形状为近圆形状;第一确定单元302根据所述第一模型顶点与所述第二模型顶点的顶点坐标,确定所述虚拟对象模型的候选旋转中心点和候选半径;第二确定单元303基于所述候选旋转中心点的坐标以及所述候选半径,从所述各模型顶点中确定候选模型顶点,其中,所述候选模型顶点为所述虚拟对象模型在所述指定平面与所述候选旋转中心点同轴心的圆对应的模型顶点;第三确定单元304基于所述候选模型顶点确定所述虚拟对象模型在所述指定平面的倾斜向量,以及垂直于所述倾斜向量的旋转轴方向向量,得到所述虚拟对象模型的旋转轴方向;第二获取单元305获取所述虚拟对象模型的模型面,并从所述模型面中确定正对所述候选旋转中心点的候选模型面;第四确定单元306基于所述候选模型面的法线向量和面积,确定所述候选旋转中心点在所述旋转轴方向上的位置修正参数,并基于所述位置修正参数对所述候选旋转中心点的位置进行修正,得到所述虚拟对象模型的修正后旋转中心点。以此,获得虚拟对象模型的准确轴心位置以及旋转轴方向。
相应的,本申请实施例还提供一种计算机设备,该计算机设备可以为终端。如图16所示,图16为本申请实施例提供的计算机设备的结构示意图。该计算机设备500包括有一个或者一个以上处理核心的处理器501、有一个或一个以上计算机可读存储介质的存储器502及存储在存储器502上并可在处理器上运行的计算机程序。其中,处理器501与存储器502电性连接。本领域技术人员可以理解,图中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
处理器501是计算机设备500的控制中心,利用各种接口和线路连接整个计算机设备500的各个部分,通过运行或加载存储在存储器502内的软件程序和/或模块,以及调用存储在存储器502内的数据,执行计算机设备500的各种功能和处理数据,从而对计算机设备500进行整体监控。
在本申请实施例中,计算机设备500中的处理器501会按照如下的步骤,将一个或一个以上的应用程序的进程对应的指令加载到存储器502中,并由处理器501来运行存储在存储器502中的应用程序,从而实现各种功能:
获取虚拟对象模型中各模型顶点的顶点坐标,并基于顶点坐标,确定在第一坐标轴上坐标值最大的第一模型顶点和坐标值最小的第二模型顶点,其中,虚拟对象模型在一指定平面的形状为近圆形状;
根据第一模型顶点与第二模型顶点的顶点坐标,确定虚拟对象模型的候选旋转中心点和候选半径;
基于候选旋转中心点的坐标以及候选半径,从各模型顶点中确定候选模型顶点,其中,候选模型顶点为虚拟对象模型在指定平面与候选旋转中心点同轴心的圆对应的模型顶点;
基于候选模型顶点确定虚拟对象模型在指定平面的倾斜向量,以及垂直于倾斜向量的旋转轴方向向量,得到虚拟对象模型的旋转轴方向;
获取虚拟对象模型的模型面,并从模型面中确定正对候选旋转中心点的候选模型面;
基于候选模型面的法线向量和面积,确定候选旋转中心点在旋转轴方向上的位置修正参数,并基于位置修正参数对候选旋转中心点的位置进行修正,得到虚拟对象模型的修正后旋转中心点。
在一些实施例中,基于候选旋转中心点的坐标以及候选半径,从各模型顶点中确定候选模型顶点,包括:
根据各模型顶点的顶点坐标和候选旋转中心点的坐标,计算各模型顶点与候选旋转中心点之间的第一距离;
从各模型顶点中确定第一距离大于第一距离阈值的第一候选模型顶点,其中,第一距离阈值基于候选半径确定;
从第一候选模型顶点中确定在第一坐标轴上大于第一坐标阈值,或者小于第二坐标阈值的模型顶点,得到候选模型顶点,其中,第一坐标阈值基于第一模型顶点在第一坐标轴上的坐标值确定,第二坐标阈值基于第二模型顶点在第一坐标轴上的坐标值确定。
在一些实施例中,还包括:
获取预设距离系数,计算预设距离系数与候选半径的乘积,得到第一距离阈值;
获取预设坐标浮动值,计算第一模型顶点在第一坐标轴上的坐标值与预设坐标浮动值的差值,得到第一坐标阈值;
计算第二模型顶点在第一坐标轴上的坐标值与预设坐标浮动值的和值,得到第二坐标阈值。
在一些实施例中,指定平面为第一坐标轴和第二坐标轴构成的平面;
基于候选模型顶点确定虚拟对象模型在指定平面的倾斜向量,以及垂直于倾斜向量的旋转轴方向向量,包括:
从候选模型顶点中确定在第二坐标轴上的坐标值最大的第三模型顶点和坐标值最小的第四模型顶点;
基于第三模型顶点和第四模型顶点的顶点坐标,确定由第四模型顶点指向第三模型顶点的向量,得到倾斜向量;
计算倾斜向量在垂直于指定平面的方向上的垂直向量,得到旋转轴方向向量。
在一些实施例中,在确定候选旋转中心点在旋转轴方向上的位置修正参数之前,方法还包括:
确定候选旋转中心点指向各候选模型顶点的第一向量;
基于第一向量、倾斜向量以及旋转轴方向向量,计算候选旋转中心点指向各候选模型顶点的加权距离;
确定加权距离最大的候选模型顶点,得到第五模型顶点;
获取在第二坐标轴上与第五模型顶点处于候选旋转中心点另一侧的模型顶点,得到第六模型顶点;
基于第五模型顶点与第六模型顶点的顶点坐标对倾斜向量进行修正,得到修正后倾斜向量,并基于倾斜向量对旋转轴方向向量进行修正,得到修正后旋转轴方向向量;
确定候选旋转中心点在旋转轴方向上的位置修正参数,包括:
确定候选旋转中心点在修正后旋转轴方向向量对应的旋转轴方向上的位置修正参数。
在一些实施例中,基于第一向量、倾斜向量以及旋转轴方向向量,计算候选旋转中心点指向各候选模型顶点的加权距离,包括:
基于第一向量与倾斜向量,计算第一向量在倾斜向量方向上的第一分量长度;
基于第一向量与旋转轴方向向量,计算第一向量在旋转轴方向向量方向上的第二分量长度;
基于第一分量长度与第二分量长度,计算候选旋转中心点指向各候选模型顶点的加权距离。
在一些实施例中,基于第一分量长度与第二分量长度,计算候选旋转中心点指向各候选模型顶点的加权距离,包括:
计算第一分量长度与预设权重系数的乘积,得到加权后分量长度;
计算加权后分量长度与第二分量长度的和值,得到加权距离。
在一些实施例中,获取在第二坐标轴上与第五模型顶点处于候选旋转中心点另一侧的模型顶点,得到第六模型顶点,包括:
从候选模型顶点中确定在第二坐标轴上的坐标值大于候选旋转中心的模型顶点,得到第二候选模型顶点;
计算第二候选模型顶点指向第五模型顶点的第二向量;
计算第二向量在倾斜向量方向上的投影长度;
基于旋转轴方向向量与第二向量之间的夹角、投影长度计算各第二候选模型顶点对应的比值参数;
基于比值参数最小的模型顶点,确定第六模型顶点。
在一些实施例中,从模型面中确定正对候选旋转中心点的候选模型面,包括:
从模型面中确定与候选模型顶点相邻的模型面,得到第一候选模型面;
获取第一候选模型面的法线向量;
基于法线向量从第一候选模型面中确定候选模型面。
在一些实施例中,基于法线向量从第一候选模型面中确定候选模型面,包括:
获取从候选旋转中心点指向第一候选模型面的中心点的第三向量;
计算第三向量与法线向量之间的第一夹角;
确定第一夹角不大于预设角度的第一候选模型面,得到候选模型面。
在一些实施例中,基于候选模型面的法线向量和面积,确定候选旋转中心点在旋转轴方向上的位置修正参数,包括:
确定法线向量沿负方向延伸至在第一坐标轴上的坐标值与候选旋转中心点相同的延伸点;
获取从候选旋转中心点指向延伸点的第四向量;
计算第四向量在倾斜向量方向上的第三分量长度;
基于第三分量长度与面积的乘积,得到候选模型面对候选旋转中心点的位置修正参数。
在一些实施例中,基于第三分量长度与面积的乘积,得到候选模型面对候选旋转中心点的位置修正参数,包括:
将每一候选模型面对候选旋转中心点的位置修正参数进行叠加,得到叠加后位置修成参数;
基于位置修正参数对候选旋转中心点的位置进行修正,包括:
计算所有候选模型面的面积之和,得到总面积;
计算叠加后位置修成参数与总面积的比值;
计算候选旋转中心点的坐标与比值的和值,得到修正后的候选旋转中心点的坐标。
在一些实施例中,根据第一模型顶点与第二模型顶点的顶点坐标,确定虚拟对象模型的候选旋转中心点和候选半径,包括:
获取第一模型顶点的顶点坐标中在各坐标轴上的第一坐标值,以及第二模型顶点的顶点坐标中在各坐标轴上的第二坐标值;
计算在同一坐标轴上的第一坐标值与第二坐标值的均值,得到在各坐标轴上的第三坐标值,得到在各坐标轴上的第三坐标值;
基于在各坐标轴上的第三坐标值对应的位置,确定候选旋转中心;基于在第一坐标轴上的第三坐标值对应的数值,得到候选半径。
在一些实施例中,还包括:
响应于述虚拟对象模型的旋转操作,控制虚拟对象模型基于修正后旋转中心点进行旋转。
本申请实施例通过虚拟对象模型的左右侧顶点的坐标确定临时中心点,计算各顶点与临时中心的距离,结合各顶点的横向坐标,筛选出与临时中心的距离在预设阈值以上,且横轴坐标与临时中心距离超过另一预设阈值的候选顶点,利用候选顶点计算虚拟对象模型在竖直方向上的倾斜度向量,得到垂直于倾斜方向的旋转轴方向;获取与所筛选出的候选顶点相邻的候选模型面,基于候选模型面的法线向量以及面积,计算对虚拟对象模型的临时中心点的修正参数,并基于修正参数对临时中心点的位置进行修正,得到旋转轴位置坐标。以此,可以获得虚拟对象模型的准确轴心位置以及旋转轴方向。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
可选的,如图16所示,计算机设备500还包括:触控显示屏503、射频电路504、音频电路505、输入单元506以及电源507。其中,处理器501分别与触控显示屏503、射频电路504、音频电路505、输入单元506以及电源507电性连接。本领域技术人员可以理解,图16中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
触控显示屏503可用于显示图形用户界面以及接收用户作用于图形用户界面产生的操作指令。触控显示屏503可以包括显示面板和触控面板。其中,显示面板可用于显示由用户输入的信息或提供给用户的信息以及计算机设备的各种图形用户接口,这些图形用户接口可以由图形、引导信息、图标、视频和其任意组合来构成。可选的,可以采用液晶显示器(LCD,Liquid Crystal Display)、有机发光二极管(OLED,Organic Light-EmittingDiode)等形式来配置显示面板。触控面板可用于收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并生成相应的操作指令,且操作指令执行对应程序。可选的,触控面板可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器501,并能接收处理器501发来的命令并加以执行。触控面板可覆盖显示面板,当触控面板检测到在其上或附近的触摸操作后,传送给处理器501以确定触摸事件的类型,随后处理器501根据触摸事件的类型在显示面板上提供相应的视觉输出。在本申请实施例中,可以将触控面板与显示面板集成到触控显示屏503而实现输入和输出功能。但是在某些实施例中,触控面板与显示面板可以作为两个独立的部件来实现输入和输出功能。即触控显示屏503也可以作为输入单元506的一部分实现输入功能。
射频电路504可用于收发射频信号,以通过无线通信与网络设备或其他计算机设备建立无线通讯,与网络设备或其他计算机设备之间收发信号。
音频电路505可以用于通过扬声器、传声器提供用户与计算机设备之间的音频接口。音频电路505可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路505接收后转换为音频数据,再将音频数据输出处理器501处理后,经射频电路504以发送给比如另一计算机设备,或者将音频数据输出至存储器502以便进一步处理。音频电路505还可能包括耳塞插孔,以提供外设耳机与计算机设备的通信。
输入单元506可用于接收输入的数字、字符信息或用户特征信息(例如指纹、虹膜、面部信息等),以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
电源507用于给计算机设备500的各个部件供电。可选的,电源507可以通过电源管理系统与处理器501逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源507还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管图16中未示出,计算机设备500还可以包括摄像头、传感器、无线保真模块、蓝牙模块等,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
由上可知,本实施例提供的计算机设备,可以获取虚拟对象模型中各模型顶点的顶点坐标,并基于顶点坐标,确定在第一坐标轴上坐标值最大的第一模型顶点和坐标值最小的第二模型顶点,其中,虚拟对象模型在一指定平面的形状为近圆形状;根据第一模型顶点与第二模型顶点的顶点坐标,确定虚拟对象模型的候选旋转中心点和候选半径;基于候选旋转中心点的坐标以及候选半径,从各模型顶点中确定候选模型顶点,其中,候选模型顶点为虚拟对象模型在指定平面与候选旋转中心点同轴心的圆对应的模型顶点;基于候选模型顶点确定虚拟对象模型在指定平面的倾斜向量,以及垂直于倾斜向量的旋转轴方向向量,得到虚拟对象模型的旋转轴方向;获取虚拟对象模型的模型面,并从模型面中确定正对候选旋转中心点的候选模型面;基于候选模型面的法线向量和面积,确定候选旋转中心点在旋转轴方向上的位置修正参数,并基于位置修正参数对候选旋转中心点的位置进行修正,得到虚拟对象模型的修正后旋转中心点。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条计算机程序,该计算机程序能够被处理器进行加载,以执行本申请实施例所提供的任一种虚拟对象模型的处理方法中的步骤。例如,该计算机程序可以执行如下步骤:
获取虚拟对象模型中各模型顶点的顶点坐标,并基于顶点坐标,确定在第一坐标轴上坐标值最大的第一模型顶点和坐标值最小的第二模型顶点,其中,虚拟对象模型在一指定平面的形状为近圆形状;
根据第一模型顶点与第二模型顶点的顶点坐标,确定虚拟对象模型的候选旋转中心点和候选半径;
基于候选旋转中心点的坐标以及候选半径,从各模型顶点中确定候选模型顶点,其中,候选模型顶点为虚拟对象模型在指定平面与候选旋转中心点同轴心的圆对应的模型顶点;
基于候选模型顶点确定虚拟对象模型在指定平面的倾斜向量,以及垂直于倾斜向量的旋转轴方向向量,得到虚拟对象模型的旋转轴方向;
获取虚拟对象模型的模型面,并从模型面中确定正对候选旋转中心点的候选模型面;
基于候选模型面的法线向量和面积,确定候选旋转中心点在旋转轴方向上的位置修正参数,并基于位置修正参数对候选旋转中心点的位置进行修正,得到虚拟对象模型的修正后旋转中心点。
在一些实施例中,基于候选旋转中心点的坐标以及候选半径,从各模型顶点中确定候选模型顶点,包括:
根据各模型顶点的顶点坐标和候选旋转中心点的坐标,计算各模型顶点与候选旋转中心点之间的第一距离;
从各模型顶点中确定第一距离大于第一距离阈值的第一候选模型顶点,其中,第一距离阈值基于候选半径确定;
从第一候选模型顶点中确定在第一坐标轴上大于第一坐标阈值,或者小于第二坐标阈值的模型顶点,得到候选模型顶点,其中,第一坐标阈值基于第一模型顶点在第一坐标轴上的坐标值确定,第二坐标阈值基于第二模型顶点在第一坐标轴上的坐标值确定。
在一些实施例中,还包括:
获取预设距离系数,计算预设距离系数与候选半径的乘积,得到第一距离阈值;
获取预设坐标浮动值,计算第一模型顶点在第一坐标轴上的坐标值与预设坐标浮动值的差值,得到第一坐标阈值;
计算第二模型顶点在第一坐标轴上的坐标值与预设坐标浮动值的和值,得到第二坐标阈值。
在一些实施例中,指定平面为第一坐标轴和第二坐标轴构成的平面;
基于候选模型顶点确定虚拟对象模型在指定平面的倾斜向量,以及垂直于倾斜向量的旋转轴方向向量,包括:
从候选模型顶点中确定在第二坐标轴上的坐标值最大的第三模型顶点和坐标值最小的第四模型顶点;
基于第三模型顶点和第四模型顶点的顶点坐标,确定由第四模型顶点指向第三模型顶点的向量,得到倾斜向量;
计算倾斜向量在垂直于指定平面的方向上的垂直向量,得到旋转轴方向向量。
在一些实施例中,在确定候选旋转中心点在旋转轴方向上的位置修正参数之前,方法还包括:
确定候选旋转中心点指向各候选模型顶点的第一向量;
基于第一向量、倾斜向量以及旋转轴方向向量,计算候选旋转中心点指向各候选模型顶点的加权距离;
确定加权距离最大的候选模型顶点,得到第五模型顶点;
获取在第二坐标轴上与第五模型顶点处于候选旋转中心点另一侧的模型顶点,得到第六模型顶点;
基于第五模型顶点与第六模型顶点的顶点坐标对倾斜向量进行修正,得到修正后倾斜向量,并基于倾斜向量对旋转轴方向向量进行修正,得到修正后旋转轴方向向量;
确定候选旋转中心点在旋转轴方向上的位置修正参数,包括:
确定候选旋转中心点在修正后旋转轴方向向量对应的旋转轴方向上的位置修正参数。
在一些实施例中,基于第一向量、倾斜向量以及旋转轴方向向量,计算候选旋转中心点指向各候选模型顶点的加权距离,包括:
基于第一向量与倾斜向量,计算第一向量在倾斜向量方向上的第一分量长度;
基于第一向量与旋转轴方向向量,计算第一向量在旋转轴方向向量方向上的第二分量长度;
基于第一分量长度与第二分量长度,计算候选旋转中心点指向各候选模型顶点的加权距离。
在一些实施例中,基于第一分量长度与第二分量长度,计算候选旋转中心点指向各候选模型顶点的加权距离,包括:
计算第一分量长度与预设权重系数的乘积,得到加权后分量长度;
计算加权后分量长度与第二分量长度的和值,得到加权距离。
在一些实施例中,获取在第二坐标轴上与第五模型顶点处于候选旋转中心点另一侧的模型顶点,得到第六模型顶点,包括:
从候选模型顶点中确定在第二坐标轴上的坐标值大于候选旋转中心的模型顶点,得到第二候选模型顶点;
计算第二候选模型顶点指向第五模型顶点的第二向量;
计算第二向量在倾斜向量方向上的投影长度;
基于旋转轴方向向量与第二向量之间的夹角、投影长度计算各第二候选模型顶点对应的比值参数;
基于比值参数最小的模型顶点,确定第六模型顶点。
在一些实施例中,从模型面中确定正对候选旋转中心点的候选模型面,包括:
从模型面中确定与候选模型顶点相邻的模型面,得到第一候选模型面;
获取第一候选模型面的法线向量;
基于法线向量从第一候选模型面中确定候选模型面。
在一些实施例中,基于法线向量从第一候选模型面中确定候选模型面,包括:
获取从候选旋转中心点指向第一候选模型面的中心点的第三向量;
计算第三向量与法线向量之间的第一夹角;
确定第一夹角不大于预设角度的第一候选模型面,得到候选模型面。
在一些实施例中,基于候选模型面的法线向量和面积,确定候选旋转中心点在旋转轴方向上的位置修正参数,包括:
确定法线向量沿负方向延伸至在第一坐标轴上的坐标值与候选旋转中心点相同的延伸点;
获取从候选旋转中心点指向延伸点的第四向量;
计算第四向量在倾斜向量方向上的第三分量长度;
基于第三分量长度与面积的乘积,得到候选模型面对候选旋转中心点的位置修正参数。
在一些实施例中,基于第三分量长度与面积的乘积,得到候选模型面对候选旋转中心点的位置修正参数,包括:
将每一候选模型面对候选旋转中心点的位置修正参数进行叠加,得到叠加后位置修成参数;
基于位置修正参数对候选旋转中心点的位置进行修正,包括:
计算所有候选模型面的面积之和,得到总面积;
计算叠加后位置修成参数与总面积的比值;
计算候选旋转中心点的坐标与比值的和值,得到修正后的候选旋转中心点的坐标。
在一些实施例中,根据第一模型顶点与第二模型顶点的顶点坐标,确定虚拟对象模型的候选旋转中心点和候选半径,包括:
获取第一模型顶点的顶点坐标中在各坐标轴上的第一坐标值,以及第二模型顶点的顶点坐标中在各坐标轴上的第二坐标值;
计算在同一坐标轴上的第一坐标值与第二坐标值的均值,得到在各坐标轴上的第三坐标值,得到在各坐标轴上的第三坐标值;
基于在各坐标轴上的第三坐标值对应的位置,确定候选旋转中心;
基于在第一坐标轴上的第三坐标值对应的数值,得到候选半径。
在一些实施例中,还包括:
响应于述虚拟对象模型的旋转操作,控制虚拟对象模型基于修正后旋转中心点进行旋转。
本申请实施例通过虚拟对象模型的左右侧顶点的坐标确定临时中心点,计算各顶点与临时中心的距离,结合各顶点的横向坐标,筛选出与临时中心的距离在预设阈值以上,且横轴坐标与临时中心距离超过另一预设阈值的候选顶点,利用候选顶点计算虚拟对象模型在竖直方向上的倾斜度向量,得到垂直于倾斜方向的旋转轴方向;获取与所筛选出的候选顶点相邻的候选模型面,基于候选模型面的法线向量以及面积,计算对虚拟对象模型的临时中心点的修正参数,并基于修正参数对临时中心点的位置进行修正,得到旋转轴位置坐标。以此,可以获得虚拟对象模型的准确轴心位置以及旋转轴方向。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该计算机可读存储介质中所存储的计算机程序,可以执行本申请实施例所提供的任一种虚拟对象模型的处理方法中的步骤,因此,可以实现本申请实施例所提供的任一种虚拟对象模型的处理方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本申请实施例所提供的一种虚拟对象模型的处理方法、装置、计算机可读存储介质及计算机设备进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (17)

1.一种虚拟对象模型的处理方法,其特征在于,所述方法包括:
获取虚拟对象模型中各模型顶点的顶点坐标,并基于所述顶点坐标,确定在第一坐标轴上坐标值最大的第一模型顶点和坐标值最小的第二模型顶点,其中,所述虚拟对象模型在一指定平面的形状为近圆形状;
根据所述第一模型顶点与所述第二模型顶点的顶点坐标,确定所述虚拟对象模型的候选旋转中心点和候选半径;
基于所述候选旋转中心点的坐标以及所述候选半径,从所述各模型顶点中确定候选模型顶点,其中,所述候选模型顶点为所述虚拟对象模型在所述指定平面与所述候选旋转中心点同轴心的圆对应的模型顶点;
基于所述候选模型顶点确定所述虚拟对象模型在所述指定平面的倾斜向量,以及垂直于所述倾斜向量的旋转轴方向向量,得到所述虚拟对象模型的旋转轴方向;
获取所述虚拟对象模型的模型面,并从所述模型面中确定正对所述候选旋转中心点的候选模型面;
基于所述候选模型面的法线向量和面积,确定所述候选旋转中心点在所述旋转轴方向上的位置修正参数,并基于所述位置修正参数对所述候选旋转中心点的位置进行修正,得到所述虚拟对象模型的修正后旋转中心点。
2.根据权利要求1所述的方法,其特征在于,所述基于所述候选旋转中心点的坐标以及所述候选半径,从所述各模型顶点中确定候选模型顶点,包括:
根据各模型顶点的顶点坐标和所述候选旋转中心点的坐标,计算各模型顶点与所述候选旋转中心点之间的第一距离;
从所述各模型顶点中确定第一距离大于第一距离阈值的第一候选模型顶点,其中,所述第一距离阈值基于所述候选半径确定;
从所述第一候选模型顶点中确定在所述第一坐标轴上大于第一坐标阈值,或者小于第二坐标阈值的模型顶点,得到所述候选模型顶点,其中,所述第一坐标阈值基于所述第一模型顶点在所述第一坐标轴上的坐标值确定,所述第二坐标阈值基于所述第二模型顶点在所述第一坐标轴上的坐标值确定。
3.根据权利要求2所述的方法,其特征在于,还包括:
获取预设距离系数,计算所述预设距离系数与所述候选半径的乘积,得到所述第一距离阈值;
获取预设坐标浮动值,计算所述第一模型顶点在所述第一坐标轴上的坐标值与所述预设坐标浮动值的差值,得到所述第一坐标阈值;
计算所述第二模型顶点在所述第一坐标轴上的坐标值与所述预设坐标浮动值的差值,得到所述第二坐标阈值。
4.根据权利要求1所述的方法,其特征在于,所述指定平面为所述第一坐标轴和第二坐标轴构成的平面;
所述基于所述候选模型顶点确定所述虚拟对象模型在所述指定平面的倾斜向量,以及垂直于所述倾斜向量的旋转轴方向向量,包括:
从所述候选模型顶点中确定在所述第二坐标轴上的坐标值最大的第三模型顶点和坐标值最小的第四模型顶点;
基于所述第三模型顶点和所述第四模型顶点的顶点坐标,确定由所述第四模型顶点指向所述第三模型顶点的向量,得到所述倾斜向量;
计算所述倾斜向量在垂直于所述指定平面的方向上的垂直向量,得到所述旋转轴方向向量。
5.根据权利要求4所述的方法,其特征在于,在所述确定所述候选旋转中心点在所述旋转轴方向上的位置修正参数之前,所述方法还包括:
确定所述候选旋转中心点指向各候选模型顶点的第一向量;
基于所述第一向量、所述倾斜向量以及所述旋转轴方向向量,计算所述候选旋转中心点指向各候选模型顶点的加权距离;
确定加权距离最大的候选模型顶点,得到第五模型顶点;
获取在所述第二坐标轴上与所述第五模型顶点处于所述候选旋转中心点另一侧的模型顶点,得到第六模型顶点;
基于所述第五模型顶点与所述第六模型顶点的顶点坐标对所述倾斜向量进行修正,得到修正后倾斜向量,并基于所述倾斜向量对所述旋转轴方向向量进行修正,得到修正后旋转轴方向向量;
所述确定所述候选旋转中心点在所述旋转轴方向上的位置修正参数,包括:
确定所述候选旋转中心点在所述修正后旋转轴方向向量对应的旋转轴方向上的位置修正参数。
6.根据权利要求5所述的方法,其特征在于,所述基于所述第一向量、所述倾斜向量以及所述旋转轴方向向量,计算所述候选旋转中心点指向各候选模型顶点的加权距离,包括:
基于所述第一向量与所述倾斜向量,计算所述第一向量在所述倾斜向量方向上的第一分量长度;
基于所述第一向量与所述旋转轴方向向量,计算所述第一向量在所述旋转轴方向向量方向上的第二分量长度;
基于所述第一分量长度与所述第二分量长度,计算所述候选旋转中心点指向各候选模型顶点的加权距离。
7.根据权利要求6所述的方法,其特征在于,所述基于所述第一分量长度与所述第二分量长度,计算所述候选旋转中心点指向各候选模型顶点的加权距离,包括:
计算所述第一分量长度与预设权重系数的乘积,得到加权后分量长度;
计算所述加权后分量长度与所述第二分量长度的和值,得到所述加权距离。
8.根据权利要求5所述的方法,其特征在于,所述获取在所述第二坐标轴上与所述第五模型顶点处于所述候选旋转中心点另一侧的模型顶点,得到第六模型顶点,包括:
从所述候选模型顶点中确定在所述第二坐标轴上的坐标值大于所述候选旋转中心的模型顶点,得到第二候选模型顶点;
计算所述第二候选模型顶点指向所述第五模型顶点的第二向量;
计算所述第二向量在所述倾斜向量方向上的投影长度;
基于所述旋转轴方向向量与所述第二向量之间的夹角、所述投影长度计算各第二候选模型顶点对应的比值参数;
基于所述比值参数最小的模型顶点,确定所述第六模型顶点。
9.根据权利要求1所述的方法,其特征在于,所述从所述模型面中确定正对所述候选旋转中心点的候选模型面,包括:
从所述模型面中确定与所述候选模型顶点相邻的模型面,得到第一候选模型面;
获取所述第一候选模型面的法线向量;
基于所述法线向量从所述第一候选模型面中确定所述候选模型面。
10.根据权利要求9所述的方法,其特征在于,所述基于所述法线向量从所述第一候选模型面中确定所述候选模型面,包括:
获取从所述候选旋转中心点指向所述第一候选模型面的中心点的第三向量;
计算所述第三向量与所述法线向量之间的第一夹角;
确定所述第一夹角不大于预设角度的第一候选模型面,得到所述候选模型面。
11.根据权利要求10所述的方法,其特征在于,所述基于所述候选模型面的法线向量和面积,确定所述候选旋转中心点在所述旋转轴方向上的位置修正参数,包括:
确定所述法线向量沿负方向延伸至在所述第一坐标轴上的坐标值与所述候选旋转中心点相同的延伸点;
获取从所述候选旋转中心点指向所述延伸点的第四向量;
计算所述第四向量在所述倾斜向量方向上的第三分量长度;
基于所述第三分量长度与所述面积的乘积,得到所述候选模型面对所述候选旋转中心点的位置修正参数。
12.根据权利要求11所述的方法,其特征在于,所述基于所述第三分量长度与所述面积的乘积,得到所述候选模型面对所述候选旋转中心点的位置修正参数,包括:
将每一候选模型面对所述候选旋转中心点的位置修正参数进行叠加,得到叠加后位置修成参数;
所述基于所述位置修正参数对所述候选旋转中心点的位置进行修正,包括:
计算所有候选模型面的面积之和,得到总面积;
计算所述叠加后位置修成参数与所述总面积的比值;
计算所述候选旋转中心点的坐标与所述比值的和值,得到修正后的候选旋转中心点的坐标。
13.根据权利要求1所述的方法,其特征在于,所述根据所述第一模型顶点与所述第二模型顶点的顶点坐标,确定所述虚拟对象模型的候选旋转中心点和候选半径,包括:
获取所述第一模型顶点的顶点坐标中在各坐标轴上的第一坐标值,以及所述第二模型顶点的顶点坐标中在各坐标轴上的第二坐标值;
计算在同一坐标轴上的第一坐标值与第二坐标值的均值,得到在各坐标轴上的第三坐标值,得到在各坐标轴上的第三坐标值;
基于在各坐标轴上的第三坐标值对应的位置,确定所述候选旋转中心;
基于在所述第一坐标轴上的第三坐标值对应的数值,得到所述候选半径。
14.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于对所述虚拟对象模型的旋转操作,控制所述虚拟对象模型基于所述修正后旋转中心点进行旋转。
15.一种虚拟对象模型的处理装置,其特征在于,所述装置包括:
第一获取单元,用于获取虚拟对象模型中各模型顶点的顶点坐标,并基于所述顶点坐标,确定在第一坐标轴上坐标值最大的第一模型顶点和坐标值最小的第二模型顶点,其中,所述虚拟对象模型在一指定平面的形状为近圆形状;
第一确定单元,用于根据所述第一模型顶点与所述第二模型顶点的顶点坐标,确定所述虚拟对象模型的候选旋转中心点和候选半径;
第二确定单元,用于基于所述候选旋转中心点的坐标以及所述候选半径,从所述各模型顶点中确定候选模型顶点,其中,所述候选模型顶点为所述虚拟对象模型在所述指定平面与所述候选旋转中心点同轴心的圆对应的模型顶点;
第三确定单元,用于基于所述候选模型顶点确定所述虚拟对象模型在所述指定平面的倾斜向量,以及垂直于所述倾斜向量的旋转轴方向向量,得到所述虚拟对象模型的旋转轴方向;
第二获取单元,用于获取所述虚拟对象模型的模型面,并从所述模型面中确定正对所述候选旋转中心点的候选模型面;
第四确定单元,用于基于所述候选模型面的法线向量和面积,确定所述候选旋转中心点在所述旋转轴方向上的位置修正参数,并基于所述位置修正参数对所述候选旋转中心点的位置进行修正,得到所述虚拟对象模型的修正后旋转中心点。
16.一种计算机设备,包括存储器,处理器及存储在存储器上并在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如权利要求1至14任一项所述的虚拟对象模型的处理方法。
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至14任一项所述的虚拟对象模型的处理方法。
CN202310179596.5A 2023-02-22 2023-02-22 虚拟对象模型的处理方法、装置、计算机设备及存储介质 Pending CN116342846A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310179596.5A CN116342846A (zh) 2023-02-22 2023-02-22 虚拟对象模型的处理方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310179596.5A CN116342846A (zh) 2023-02-22 2023-02-22 虚拟对象模型的处理方法、装置、计算机设备及存储介质

Publications (1)

Publication Number Publication Date
CN116342846A true CN116342846A (zh) 2023-06-27

Family

ID=86883118

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310179596.5A Pending CN116342846A (zh) 2023-02-22 2023-02-22 虚拟对象模型的处理方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN116342846A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116797769A (zh) * 2023-08-23 2023-09-22 腾讯科技(深圳)有限公司 一种数据处理方法、装置、计算机设备以及可读存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116797769A (zh) * 2023-08-23 2023-09-22 腾讯科技(深圳)有限公司 一种数据处理方法、装置、计算机设备以及可读存储介质
CN116797769B (zh) * 2023-08-23 2023-11-21 腾讯科技(深圳)有限公司 一种数据处理方法、装置、计算机设备以及可读存储介质

Similar Documents

Publication Publication Date Title
EP3786892B1 (en) Method, device and apparatus for repositioning in camera orientation tracking process, and storage medium
US10713812B2 (en) Method and apparatus for determining facial pose angle, and computer storage medium
US9779508B2 (en) Real-time three-dimensional reconstruction of a scene from a single camera
US20200334913A1 (en) In situ creation of planar natural feature targets
CN110322500A (zh) 即时定位与地图构建的优化方法及装置、介质和电子设备
CN110160502A (zh) 地图要素提取方法、装置及服务器
US20190304064A1 (en) Customizable image cropping using body key points
CN108986801A (zh) 一种人机交互方法、装置及人机交互终端
CN103577789B (zh) 检测方法和装置
CN110599593B (zh) 数据合成的方法、装置、设备及存储介质
CN108780577A (zh) 图像处理方法和设备
CN116342846A (zh) 虚拟对象模型的处理方法、装置、计算机设备及存储介质
CN113280752A (zh) 一种凹槽深度测量方法、装置、系统及激光测量设备
CN111680758B (zh) 图像训练样本生成方法和装置
CN114782646A (zh) 房屋模型的建模方法、装置、电子设备和可读存储介质
CN108844529A (zh) 确定姿态的方法、装置及智能设备
CN115131437A (zh) 位姿估计方法及相关模型的训练方法、装置、设备、介质
CN100416466C (zh) 单目视觉半实物仿真系统及方法
CN110232710A (zh) 基于三维相机的物品定位方法、系统及设备
CN112891954B (zh) 虚拟对象的模拟方法、装置、存储介质及计算机设备
CN111928861B (zh) 地图构建方法及装置
CN114416764A (zh) 地图更新方法、装置、设备及存储介质
CN113350792B (zh) 虚拟模型的轮廓处理方法、装置、计算机设备及存储介质
CN116137025A (zh) 视频图像矫正方法及装置、计算机可读介质和电子设备
CN111197975A (zh) 一种基于Rodrigues的影像姿态估计方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination