flame

Flutter update is giving me this error: The method '*' was called on null

寵の児 提交于 2020-04-30 06:37:06
问题 I have a flutter app using the flame library. I'm trying to make an object move in a flutter game. When I run the update function, I get the following error: The method '*' was called on null. Receiver: null Tried calling: *(0.0) Seems like something isn't initialized and the update function is ran before that something is initialized. When I comment out player.update(t) it works, but the update function doesn't get called. What am I doing wrong ad how can I fix it? Here's my code: Game

火焰图工具 SystemTap

跟風遠走 提交于 2020-03-29 12:30:12
1. 安装 SystemTap 1. 首先安装内核开发包和调试包: # rpm -ivh kernel-debuginfo-common-($version).rpm # rpm -ivh kernel-debuginfo-($version).rpm # rpm -ivh kernel-devel-($version).rpm 其中 $version 使用 linux 命令 uname -a 查看,需要保证内核版本和上述开发包版本一致才能使用 systemtap。 centos 7 的 debuginfo 相关 rpm 包可以在如下链接下载: debuginfo.centos.org/7/x86_64 。 kernel-devel-uanme-r 的 rpm 在该链接中下载: kernel-devel-uname-r 2. 安装 systemtap # yum install -y systemtap # ... # 测试systemtap安装成功否: # stap -v -e 'probe vfs.read {printf("read performed\n"); exit()}' # 出现如下信息表示安装成功: Pass 1: parsed user script and 472 library scripts using 239992virt/41844res

Data-driven 3D human head reconstruction——3D人头重建笔记

故事扮演 提交于 2020-03-01 23:09:33
数据驱动的3D人头重建 文中提出的框架可以通过一张图片重建出3D人头模型。图片首先通过卷积神经网络把图片进行分割,使用Gabor滤波器提取头发方向。之后,以标志点为约束求解FLAME面参数化模型。利用人脸图像的高频信息对细节进行增强,并利用反照率参数化模型对纹理进行补充。最后,建立了条状网格毛发数据库,并利用该数据库和图像中提取的信息,对图像中的头发进行了重建 头部重建是人体重建中较为困难的。本文主要有以下几点贡献: 提出一种简单快速的细节增强方法,并将增强后的细节作为法线贴图应用到人头模型,达到实时渲染的目的。 建立了FLAME网格的反照率参数化模型,对人头纹理进行了补充。 建立了一个头发-面部图像分割的数据库,并使用全卷积网络从图像中分割出头发与面部区域。 从发型数据集生成的条状网格数据库是实时渲染的关键。 文中提出方法的处理管线图 给定一幅图像首先将其分割成头发、面部以及背景区域,计算毛发方向图并检测面部标志点;接着将FLAME面部参数模型与检测到的特征点进行匹配,得到一个粗糙的人脸网格。为捕捉更多细节使用了Z-buffer技术。文章还通过回归参数反照率模型的PCA系数,来生成完整的纹理贴图。 在头发重建阶段,通过计算多视角方向图,将头发模型数据库离线转换为网格。然后给定图像中的方向图可以从分割出的头发区域计算。通过将图像方向图与3D模型方向图进行匹配

Android Profiler之CPU

一世执手 提交于 2020-01-11 02:31:12
​Profiler是Android Studio中提供的一个分析工具,它提供了四个维度的分析,CPU(函数调用)、MEMORY(内存分配)、NETWORK(网络流量)、ENERGY(耗电量)。这一篇根据官方的介绍针对CPU维度提供的分析功能进行下整理。 CPU维度下提供了四种分析方式,Call Chart、Flame Chart、Top Down、Bottom Up。 Call Chart(调用图) 用一张抽象图来描述,每个色块表示一个方法调用,水平方向是时间轴,竖直方向从上到下为调用关系。 从图中我们可以很清楚到看到各个方法在时间维度上的调用关系。 Flame Chart(火焰图) 同样用一张抽象图表示,水平方向表示record时间段内方法调用的百分比,竖直方向从下到上为调用关系。 从图中可以清晰的看出耗时占比高的调用栈(A->B->C)。 那么火焰图是如何得到的呢? 以Call Chart为基础,把一致的调用栈合并起来,并按照持续时间进行排序,就得到了Flame Chart。 过程如下图: Top Down(自顶向下) Top Down 将方法调用关系用树的形式进行展现,根节点是最外层的调用者。分析结果中有三个数值,Total、Self、Children,分别表示方法总耗时、本身耗时、调用的子方法耗时。 将Flame Chart中的百分比折算成时间

使用Flame插件

匿名 (未验证) 提交于 2019-12-02 23:59:01
在pubspec.yaml下添加flame插件,并通过flutter packages get命令下载插件,或者使用Visual Studio Code保存文件会自动下载插件。 dependencies: flutter: sdk: flutter cupertino_icons: ^0.1.2 flame: ^0.13.0 1 2 3 4 5 6 7 Flame插件已经提供了一个完整的游戏开发框架,所以我们只需要专心编写实际的更新和渲染过程。首先,需要将应用程序转化为游戏模式,要做两个操作:全屏和纵向。而令人感到巴适的是,Flame插件已经封装好了这些实用的功能,我们只需要编写调用代码就可以了。 我们先在main.dart的顶部添加以下引用。 import 'package:flame/util.dart'; import 'package:flutter/services.dart'; 1 2 然后在main.dart的main函数内部创建Flame的Util类的实例,调用其实例的全屏(fullScreen)和设置方向(setOrientation)函数,同时要注意,因为这些函数的返回值类型是未来(Future),所以要在这些函数前面添加等待(await)。 未来(Future)、异步(async)和等待(await)是一种特殊的编码方法

openresty 火焰图收集

北慕城南 提交于 2019-12-02 18:28:01
工具安装 查看内核及kernel 注:本次安装以下都是基于centos6的 uname -a ; rpm -qa kernel\* | sort kernel,kernel-devel,kernel-debuginfo,kernel-debuginfo-common(先安装kernel-debuginfo-common,在安装 kernel-debuginfo) 这些版本一定要和内核版本保持一致 相关rpm包下载: http://rpm.pbone.net (kernel,kernel-devel), http://debuginfo.centos.org (kernel-debuginfo,kernel-debuginfo-common)对应搜索下载rpm安装,版本一定要对应,不然会报一些内核错。 安装systemtap yum install systemtap 测试安装是否成功: stap -v -e 'probe vfs.read {printf("read performed\n"); exit()}' 安装成功: 出现下面的情况,是kernel-devel不匹配导致的 kernel-debug 版本不匹配 下载stapxx、FlameGraph、openresty-systemtap-toolkit https://github.com/openresty