threejs + 3dmax 烘培模型展示效果

9 篇文章 0 订阅
7 篇文章 1 订阅

选择一个模型

选择了一个模型,在three-editor中展示如下
初始化模型

烘培

选择一个建模软件来对模型进行烘培,这里我选择了3dmax来进行烘培,也可以使用blender,c4d等软件来进行烘培。
模型一共有4个mesh,mesh
我使用了vray灯光来对场景进行打光,3dmax中场景渲染的结果
渲染效果
我们开始对物体进行烘培
选择渲染=》渲染到纹理

在这里插入图片描述

在这里插入图片描述
1、选择需要烘培的mesh
2、使用第二uv来存储烘培的uv信息
3、进行展开uv
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
选择需要进行的烘培纹理选项,一般选择照明贴图或者完成贴图
在这里插入图片描述
点击渲染,然后就会得到对应的贴图
在这里插入图片描述
重复几次,把需要烘培的mesh都烘培一边。

会得到一个有烘培贴图的效果
在这里插入图片描述

代码

逻辑为: 把两个uv的材质纹理叠加起来。 可以调整两个纹理的比重。或者其他的计算方法。
也可以使用多个uv多个纹理来进行提升效果。

		mat.onBeforeCompile = function (shader) {
			shader.uniforms.u_map1 = {
				value: opts.uv_map1
			};
			const fragment = `varying vec2 v_uv2;
uniform sampler2D u_map1;
void main() {
        `;
			const fragmentColor = `
	vec4 d_map1 = texture2D(u_map1, v_uv2); 
    gl_FragColor = vec4(outgoingLight * d_map1.rgb, diffuseColor.a);
        `;
			shader.fragmentShader = shader.fragmentShader.replace("void main() {", fragment)
			shader.fragmentShader = shader.fragmentShader.replace("gl_FragColor = vec4( outgoingLight, diffuseColor.a );", fragmentColor);
			const vertex = `varying vec2 v_uv2;
attribute vec2 uv2; 
void main() {
	v_uv2 = uv2;
`;
			shader.vertexShader = shader.vertexShader.replace("void main() {", vertex);
		}
  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸡饶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值