CocosCreater 教程(中)

2023-10-29

1.图形渲染

1.1 渲染管线

RenderPipeline 用于控制场景的渲染流程,包括光照管理、物体剔除、渲染物体排序、渲染目标切换等。

引擎默认使用 前向渲染管线,前向渲染管线的执行流程如下图所示:

1.2 相机

游戏中的相机是用来捕捉场景画面的主要工具。我们通过调节相机相关参数来控制可视范围的大小,在 Cocos Creator 编辑器中相机呈如下表示:

相机的可视范围是通过 6 个平面组成一个 视锥体(Frustum) 构成,近裁剪面(Near Plane) 和 远裁剪面(Far Plane) 用于控制近处和远处的可视距离与范围,同时它们也构成了视口的大小。

1.3 光照

Creator 中光照的实现模拟了光对真实世界的影响。在场景中添加光源可以使场景产生相应的光照和阴影效果,获得更好的视觉效果。

1.色温(ColorTemperature)

真实世界环境中,一天不同时段的环境色温也会动态发生变化:

2.平行光

平行光又称为方向光(Directional Light),是最常用的一种光源,模拟了无限远处的光源发出的光线,常用于实现太阳光。

3.球面光

球面光会向所有方向均匀地发散光线,接近于蜡烛产生的光线。物体受到的光照强度会随着跟光源距离的增大而减弱,当距离超过设置的光照影响范围,则光照强度为 0。

在实际应用中可用于模拟火把、蜡烛、灯泡等光源,照亮四周一定距离内的环境。

4.聚光灯

聚光灯 是由一个点向一个方向发射一束锥形光线,类似于手电筒或舞台照明灯产生的光线。

5.环境光

在生活中,错综复杂的光线与凹凸不平的物体表面相互反射,使得整个环境都被照亮,仿佛被一层光均匀笼罩,这个光一般称为 环境光,也称为 漫射环境光

6.阴影

在 3D 世界中,光与影一直都是极其重要的组成部分,它们能够丰富整个环境,质量好的阴影可以达到以假乱真的效果,并且使得整个世界具有立体感。

7.光照贴图

烘焙系统会对光源稳定的静态物体所受到的光照和阴影等进行预先计算,计算产生的结果存放在一张纹理贴图中,这张贴图我们称之为 光照贴图

生成的光照贴图 Creator 会在运行时自动处理并使用。在光源固定的场景中,使用光照贴图代替实时的光照计算,可以减少资源消耗,从而提高场景运行效率。

1.4 网格(Meshes)

网格 一般用于绘制 3D 图像。Creator 提供了以下网格渲染器组件来渲染基础网格、蒙皮网格等,从而将模型绘制显示出来:

  • MeshRenderer:网格渲染器组件,用于渲染基础的模型网格。
  • SkinnedMeshRenderer:蒙皮网格渲染器组件,用于渲染蒙皮模型网格。
  • SkinnedMeshBatchRenderer:批量蒙皮网格渲染器组件,用于将同一个骨骼动画组件控制的所有子蒙皮模型合并渲染。

模型若要应用于实际的物理碰撞中,实现类似凹凸不平的路面效果,可以使用网格碰撞组件,会根据模型形状生成碰撞网格。详情请参考 使用网格碰撞

1.5 纹理(Textures)

纹理是一张可显示的图像,或一段用于计算的中间数据,通过 UV 坐标映射到渲染物体表面,使之效果更为丰富精彩且真实。Creator 中纹理的应用包括以下几种:

  • 用于 2D UI 渲染,参考 SpriteFrame

  • 用于 3D 模型渲染,需要在材质中指定 纹理贴图资源,才能将其渲染映射到网格表面。纹理贴图还支持在 导入图像资源 时将其切换为 立方体贴图 或 法线贴图

  • 用于粒子系统,使粒子表现更丰富。与 3D 模型一样,纹理在粒子系统中的应用也依赖于材质。

  • 用于地形渲染,参考 地形系统

Cocos Creator 支持导入多种格式的图片(具体见下表),但是在实际游戏运行中,我们不建议使用原始图片作为资源来加载。比如在手机平台上可能只需要原图 80% 或者更少的画质,又或者是没有使用到透明通道的 .png 可以将其转换成 .jpg,这样可以减少很大一部分图片的存储空间。

1.6 材质

