Cocos技术派 | 3d人物渲染详细教程

文章目录

    • 前言
    • 3d系统基础
    • FBX模型导入
    • 配置模型参数
    • 相机分组
    • 2D相机设置
    • 添加UI节点
    • 添加3D节点
    • 设置灯光
    • 设置平台接收阴影
    • 设置3D相机
    • 3D场景编辑器
    • 设置模型材质
    • 设置模型产生阴影
    • 设置相机位置
    • 播放动画
    • 增加3D动作

本文假设你是一个新手,按照本文的操作,可以跑起来一个3D人物模型,附带两个跳舞的动画可以欣赏。

首先说明一点,目前2.1.1的3d功能还不完善,商用项目请不要升级。
本教程和源码献给先吃螃蟹的同学。

前言

昨天我把Cocos Creator最新2.1.1 版的3D demo放出来了,但是官方文档比较欠缺,论坛也缺少相关文档,这里就把过程详细写一下,也算是一个吃螃蟹的新姿势,希望对大家有用。

3d系统基础

在 Creator 2.1 版本中,支持了 3D 模型渲染、3D Camera、3D 骨骼动画 等 3D 特性,同时编辑器原生支持解析 FBX 格式的 3D 模型文件,不需要额外的导入流程。
详细见官方的文档。
下面开始讲解如何导入FBX格式的3D模型。

FBX模型导入

这里讲解带贴图,带动作的FBX模型。

  • 在资源管理器新建一个文件夹DanceMode
  • 将贴图文件夹textures和FBX模型文件同时拖入DanceMode目录下
    在这里插入图片描述

配置模型参数

  • 点击资源管理器里面的模型women,在属性面板设置缩放系数400,点击应用按钮
    在这里插入图片描述
    在这里插入图片描述
  • 点击属性检查器里面的动画菜单,预先计算骨骼矩阵打上勾,点击应用按钮
    在这里插入图片描述
    到这里模型导入,配置完成,现在就可以开始使用了。

相机分组

因为要加载3d模型,又有2d的button,所以既有3d,又有2d,需要分组渲染,2d渲染ui,3d相机渲染模型。

在菜单项目–>项目设置—>分组管理里面新增一个分组ui

2D相机设置

将默认层级管理器里面的节点都删掉,保留一个Main Camera。

  • 将Main Camera的Group设置为ui
  • 将Main Camera的Depth设为0,cullingMask勾上ui,clearFlags去掉Color
    在这里插入图片描述

添加UI节点

  • 添加两个按钮samba和macarena,代码桑巴舞和马卡雷纳舞
  • samba按钮的x位置-400,macarena的x设为400,两个按钮y坐标都为0
  • 给按钮Group设置为ui

添加3D节点

  • 在层级管理器,添加一个空节点和Canvas平级,命名为root,在属性面板点击3D,这样就变成了一个3D节点
  • 给root节点添加灯光节点,命名为Light
    在这里插入图片描述
  • 在root下添加平台,命名为Plane
    在这里插入图片描述
  • 在root下添加摄像机,命名为3D Camera,在属性面板上点击3D将其变为3d节点
    在这里插入图片描述
  • 将资源管理下的模型文件women,拖入root下,引擎会自动解析模型
    在这里插入图片描述

设置灯光

点击Light节点,设置属性说明:

  • Type:光源类型,选这DIRECTIONAL,平行光源
  • Intensity:光照强度
  • Shadow Type:阴影类型,选HARD,硬阴影
  • Shadow Resolution:阴影分辨率,值越大阴影越清晰。在 Shadow Type 不设为 NONE 时生效
  • Shadow Darkness:阴影暗度,值越大阴影越暗。在 Shadow Type 不设为 NONE 时生效
  • Shadow Min Depth:光源产生阴影的最小距离,如果物体跟光源的距离小于最小距离则不会产生阴影。在 Shadow Type 不设为 NONE 时生效
  • Shadow Max Depth:光源产生阴影的最大距离,如果物体跟光源的距离大于最大距离则不会产生阴影。在 Shadow Type 不设为 NONE 时生效
  • Shadow Depth Scale:光源深度缩放值,值越大阴影越暗。在 Shadow Type 不设为 NONE 时生效
  • Shadow Frustum Size:平行光中视锥体的大小,决定平行光产生阴影的范围。仅在 Shadow Type 不设为 NONE,Type 设为 DIRECTIONAL 时生效
    在这里插入图片描述

设置平台接收阴影

为了产生阴影,必须设置Plane接受阴影,勾上Receive Shadows
在这里插入图片描述

设置3D相机

3D相机,主要有两个属性要设置

  • cullingMask,只勾选default
  • 取消正交投影,设置视野大小
    在这里插入图片描述

