做虚拟人物的几版本服饰相关优化

版本一:服饰的雏形。

这个版本是根据网上的板片做的,实际上我对做衣服没什么概念,因此就是照着猫画虎罢了。庆幸之前学过 MD 的基础用法,反正我就是把衣服缝上了。

我用的是版本 10 这个版本还可以,比之前用 8 给那个小龙做衣服好多了,他至少不会在模拟的时候衣料计算成一团。也许是电脑比那个时候强点,变量无法固定,不得而知了。

这个版本的服饰有几个不好的地方:

第一、衣服太紧绷了,紧绷到到处起褶子。完全崩在身上,然后就是领子那块和肩颈那块反光条都撑得分家了。裤子也是崩在大腿上。

第二、裤子有点往下掉,在衣服里面我做第二版的时候都没发现,只是觉得裤子长。

第三、袖子短,因为是礼仪站姿,双手交叉放在身前,胳膊露着一块,不是很好看。

第四、动作太耿直了,反正就是上身胳膊摆的太开,双手没有做到叠放。腿没有并拢站直。

版本二、服饰大小做调整

第一版服饰我导出了,放在我之前的身体模型上面认真的比对了,确实有点糊弄事,我感觉就算做出来也没啥成就感,干脆就回去调整衣服。

这一版本我做了这些修改:

第一、整体放大了上衣,上衣是等比放大。

第二、裤子我就除去腰带左右选中拉伸了,然而、省事是会付出代价的,这为后面留下了隐患。

版本三、调整了裤子的裤腿宽度

为什么做这一步呢,我感觉双腿分的太开了。我是真的懒,一开始我合并了衣服和腿,我用雕刻往里慢慢刷,因为我总觉得身体被衣服盖着看不到。但是雕刻笔刷刷过之后就很就很难看,腿型特别不自然。所以我就想着把鞋子往里放放,然后就去改裤腿宽度,但是后面事实告诉我,懒一步都偷不了。

这个版本我就改了裤腿宽度,还有第二步修改裤子留下的锅。我的裤子走线是有弧度的,左右拉伸导致它就像个喇叭裤。我就重新单独调整曲线,但是怎么调整都无法完全一致了。就只能是肉眼调整。目前我已经回忆不起来我可能还调整了什么小地方了。但我改完后想着模型不够圆滑,粒子不够多,结果我就打开了光滑虚拟模特,又给了 5 的粒子间距,然后模拟穿衣。

这些调整导致了特别卡,我一看卡我就干别的去了,一做就是到下班,下班前关闭了模拟,导出了衣服。

版本四、调整模型的动作

昨天的导出衣服模型有多大?1.26 G 。为啥,模拟的太久了,衣服很细腻很光滑。但是,我打开就用了三五分钟,以后一定保持在两分钟就行了。

然后我给衣服放进去看了看,上了材质,渲染出来。仔细端详感觉太呆板了,动作很丑。拿出最初的 mixamo 给我绑定的骨骼,继续手动调整动作,所有动作都清空重新开始,直到满意为止。

然后我让这个模型进去替换,我发现还是和之前的不一致,不识别了,还好动作改动幅度不是很大,我就直接虚拟模特手动替换,手动穿。所有板片都前后分开,然后重新模拟,有一些穿模,但是我都拽好了,还好这M1CPU高,不算卡。

这个版本的裤子我没留意,他掉到脚面了,我导出来后面改也挺痛苦的,因为和鞋子穿模了。

版本五、调整中线、反光条宽度位置,双胸部兜位置。

其实上一版本的没啥大问题了,只不过前面左右板片对称的,然后盖住拉链的那块布就直接接在右侧板片的左面了,这直接导致了盖住拉链的那块布不在中间。

我中午睡觉的时候就在想还差这点事吗,就想着怎么改板片的问题了。实际上就是把前面的衣服右侧所有板片的最左边的点往右移动三个右箭头,左边的所有板片则是相反的操作。

然后我感觉反光条太粗太靠上,改了反光条的高度,以及位置。

左右的兜都太靠下靠两侧了,往上移动,往内移动,改了下摆的长度,之前的有点长了,下面的兜也都改了高度,裤子之前说掉到脚面了,我就先冻结隐藏衣服,重新穿戴模拟了裤子。

就是根据实际效果反复调整。最后,效果还可以。

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现虚拟人物换装的方法一般是将虚拟人物的模型和材质分开处理,然后通过替换模型和材质来实现换装效果。下面是一个简单的示例代码,演示如何实现虚拟人物换装: ```javascript // 加载虚拟人物的模型和材质 var modelLoader = new THREE.FBXLoader(); modelLoader.load('model.fbx', function (model) { var materialLoader = new THREE.TextureLoader(); materialLoader.load('material.png', function (material) { // 创建虚拟人物的模型和材质 var originalModel = new THREE.SkinnedMesh(model.geometry, new THREE.MeshStandardMaterial({ map: material })); // 将虚拟人物的模型添加到场景中 scene.add(originalModel); // 加载换装的模型和材质 var newModelLoader = new THREE.FBXLoader(); newModelLoader.load('new_model.fbx', function (newModel) { var newMaterialLoader = new THREE.TextureLoader(); newMaterialLoader.load('new_material.png', function (newMaterial) { // 创建换装的模型和材质 var newModel = new THREE.SkinnedMesh(newModel.geometry, new THREE.MeshStandardMaterial({ map: newMaterial })); // 将虚拟人物的材质替换为换装的材质 originalModel.material = newModel.material; // 将虚拟人物的模型替换为换装的模型 originalModel.geometry = newModel.geometry; originalModel.skeleton = newModel.skeleton; // 更新虚拟人物的骨骼 originalModel.skeleton.bones.forEach(function (bone, index) { bone.position.copy(newModel.skeleton.bones[index].position); bone.quaternion.copy(newModel.skeleton.bones[index].quaternion); }); }); }); }); }); ``` 在这个示例中,我们首先加载虚拟人物的模型和材质,然后创建虚拟人物的模型和材质,并将其添加到场景中。接着,我们加载换装的模型和材质,创建换装的模型和材质,并将其应用到虚拟人物的模型上,从而实现了虚拟人物的换装效果。 需要注意的是,这个示例只是一个简单的演示,实际使用时还需要根据具体情况进行调整和优化。例如,如果虚拟人物的模型和材质比较复杂,可能需要使用更高级的技术来实现换装效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值