Cocos Creator 通过 材质 来描述物体外观。它们在光照情况下所呈现出来的明暗、光点、光反射、光散射等效果,都是通过 着色器 来实现的。而材质则是着色器的数据集(包括纹理贴图、光照算法等),方便进行可视化调整。

材质(Material)资源可以看成是着色器资源(EffectAsset)在场景中的资源实例。

创建代码示例:

const mat = new Material();
mat.initialize({
    // 通过 effect 名指定材质使用的着色器资源
    effectName: 'pipeline/skybox',
    defines: {
        USE_RGBE_CUBEMAP: true
    }
});

对任意渲染器组件,可以在脚本模块中进行程序化访问,代码示例如下:

// 通过网格渲染器组件(MeshRenderer、SkinnedMeshRenderer、SkinnedMeshBatchRenderer)可访问 3D 物体的材质
let renderable = this.getComponent(MeshRenderer);

// 获取索引为 0 的材质
let material = renderable.getMaterial(0)

// 设置索引为 0 的材质
renderable.setMaterial(mat, 0);

let sprite = this.node.getComponent(Sprite)

// 获取 2D 渲染器组件的自定义材质
let customMaterial = sprite.customMaterial;

// 设置 2D 渲染器组件的自定义材质
sprite.customMaterial = mat;

// 获取和设置粒子发射器的材质
let particleSystem = this.getComponent(ParticleSystem);
const material = particleSystem.material;
particleSystem.material = material;

// 设置和获取粒子拖尾材质
const trailMaterial = particleSystem.renderer.trailMaterial;
particleSystem.renderer.trailMaterial = trailMaterial;

1.7 着色器(Cocos Effect)

在 资源管理器 面板中点击左上角的 + 号按钮并选择 着色器(Effect) 便可创建新的着色器资源。

在脚本中使用着色器时,需要在 属性检查器 面板中着色器的 Shaders 属性里找到相应着色器,然后通过其唯一字符串名称来加载使用。

1.代码示例:

resources.load("custom-effect", EffectAsset, ()=>{
    const effectAsset = EffectAsset.get("../resources/custom-effect");
    const material = new Material();
    material.initialize({ effectName: "../resources/custom-effect" });
})

注意:从 3.6 开始,当你在脚本中使用引擎内置着色器时,你也需要在 属性检查器 面板中着色器的 Shaders 属性里找到相应着色器,然后通过其唯一字符串名称来加载使用。以 Standard 着色器为例,代码示例如下:

// 获取内置 Standard 着色器 ‘builtin-standard.effect’
const effect = EffectAsset.get('builtin-standard');

const mat = new Material();

// 使用内置基于物理的光照着色器(PBR)‘builtin-standard.effect’ 初始化材质
mat.initialize({ effectName: "builtin-standard" });

2.语法框架

Cocos Effect 通常由两个部分组成:

  • CCEffect:用于声明渲染技术(Technique)、渲染过程(Pass)、渲染状态、材质参数等属性。
  • CCProgram:用于声明顶点着色器(Vertex Shader)和片元着色器(Fragment Shader)代码片段。

3.基于物理的光照模型(Physically Based Rendering - PBR)

Cocos Creator 从 v3.0 开始提供了基于物理渲染(PBR)的光照着色器:builtin-standard.effect。PBR 根据现实中光线传播原理和能量守恒定律,模拟出近似于真实物理光照的效果。

PBR 的优势在于:

  • 真实性:基于物理原理的渲染让最终效果更加逼真
  • 一致性:美术制作流程规范化、制作标准统一化
  • 复用性:模型材质与光照环境分离,在所有 PBR 项目中均可复用

1.8 天空盒

游戏中的天空盒是一个包裹整个场景的立方体,可以很好地渲染并展示整个场景环境,在基于 PBR 的工作流中天空盒也可以贡献非常重要的 IBL 环境光照。

1.开启天空盒

在 层级管理器 中选中场景根节点,然后在 属性检查器 的 Skybox 组件中勾选 Enabled 属性即可开启天空盒。

天空盒的环境贴图资源支持:

  1. TextureCube 类型的单张贴图,可在 Creator 中设置。

    • Cube Cross 图片

    • PNG 或 HDR 格式的图片

  2. 图片文件形式的 CubeMap(立方体贴图)

  3. 在 Creator 中手动创建的由六张 texture 类型的贴图组合而成的 CubeMap