3D场景编辑器

点击场景编辑器上面的3D按钮,场景编辑器就切换为3D模式,如下图。
在这里插入图片描述
使用alt+左键,就可以改变移动视野,滚轮缩放,右键旋转视角

设置模型材质

  • 点击模型文件下的材质球,查看属性面板,默认是使用冯氏材质
    在这里插入图片描述
    在这里插入图片描述
  • 设置材质贴图,将对应贴图拖到对应框内,有3个贴图,法线贴图,漫反射贴图,高光贴图
    在这里插入图片描述

设置模型产生阴影

  • 点击层级管理器里面的节点Kachujin,查看属性面板
    在这里插入图片描述
  • shadow Casting Mode设置为On,这样可以在Plane上看见模型的阴影了
    在这里插入图片描述

设置相机位置

  • 选中3dCamera节点,可以看到场景中相机有3个轴,拖拉可以改变相机位置
    在这里插入图片描述
  • 选中菜单下面的工具条,第二个旋转工具,摄像机会出现三个带颜色的圆,是用来调整节点3个方向的旋转角的,鼠标放在圆上拖动,就可以改变摄像机的旋转角
    在这里插入图片描述
  • 菜单面板下面,开启游戏预览,可以查看3d预览
    在这里插入图片描述

播放动画

  • 层级管理器选中模型根节点RootNode,可以看到属性面板有一个Clips数组,将其值改为1
  • 将资源管理器下,模型文件里面的动画资源拖入对应的框,playonload勾上
    在这里插入图片描述
    到这里就操作完了,选择浏览器运行,就能看到人物跳舞的画面了。
    在这里插入图片描述

增加3D动作

目前2.1.1版本的动作系统,只有Rotation有了3D的,其他的动作都还没有支持3D,应该在下一个版本支持。我们先试试跳一跳的动作。

  • 增加两个按钮,取名jumpLeft,jumpRight
  • 脚本上增加两个回调,代码如下
    jumpLeft() {this.node.runAction(cc.jumpBy(1, -400, 0, 300, 2));}jumpRight() {this.node.runAction(cc.jumpBy(1, 400, 0, 300, 2));}

效果如下:
在这里插入图片描述
源码地址:https://github.com/fylz1125/3Demo
好了,就写这么多了,欢迎关注我的公众号【Cocos Creator研究笔记】,可以下载最新源码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/45596.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

xmas cissp_Sourcehunt PHP Xmas 2015:发出请求请求的礼物!

xmas cissp Before we round the year up, there’s one more issue of Sourcehunt to publish, as a small Xmas gift to all the underrepresented open source projects out there. Let’s get everyone some more contributors, shall we? 在整年之前,还有一期…

在计算机上写一封邮件的英文,一封邮件英文怎么写

1. 用英语写的一封电子邮件 Dear David, Hello, Its very gald to recive your e-mail.You told me you will come to China to study.Its great!I think you must want to know how to learn Chinese well.OK,let me tell you.First,you should listen to teachers carefully.…

几种常用英文信件范文

几种常用英文信件范文 1)感谢信Letter of thanks 2)祝贺信 Letter of greetings 3)邀请信 Letter of invitations 4)一般信件 Common letters 5)商业信件 Business letters 6)求学信 Letters of Applying…

python自动发送邮件自定义邮件发件人和收件人的显示内容

#自定义处理邮件收发地址的显示内容 def _format_addr(s): name,addr parseaddr(s) print name print addr #将邮件的name转换成utf-8格式,addr如果是unicode,则转换utf-8输出,否则直接输出addr return formataddr((\ Header(name,utf-8).en…

用python实现邮件的自动发送

首先开启自己的邮箱SMTP服务(绑定自己的手机,但记住密码不要泄露,防止别人拿自己邮箱发送别的内容) 这里我们拿163邮箱举例:Smtp服务器地址 和 端口 Ssl: smtp.163.com:465 非ssl &#xff1a…

使用qq邮箱作为程序客户端自动发送邮件

在用户一些软件或自己的java程序是,需要配置发送邮件 这里的发送人就填写具体的qq邮箱,但是下面的smtp密码就不是对应的qq密码了,这里需要的是授权码。我们需要去qq邮箱申请开启”IMAP/SMTP服务” 如何使用IMAP服务? IMAP是什么…

【原创】PHP 邮件自动发送(QQ邮箱)

本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删!环境 win10phpstrom2020.1PHP 7.0QQ邮箱开通SMTP服务 1.登录 QQ 邮箱 2.开启 SMTP 服务 3.发送短信

控制飞书客户端自动发邮件

