骨骼动画

Unity中Shader序列图动画(UV流动的通用起始点) 我们在Shader中实现序列帧动画。可以实现一些简单特效或动画节省性能用。我们在这篇文章中,实现一下UV流动的通用起始点。 阅读详情

为了实现动画效果,我们可以使用序列图,或者可以选择骨骼动画。这里的动画效果,并不是说图片通过变形拉伸等等实现的效果,如下图,这个就是简单的变形实现的动效。

**序列图**,比如之前文章里的像素鸟,三个不同动作的图片,通过循环播放,就实现了飞翔的动作。序列图的缺点就是通过一系列的图片实现的,占用内存多。

bird1.png

bird2.png

bird3.png

**骨骼动画**就不一样了。比如游戏中的跑动效果,所用到的图片却是几张碎图,通过骨骼工具,就做出了跑动的动画效果。

骨骼动画

在骨骼工具中查看效果。

骨骼工具中的效果

实际效果如游戏中的截图,这里gif截图会丢帧。再来看看实际使用到的图片。

制作骨骼动画用到的图片

没错,就是一些碎图,通过骨骼工具的制作,最终生成了我们需要的动态效果。

下一篇介绍如何制作一个骨骼动画。

骨骼动画程序 最近有人问我怎样实现骨骼动画,于是我就想起了我以前写的这篇文章,贴上来给大家看看。 一、文章编写目的 写这篇文章,是给程序员看的。目的在于给程序员介绍骨骼动画的原理、数据结构和程序实现的粗略方法。 骨骼动画的应用面很多,主要用在3D角色动画,不过现在也很多人用于2D动画。下面的内容不会直接的把程序列出,只会阐述原理,关键的步骤是使用矩阵做坐标系变换。原理明白之后,不管2D或者3D应该都能 阅读详情

相关推荐

gltf骨骼动画解析笔记

gltf骨骼动画分为两部分,一部分是骨骼动画的结构信息,一部分是buffer数据 结构信息 属性accessors是一个访问buffer数据的中间件 bufferView:指明了在bufferViews中的索引 componentType:指明了每一个数据有几个字节组成,常见的类型如下 ‘5120’: Int8Array, // gl.BYTE ‘5121’: Uint8Array, // gl.UNSIGNED_BYTE ‘5122’: Int16Array, // gl.SHORT ‘51

HzjCsdn的博客 4528

帧动画和骨骼动画 本质的理解

假如是做:千人同屏。比如:足球游戏中,很多观众,可以营造出巨大生动的场面。这种,就需要动画进行烘焙,这个过程其实是将cpu或者gpu计算的部分预先计算好放到内存,下次使用的时候,就无需计算了。因此本质都是:cpu和内存的互换。由骨骼组成,通过计算旋转角度+位置等信息,从而确定下一帧长什么样子。帧动画:每一个动作都由很多张图片组成,快速的切换。因此缺点是:需要消耗CPU 或者 gpu进行计算。因此缺点是:内存占用大。cpu和内存之间的互换。...

focus-unchanged-thing 2559

COCOS学习笔记--骨骼动画

Cocos引擎中的骨骼动画使用过程与序列帧动画相同,一般都是先在Cocos Studio里编辑动画,然后在在工程代码中加载和使用动画,这篇博客就来详细介绍下具体步骤: 一.使用CocosStudio编辑骨骼动画 该过程步骤与使用CocosStudio编辑序列帧动画相似,区别就是导入的动画资源与绑定的控件不同: 1.首先创建一个场景:文件->新建文件,名字叫“AnimationTest”:

RapdoZoroの博客 4844

【游戏动画】游戏动画总结

常见游戏使用的动画内容以及对应实现细节

qq_41962812的博客 1377

骨骼动画——2D Animation