2.天空盒材质

天空盒材质默认使用的着色器是 资源管理器 -> internal/pipeline/skybox.effect

 1.9 全局雾

全局雾用于在游戏中模拟室外环境中的雾效果。

全局雾的类型目前包括 线性雾指数雾指数平方雾层雾 四种。

层雾(Layered)

层雾(Layered)平行于水平面,具有一定的高度。可在场景世界坐标系垂直方向上的任一位置设定层雾的顶部,以此来确定雾的高低。

2.2D 对象

区别于 3D 模型对象,我们将不涉及模型的图片渲染体统称为 2D 渲染对象。

2.1 渲染节点排序

UI 的渲染排序采用的是一个深度优先的排序方式。

排序是一个很简单的功能,但是最终的呈现却是根据不同平台提供的渲染能力来的。因此,在这里说明一下,如果遇到了 UI 渲染出错,花屏,闪屏等现象,首先要检查的就是场景里所有相机(Camera 和 Canvas)的 ClearFlag,确保 场景里必须有一个相机要执行 Solid_Color 清屏操作

具体如何设置 ClearFlag,可参考以下几种情况:

  • 如果场景中只有一个 UI Canvas 或者 3D Camera,那么 ClearFlag 属性设置为 Solid_Color
  • 如果场景中包含 2D 背景层、3D 场景层、 2D UI 层,则:

    • 2D 背景层:ClearFlag 属性设置为 Solid_Color
    • 3D 场景层:ClearFlag 属性设置为 Depth_Only
    • 2D UI 层:若有模型,ClearFlag 属性设置为 Depth_Only 以避免出现模型闪屏或者穿透的情况。若没有模型,ClearFlag 属性可设置为 Dont_Clear 或 Depth_Only

2.2 渲染组件

1.Sprite 

Sprite(精灵)是 2D/3D 游戏最常见的显示图像的方式

Sprite 支持以下几种渲染模式:

  • 普通模式(Simple):根据原始图片资源渲染 Sprite,一般在这个模式下我们不会手动修改节点的尺寸,来保证场景中显示的图像和美术人员生产的图片比例一致。

  • 九宫格模式(Sliced):图像将被分割成九宫格,并按照一定规则进行缩放以适应可随意设置的尺寸(size)。通常用于 UI 元素,或将可以无限放大而不影响图像质量的图片制作成九宫格图来节省游戏资源空间。详细信息请阅读 使用 Sprite 编辑器制作九宫格图像 一节。

  • 平铺模式(Tiled):当 Sprite 的尺寸增大时,图像不会被拉伸,而是会按照原始图片的大小不断重复,就像平铺瓦片一样将原始图片铺满整个 Sprite 规定的大小。

  • 填充模式(Filled):根据原点和填充模式的设置,按照一定的方向和比例绘制原始图片的一部分。经常用于进度条的动态展示。

2.Label 

Label 用来显示一段文字,文字可以是系统字体,TrueType 字体、BMFont 字体或艺术数字。

3.Mask(遮罩)

Mask 用于规定子节点可渲染的范围,默认带有 Mask 组件的节点会使用该节点的约束框(也就是 属性检查器 中 Node 组件的 ContentSize 规定的范围)创建一个矩形渲染遮罩,该节点的所有子节点都会依据这个遮罩进行裁剪,遮罩范围外的将不会渲染。

4.Graphics 

Graphics 组件提供了一系列绘画接口,这些接口参考了 Canvas 的绘画接口来进行实现。

5.RichText

RichText 组件用来显示一段带有不同样式效果的文字,可以通过一些简单的 BBCode 标签来设置文字的样式。目前支持的样式有:颜色(color)、字体大小(size)、字体描边(outline)、加粗(b)、斜体(i)、下划线(u)、换行(br)、图片(img)和点击事件(on),并且不同的 BBCode 标签是可以支持相互嵌套的。

6.UIStaticBatch

UI 静态合批组件是一个提升 UI 渲染性能的组件,脚本在初始化当前帧渲染的过程中会收集该 UI 节点树下的所有渲染数据(除了模型、Mask 和 Graphics),存储为一个静态的 IA 渲染数据。并在后续的渲染流程中使用固定数据进行渲染,不再遍历其节点树,此后的坐标变换将不再生效。