自动化飞书邮箱网页版应该有不少例子,可以使用Clicknium、Selenium,Playwright这些工具实现。这次使用[Clicknium](https://www.clicknium.com/)来介绍一下桌面客户端的自动化,进一步讲解如果利用Python实现桌面端自动化。想要写一个能稳定运…

利用Python自动发送邮件

自动发送邮件 我们把报表做出来以后一般都是需要发给别人查看,对于一些每天需要发的报表或者是需要一次发送多份的报表,这个时候可以考虑借助Python来自动发送邮件。 使用邮箱的第一步 一般我们在使用QQ邮箱、163邮箱、126邮箱等这些比较常用的邮箱时…

Python实现自动写邮件

Python实现自动写邮件 上星期接到任务要完成一个自动写邮件的脚本,基本功能是每两小时执行一次程序跑出统计表格,并将统计表格的summary发送到领导的邮箱。由于公司是做数字货币的,每两小时实时监测策略交易情况较为必要。下面来实现自动写邮…

day06 代码实现邮件自动发送

目录 一. 邮件发送基本流程二. 添加文件附件三. 发送富文本四. 发送图片五. 认识前端HTML ————————— 获取邮箱授权码————————— 一. 邮件发送基本流程 生活中发送邮件的步骤: 注册邮箱信息 —> 打开登录邮箱的网址 —> 输入账号密码完成登录…

Python实现自动发送邮件 - 自动抓取Blog中留言的邮箱并发送邮件

Python实现自动发送邮件 - 自动抓取博客/网站中留言的邮箱并发送邮件 背景脚本要解决的问题:实现方法代码及解析1. AutoSendEmailByBlogComments.py2. FileOperation.py3. SendEmail.py 备注:邮箱SMTP设置其它好玩的Python脚本 博主热门文章推荐&#xf…

python自动发送邮件实现

目录 1 前言2 准备工作2.1 电子邮件的基础知识。2.2 python邮件库2.3 邮箱设置 3 python实现邮件自动发送3.1 SMTP()和send()方法介绍3.2 python实现实例 参考信息 1 前言 python功能强大,可以实现我们日常办公的很多任务。诸如批量处理word,excel,pdf等等文件&…

VBA使用Outlook自动发送邮件

↓↓↓欢迎关注我的公众号,在这里有数据相关技术经验的优质原创文章↓↓↓ 基础版本–能自动发送就是成功 利用VBA使用Outlook自动发送邮件,代码及注释如下: Sub send_mail()Dim ObjOL As Object Dim itmNewMail As Outlook.MailItem Dim…

Python实现自动发送邮件

最近比较闲的慌,在自己学习Python爬虫,学到了用Python发送邮件,觉得这个可能以后比较实用。以下项目用QQ邮箱为例。 需要用到的模块: smtplib,email 提醒!QQ 邮箱一般默认关闭SMTP服务,我们得…

chatgpt赋能python:Python写模拟器脚本

Python写模拟器脚本 Python是一种强大的编程语言,适用于各种任务,包括模拟器编写。模拟器是一种软件程序,能够模拟硬件或软件系统的行为。这篇文章将介绍Python编写模拟器脚本时需要关注的一些关键点。 为什么选择Python编写模拟器脚本 Py…

chatgpt赋能python:Python在线模拟器:让编程变得更加轻松

Python 在线模拟器:让编程变得更加轻松 介绍 Python 在线模拟器是一个非常实用的工具,它可以帮助用户直接在浏览器中测试和运行 Python 代码。在线模拟器的出现简化了编程过程,不需要安装 Python IDE 等软件,只需要有一台连接互…

老子简介(函谷关道德经)

老子简介 老子(约前580~前500年之后),姓李名耳。字聃,春秋时期楚国人,道家学派创始人。曾在东周国都洛邑(今河南洛阳)任守藏史(相当于国家图书馆馆长)。他博学多才,晚年乘青牛西去,在函谷关前写成《道德经》。 老子主…

【天天读书】《道德经》第十六章

《道德经》第十六章 [原文] 致虚极,守静笃①; 万物并作②,吾以观复③。 夫物芸芸④,各复归其根。 归根⑤曰静,静曰⑥复命⑦。 复命曰常⑧,知常曰明⑨。 不知常,妄作凶。 知常容⑩,容乃公, 公乃全⑾,全乃天⑿, 天乃道,道乃久, 没身不殆。 [译文] 尽力…

论文学习——VideoGPT

论文学习——VideoGPT: Video Generation using VQ-VAE and Transformers 原文链接:https://arxiv.org/abs/2104.10157 1. 设计思路 不同种类的生成模型在一下多个维度各有权衡:采样速度、样本多样性、样本质量、优化稳定性、计算需求、评估难易程度等…