传统的序列帧动画为了达到好的动画效果,理论上来说,图片越多,动作越流畅,往往需要较多的美术资源,虽然效果好但是资源占用较多而2D骨骼动画是利用3D骨骼动画的制作原理进行制作的,将一张2D图片分割成n个部位,为每个部位绑上骨骼,控制骨骼旋转移动,达到用最少的2D美术资源做出流畅的2D动画效果(用性能换内存)主要方式有两种导入工具后 在Sprite Editor窗口会多一个选项 Skinning Editor,主要步骤是:当动画对象的各个部位没有绘制在一起,而是通过图集表示时(例如一个人,头身手脚都是分开绘制的

Go_Accepted的博客 2595

帧序列动画素材

帧序列动画图片素材,PNG格式!

用序列图制作无背景gif动画(3Ds MAX+Ps)

先看下效果: 步骤: 1.使用3ds max制作一段动画并渲染,注意:渲染设置 时间输出 选择 活动时间段,输出格式为png 2.得到序列图: 3.打开Ps后,再打开刚才保存序列图的文件夹,记得勾选 图像序列 4.点击菜单栏中的 窗口 再点击 时间轴 : 5.点击图中的+号 : 6.选择所有序列图(鼠标直接框选,或者ctrl+点击), 再点击 打开: 7.执行完如下图: 再点击红圈中的按钮 8.执行完如下图(ctrl+点击 选中需要...

ChaoChao66666的博客 3017

强化学习环境Gym库的介绍

Gym是一个用于进行强化学习实验的开源库,它提供了一个仿真环境,内置了多种仿真游戏,例如出租车游戏、悬崖游戏等,不同的游戏所用的网格、规则、奖励(reward)都不一样,适合为强化学习做测试。(1) 多种环境:Gym库内置了上百种实验环境,包括算法环境、简单文本环境、经典控制环境、Atari游戏环境、MuJoCo环境和机械控制环境等。(2) Gym提供多种环境供我们使用,这里以一个简单的CartPole-v0为例,首先导入gym库,然后创建一个CartPole-v0环境,通过调用gym.make方法实现。

ahah12345678的博客 2148

帧动画与spine动画

一.帧动画 原理:帧动画是一组“相关联”图片,在很短的时间内,播放切换,让大脑认为是连续的; 优点: 实现简单播放性能高,播放性能高; 缺点: 资源占用过大; 二.Spine 原理:将一个模型,根据动画的需求分成一些骨骼,一个骨骼对应一张贴图,将这些 骨骼通过工具,在不同的时间点来调整骨骼的位置、缩放、透明度等信息, 将这些时间点连续的播放形成动画; 优点:资源占用少; 缺点: 播放的性能比帧动画差; spine动画的cocos2dx播放代码: SkeletonAnimation* no

u012861978的专栏 4046

保姆级教程:用CH34xSerCfg工具修改USB转串口芯片的VID/PID,避免驱动冲突

本文详细介绍了如何使用CH34xSerCfg工具修改USB转串口芯片的VID/PID,解决驱动冲突问题。通过实战案例和配置技巧,帮助开发者高效管理嵌入式设备,避免常见的USB设备识别问题,提升开发效率。

weixin_30924239的博客 224

RGB接口电容触摸屏驱动(二)接口与时序说明

RGB接口电容触摸屏驱动(二)接口与时序说明

杰克拉力船长个人博客 4918

骨骼动画程序原理介绍

最近有人问我怎样实现骨骼动画,于是我就想起了我以前写的这篇文章,贴上来给大家看看。 一、文章编写目的 写这篇文章,是给程序员看的。目的在于给程序员介绍骨骼动画的原理、数据结构和程序实现的粗略方法。 骨骼动画的应用面很多,主要用在3D角色动画,不过现在也很多人用于2D动画。下面的内容不会直接的把程序列出,只会阐述原理,关键的步骤是使用矩阵做坐标系变换。原理明白之后,不管2D或者3D应该都能自己...

阿赵的博客 1万+

深水区探秘:小红书App x-s参数逆向与高并发爬虫实战(2026版)

在移动互联网的碎片化时代,小红书凭借其“社区+电商”的独特模式,积累了超过3亿月活用户。其内容生态覆盖了从美妆、穿搭到旅行、数码等几乎所有垂直领域。对于数据分析师、市场研究员以及AI算法工程师而言,小红书平台蕴含的价值是巨大的——无论是热门趋势洞察、KOL画像分析,还是多模态图文数据的采集。然而,想要高效、稳定地获取小红书App的公开数据,却并非易事。与Web端相比,小红书App的防护体系堪称“铜墙铁壁”。其核心的反爬机制建立在动态混淆的加密参数之上,尤其是请求头中的X-SX-T以及X-S-Common。

2201_76125261的博客 263

Three.js——骨骼动画

本篇文章讲解如何通过three.js实现骨骼动画,熟悉一些基本概念如:骨骼、骨架、蒙皮网格等...

HuoZhiyan 的博客 2535

量化交易 米筐 案例:市值因子选股策略

案例:市值因子的选股策略 1.结果 获得超额收益 年化 49% 2. 从股票中选择市值小的股票 选定财务数据筛选 进行每日调仓(多因子选股调仓 周期频率会小一些) 3. 代码 估值有关指标 # 在沪深300股票中,选出市值比较小的10只股票 # 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。 def init(context): # 沪深300组合 stocks = index_components('000300.XSHG') # 沪深3

廷益_飞鸟的博客 2313

第二节:Vben Admin 登录逻辑梳理和对接后端准备

第一节,我们已经配置了前端环境,运行起来了我们的Vben Admin的项目。本节内容,我们先熟悉下项目的目录和文件,然后开始准备对接后端程序路由在 src/router页面在 sr/views本节前端登录逻辑梳理完成了,后端只要在/api/login 接口编写返回逻辑,前后段就可以打通了,具体详情我们下一节介绍。

cuiwin的专栏 5084

骨骼动画原理

游戏制作中,从游戏开始到现在,动画的发展经历了一个一个的阶段,效果逐渐越来越真实自然流畅。但是复杂度也越来越高。作为游戏钟不可或缺的重要模块,下面我将以unity为例聊一下,动画是怎么一步一步发展过来,以及骨骼动画的设计初衷,内部数据表示以及原理。...

qq_17347313的博客 4690

51-14 Retentive Network,RetNet 多尺度保留机制序列建模论文精读

RetNet 提出了多尺度保留机制序列建模,该机制支持三种计算范式,即并行、循环和分块循环。RetNet有更好的全局注意力建模、高效的计算效率、对遮挡的鲁棒性、支持基于注意力的图像生成、与置信度相关的门控机制和多任务学习等特点,对不同视觉任务可以共享历史注意力记忆,可以同时进行分类、分割、检测等任务。RetNet在视觉领域应该有广阔的应用前景。

AIgraphX 1613

cocosCreator 骨骼动画

啊啊

HzjCsdn的博客 3237

Winform从入门到精通(38)——StatusStrip(史上最全)

本文介绍StatusStrip控件的详细用法,包含所有属性和事件,绝对史上最全!

qq_34059233的博客 2758

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

骨骼动画原理和优化

用Unity做游戏经常会用到3D角色,也就会用到骨骼动画。骨骼动画对性能的影响其实非常大的,在说这个问题之前,先来说说骨骼动画的原理。 我之前做过多种骨骼动画,包括写过2D的骨骼动画系统(类似于现在比较流行的龙骨系统),也在flash的stage3D里面写过3D的骨骼模型动画。骨骼动画的原理实际上都是一样的: 首先你需要有一个模型,2D或者3D的,这些模型是由顶点组成的,2d模...

阿赵的博客 8352

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Three.js(十二)——骨骼动画、变形动画

文章目录12、骨骼动画、变形动画12.1 骨骼动画原理相关类Bone骨架SkeletonGeometry(.skinWeights 和 .skinIndices 属性)骨骼网格模型 SkinnedMesh程序创建一个骨骼动画程序实现骨骼动画解析外部骨骼动画模型皮肤顶点权重属性.skinWeights骨骼动画顶点数据12.2 加载外部模型骨骼动画查看骨骼动画数据解析渲染骨骼动画12.3 变形目标动画原理创建变形动画的顶点数据网格模型.morphTargetInfluences属性生成变形动画12.4 解析外部

summer_du的博客 7653

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

关于blender骨骼动画的学习

关于制作循环动画之后,假设我们这个僵尸保持着这重复的动作,那么我们可以直接复制这30帧一直到120帧,这是僵尸的位置是原地不动的,我们可以在0帧和120帧通过改变躯干的位置来进行循环走路,因为是相同的动作所以不会有太大异常,然后我们可以按t选择线性模式来计算0帧和120帧的动作运动,和Cascadeur中的两个关键帧插值类似,但注意这两帧之间不要有多余帧,不然会导致结果出错。贝塞尔则是计算好物体的运动曲线。第二个注意你的链长,就是你IK的骨骼数量,0会非常奇怪,要是你腿部两块骨骼,1的话就会拉不动。

J789365514的博客 2959

FBX骨骼动画

不要在追寻什么人生的意义,追寻本身就很有意义-《萌菇凉》本周我们拿出一些可能其他同学也存在的疑问来给大家讲解一下关于FBX骨骼动画的方面东西。我们应该如何去做一个动画系统。关于绘制我们首先来看看,我们要绘制动画需要具备什么样的底层基础功能:绘制一群三角形的能力(因为无论模型如何复杂,它都是由三角形构成,或许你比较菜鸟,只能绘制21845个三角形(65535除以3),或许你有良好的数据组织,你有一个...

weixin_33916256的博客 1098

openGL中用Assimp库加载骨骼动画

前言 超好的openGL学习网站 50个教程源码下载:点击 Get the source, 即可下载源码 楼主真是太贴心了,下载下来的源码已经是带有工程文件了,所以不用使用CMake编译,直接打开下载路径下的工程:ogldev.sln,这里最好用vs2019,我用vs2017打开有时编译不过,不管是vs2019还是vs2017打开,都需要改动一点代码,不然编译不过 把报错的地方:return false; 或者 return true; 改成:return nullptr; 下载...

aoxuestudy的专栏 3141

蒙皮骨骼动画

本篇文章为翻译文章,由于此文章 LearnOpenGLCN 没有进行翻译,我这里翻译一下。 原文链接: https://learnopengl.com/Guest-Articles/2020/Skeletal-Animation 3D动画可以给我们的游戏带来生命。3D世界中的物体,如人类和动物,当他们移动他们的四肢做某些事情,如行走,奔跑和攻击时,感觉更有生机。本教程是关于你期待已久的骨骼动画。我们首先将彻底理解一些概念,然后我们通过使用Assimp库,了解需要使用3D模型动画的数据。我建议你完成这个sag

不会飞的纸飞机的博客 3290
上一篇: 实现一款简单的RPG游戏
锅哥
博客等级 码龄19年 78粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值