需要修改静态数据的时候,可以调用 markAsDirty 接口来重新触发渲染数据收集标记。

通过脚本代码开启静态合批

import { _decorator, Component } from 'cc';
const { ccclass, property } = _decorator;

@ccclass("example")
export class example extends Component {
    start(){
        const uiStatic = this.node.getComponent(UIStaticBatch);
        // 选择你要开始静态合批的时机,调用此接口开始静态合批
        uiStatic.markAsDirty();
    }
}

7.Spine Skeleton

Spine Skeleton 组件支持 Spine 官方工具导出的数据格式,并对 Spine(骨骼动画)资源进行渲染和播放。

Spine 顶点效果

顶点效果只有当 Spine Skeleton 组件的 Animation Cache Mode 属性设置为 REALTIME 模式时有效。

Spine 挂点

在使用骨骼动画时,经常需要在骨骼动画的某个部位上挂载节点,以实现节点与骨骼动画联动的效果。

星星挂在龙的尾巴上,并随着龙的尾巴一起晃动。

Spine 碰撞检测

通过 Spine 挂点功能可以对骨骼动画的某个部位做碰撞检测。

8.DragonBones ArmatureDisplay

ArmatureDisplay 组件可以对 DragonBones(龙骨)资源进行渲染和播放。

9.TiledMap

TiledMap(地图)用于在游戏中显示 TMX 格式的地图。

10.MotionStreak(拖尾)

MotionStreak(拖尾)是运动轨迹,用于在游戏对象的运动轨迹上实现拖尾渐隐效果。

3.动画系统

Cocos Creator 内置了通用的动画系统用以实现基于关键帧的动画。

3.1 动画剪辑(Animation Clip)

包含了动画数据的资源,可复用。动画剪辑可以通过 动画编辑器 产出,或者通过某些已经包含了骨骼动画的外部资源导入。

3.2 骨骼动画

导入带有动画文件的 模型资源 后,若模型网格中带有蒙皮信息,在使用模型时,SkeletalAnimation 组件便会自动添加到模型节点上。

1.挂点系统

如果需要将某些外部节点挂到指定的骨骼关节上,使其在动画过程中随骨骼关节一起运动变换,需要使用骨骼动画组件的 挂点(Socket)系统

2.骨骼动画系统

Creator 提供了 预烘焙骨骼动画 和 实时计算骨骼动画 两套系统,针对不同方向的需求,分别优化。

这两套系统的唯一开关是 SkeletalAnimation 组件中的 useBakedAnimation 属性,运行时也可以无缝切换。

预烘焙骨骼动画系统

这个系统的压倒性目的是性能,因此部分表现力的牺牲被认为是可以接受的。

实时计算骨骼动画系统

这个系统的压倒性目的是表现力,确保所有细节的正确显示,以及完整的程序控制能力。

两套系统的选择与最佳实践

目前所有模型资源在导入后,Prefab 中全部默认使用 预烘焙系统,以达到最佳性能。建议只在明显感到预烘焙系统的表现力无法达标的情况下,再使用 实时计算系统

3.3 Marionette 动画系统

Cocos Creator 3.4 引入了一个全新的 Marionette 动画系统,通过状态机控制对象的骨骼动画,实现了自动化、可复用的动画流程。

为了跟 v3.4 之前的动画系统区分,我们将新的动画系统称为木偶(Marionette)动画系统,称 v3.4 之前使用的动画系统为旧式动画系统。两种动画系统都可以正常使用,但不支持同时使用。主要的区别在于:

  • 旧式动画系统:以动画组件、动画状态为核心,手动简单控制动画剪辑的播放暂停等。动画剪辑支持使用通过编辑器创建的 Animation Clip 和外部导入的骨骼动画(.fbx 、 .gltf 和 .glb)。

  • Marionette 动画系统:以动画控制器组件、动画图为核心,按照事先搭建好的动画图,通过状态机自动控制动画剪辑的播放和切换等。动画剪辑只支持外部导入的骨骼动画(.fbx 、 .gltf 和 .glb)。

4.音频系统

音乐是游戏中不可或缺的一部分,好的音乐能让游戏更加真实、富有沉浸感。

AudioSource 组件

AudioSource 组件用于控制音乐和音效的播放。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CocosCreater 教程(中) 的相关文章

  • [转]Unity Accelerator本地服务器加速Unity项目资源载入速度

    去年的时候项目引擎版本由2019升级为2020 对应的资源导入管线也由V1切换到了V2 在这个过程中发现原来的cachesever就不满足项目需要了 查阅了一些资料发现unity的cachesever升级成了Unity Accelerato
  • 在Unity中进行单例的动态脚本加载

    首先调用Unity提供的注释可以在点下Play之后 在游戏真正启动前去执行一些脚本 要注意执行脚本要放在Assets Editor下 RuntimeInitializeOnLoadMethod RuntimeInitializeLoadTy
  • unity期末大作业 搬运东西过河 益智游戏

    unity期末大作业 搬运东西过河 益智游戏 详细情况如下动态图 点我下载 https download csdn net download weixin 43474701 75859840
  • unity-ugui-eventsystem

    EventSystem对象的说明 当我们在场景中创建任一UI对象后 Hierarchy面板中都可以看到系统自动创建了对象EventSystem 可以看到该对象下有三个组件 EventSystem StandaloneInputModule
  • 2022-05-14 Unity核心7——2D动画

    文章目录 一 序列帧动画 二 骨骼动画 2D Animation 三 反向动力学 IK 四 换装 五 骨骼动画 Spine 一 序列帧动画 一 什么是序列帧动画 我们最常见的序列帧动画就是我们看的日本动画片 以固定时间间隔按序列切换图片 就
  • unity,给button添加点击功能的办法

    以下是使用代码添加按钮功能的一个简单例子 创建一个空对象 并添加一个Button组件 命名为 MyButton 创建一个脚本文件 命名为 ButtonManager 在ButtonManager脚本中添加以下代码 using UnityEn
  • unity 停止调用InvokeRepeating()的方法

    可以使用CancelInvoke 函数来停止InvokeRepeating 的调用 示例如下 声明一个float类型的变量用来存储调用Invokerepeating 的时间间隔 public float repeatTime 2 0f vo
  • HLSL 偏导数 ddx / ddy

    HLSL ddx ddy 在光栅化的时刻 GPUs会在同一时刻并行运行很多Fragment Shader 但是并不是一个pixel一个pixel去执行的 而是将其组织在2x2的一组pixels分块中 去并行执行 偏导数就正好是计算的这一块像
  • Unity --- 触摸方法,以及灯光与烘培的使用

    触摸方法 1 首先触摸分为两大类 多点触摸和单点触摸 这两种方式的触摸通过下面这个触摸数来进行判断 当其等于1的时候 为单点触摸 当其大于1的时候为多点触摸 2 当我们在调用触摸方法的时候我们首先需要打开对应的多点 单点触摸 上面这个是开启
  • HTML5游戏实战(2):90行代码实现捕鱼达人

    捕鱼达人是一款非常流行的游戏 几年里赚取了数以千万的收入 这里借用它来介绍一下用Gamebuilder CanTK开发游戏的方法 其实赚钱的游戏未必技术就很难 今天我们就仅用90来行代码来实现这个游戏 CanTK Canvas ToolKi
  • 一些个人常用的网站网址

    一些个人常用的网站网址 GitHub https github com Gitee https gitee com 1 书栈网 https www bookstack cn explore cid 27 tab popular 2 Unit
  • 游戏引擎:打造梦幻游戏世界的秘密武器

    介绍 游戏引擎是游戏开发中不可或缺的工具 它为开发者提供了构建游戏世界所需的各种功能和工具 本文将介绍游戏引擎的概念 使用方法以及一个完整的游戏项目示例 游戏引擎的概念 游戏引擎是一种软件框架 它提供了游戏开发所需的各种功能和工具 包括图形
  • Unity 安卓打包

    Unity打包的方式有很多种 自动打包和手动打包 今天小弟就鼓捣鼓捣unity手动打包 如果想动态打包的话 可以去看其他大佬的帖帖哈 unity打包先配置环境 下载unity的时候可以顺道把unity的安卓包下载下来 如果忘了也没事 可以从
  • 1.17 从0开始学习Unity游戏开发--场景切换

    前面的所有文章我们都在一个固定的游戏场景内进行开发 在最开始介绍场景这个概念的时候就已经提及 这个场景可以是一张地图 或者是一个对战房间等等 所以显然这个场景可以有多个 并且可以从一个场景切换到另外一个场景 那么在Unity中如何进行场景切
  • Unity中级客户端开发工程师的进阶之路

    上期UWA技能成长系统之 Unity高级客户端开发工程师的进阶之路 得到了很多Unity开发者的肯定 通过系统的学习 可以掌握游戏性能瓶颈定位的方法和常见的CPU GPU 内存相关的性能优化方法 UWA技能成长系统是UWA根据学员的职业发展
  • unity dots jobSystem 记录

    Looking for a way to get started writing safe multithreaded code Learn the principles behind our Job System and how it w
  • 【Unity】运行时创建曲线(贝塞尔的运用)

    Unity 运行时创建线 贝塞尔的运用 1 实现的目标 在运行状态下创建一条可以使用贝塞尔方法实时编辑的网格曲线 2 原理介绍 2 1 曲线的创建 unity建立网格曲线可以参考 Unity程序化网格体 的实现方法 主要分为顶点 三角面 U
  • 【Unity】运行时创建曲线(贝塞尔的运用)

    Unity 运行时创建线 贝塞尔的运用 1 实现的目标 在运行状态下创建一条可以使用贝塞尔方法实时编辑的网格曲线 2 原理介绍 2 1 曲线的创建 unity建立网格曲线可以参考 Unity程序化网格体 的实现方法 主要分为顶点 三角面 U
  • Unity中URP下的指数雾

    文章目录 前言 一 指数雾 雾效因子 1 FOG EXP 2 FOG EXP2 二 MixFog 1 ComputeFogIntensity 雾效强度计算 2 lerp fogColor fragColor fogIntensity 雾效颜
  • VS2022 | 显示Unreal Engine日志

    VS2022 显示Unreal Engine日志 视图 gt 其他窗口 gt Unreal Engine日志 视图 gt 其他窗口 gt Unreal Engine日志

随机推荐

  • sqli-labs less9详解

    作者简介 研究生在读 IT女 如果文章有错请指正 让我们一起学习 天天向上 一起进步 如果对你有帮助 还请点赞收藏哦 写在前面 建议 如果对SQL注入中SQL语句不熟悉的可以先看看SQL盲注 你需要知道的常用sql函数和语句 如果看懂了这篇
  • 一款简单易用的视频下载工具

    公众号回复 1024 免费领取程序员赚钱实操经验 大家好 我是章鱼猫 今天推荐的这个项目是 downkyi 哔哩下载姬 一个简单易用的哔哩哔哩视频下载工具 支持批量下载 支持 8K HDR 杜比视界 提供工具箱 音视频提取 去水印等 哔哩下
  • 图书管理系统(Java面向对象总结性项目)

    文章目录 前言 一 图书管理系统的总体框架是什么 1 管理员的操作 2 普通用户的操作 二 具体的实现过程 1 创建关于书的一个包 book类的具体实现 booklist类的具体实现 2 创建operation的一个包 实现IOperati
  • Spring Bean的管理(IOC 依赖注入)

    文章目录 Spring Bean 基于xml的实现 name定义别名的演示 scope作用域的演示 singleton 演示 prototype 演示 xml配置方式的依赖注入 创建对象 为对象中的值赋值 方式一 通过构造方式的注入属性值
  • 青龙面板之酷狗大字版简单抓包

    酷狗大字版 一天1元左右 下载后复制下方得打开酷狗大字版 IQ1CPA 填写 你得金币 我也得金币 操作步骤 第一步 拉库 ql raw https gitee com ajouter shiyi git raw shiyi kgdzb j
  • freeswitch:回声、会议

    回声和延迟回声 关于回声 没什么需要多解释的 我们已经非常熟悉这一段了 如果拨9196 就能听到自己的回声 Dialplan如下 与echo类似 delay echo可以使用回声有一定延迟 Dialplan如下 其中5000是毫秒数 将通话
  • 执行hibernate的max()等聚合函数

    Exception in thread main java lang IllegalStateException No data type for node org hibernate hql ast tree AggregateNode
  • c++ map

    map是标准的关联式容器 一个map是一个键值对序列 映射 map提供基于key的快速检索能力 map中key值是唯一的 集合中的元素按一定的顺序排列 map元素插入过程是按排序规则插入 所以不能插入指定位置 map的具体实现采用红黑树变体
  • Sublime Text和Webstorm快速编写HTML/CSS代码的技巧

    1 初始化模板 HTML文档需要包含一些固定的标签 比如 等 现在你只需要1秒钟就可以输入这些标签 比如输入 或 html 5 然后按Tab键 html 5 或 用于HTML5文档类型 html xt 用于XHTML过渡文档类型 html
  • 归并排序(C)递归与分治策略

    归并排序 C 习题描述 题目描述 采用归并排序算法 并利用递归函数完成n个数字 n lt 100 的从小到大排序 输入描述 输入包括两行 第一行1个数字n 表示要排序的数字的个数 第二行有连续n个待排序数字 输出描述 输出只有一行 有n个排
  • Weex内置组件的使用——Weex的学习之路(二)

    最近公司项目不是很忙 就和组内成员商量利用时间学学新技术 最终在Weex和Flutter做选择 Weex是由阿里的大牛们开发出来语言 Flutter是由Google公司开发的 各种网上查找得出的评论都是Flutter更有前景 但是最终我们还
  • unity-Camera参数介绍、种类、操作以及获取相机截图画面

    总结一下学到的Camera 相关知识 unity中的Camera unity中相机参数介绍 Camera种类 对相机操作 截取相机画面到本地 unity中的Camera 相机是我们观察游戏世界的窗口 在unity中至少需要一个相机 可以使用
  • 使用Git在cmd控制台上传到Gitee平台文件

    注 以下操作实在Git安装完整且环境配置成功后才可正常操作 还需提前注册好Gitee账号 一 选择你要上传的文件夹 进到文件夹目录 输入cmd进入控制台 在控制台输入Git v 查询自己的Git环境变量是否配置成功 控制台继续输入Git i
  • Linux进程栈区、堆区、数据区、程序区

    1 内存映射 堆区 栈区 程序区 数据区 函数参数从右向左入栈 栈溢出原理 栈中保存的局部变量缓冲区发生溢出 导致栈中其它存储单元内容被重写 导致溢出的常用函数strcpy memcpy 1 gt 栈区 主要用来存放局部变量 传递参数 存放
  • MAE ViT过程,随机选取75%的patch mask掉。将原始图像分块作为一个list,然后random shuffle一遍,选取shuffle后在list中排在后75%的 patch,将他们ma

    在看到ViT出来的时候 我就在想 既然都已经把图像token化了 并且结构上都保持与BERT一致 那为什么最后的预训练目标非得是图像分类而不直接保持BERT的Mask Language Model的预训练目标呢 果然 在MAE中就尝试了这种
  • Ubuntu 16.04 x64搭建GitLab服务器操作笔记

    本人在作业部落上的原文 https www zybuluo com lovemiffy note 418758 本文主要记录在Ubuntu 16 04操作系统中搭建GitLab服务器的操作记录 以下是操作步骤 主要参考资料 https ab
  • OpenAI CTO、吴恩达夫人……AI 领域值得关注的「她」力量,个个都是女强人

    内容一览 她时代 来临 一些有着强大信念与热情的女性 纷纷投身至 AI 领域 成为不可或缺的存在与力量 值此国际妇女节到来之际 HyperAI超神经盘点了领域内令人印象深刻的杰出的女性代表 关键词 国际妇女节 人工智能 杰出女性 技术本无关
  • 南丁格尔玫瑰图

    1 绘制南丁格尔玫瑰图的步骤 数据准备工作 准备好角度数值和半径数值 建立画布 并将直角坐标转化为极坐标 并对极坐标进行一定的设置 使用bar函数进行绘图 对图形进行美化处理 2 上代码 import numpy as np import
  • 基于SSM的教师管理系统

    文末获取源码 项目技术栈 开发语言 Java Java开发工具 JDK1 8 后端框架 SSM 前端 采用HTML和Vue相结合开发 数据库 MySQL5 7和Navicat管理工具结合 服务器 Tomcat8 5 开发软件 IDEA Ec
  • CocosCreater 教程(中)

    1 图形渲染 1 1 渲染管线 RenderPipeline 用于控制场景的渲染流程 包括光照管理 物体剔除 渲染物体排序 渲染目标切换等 引擎默认使用 前向渲染管线 前向渲染管线的执行流程如下图所示 1 2 相机 游戏中的相机是用来捕捉场