Vellum —— 相关特点

目录

Cloth

Breaking and tearing

Paneling and draping

Cloth simulation

Calculating mass and thickness   

Working with low res and high res cloth

Quick moving cloth

Softbody

Vellum softbodies

Plasticity with softbodies

Constraints

Stitch and sliding constraints

Plasticity

Triangle and tetrahedral stretch constraints

Animated pressure constraints

Dynamic constraints

Shape matching

Constraint browser pane

Collisions

修正碰撞穿插

摩擦力

Advanced

Setting up a 64-bit solve

vellum attributes

Tips and troubleshooting


Cloth

Breaking and tearing

        Edge Fracture节点可很容易的切开几何体(可手动绘制断开位置),以便断开或撕裂;使用Vellum Weld Point节点焊接接缝,然后根据特定条件来断开;

        Normalize Stress默认开启的,总是归一化应力,以便子步变化时被计算的值更加可预测;这对基于应力阈值,断开约束非常有用,因为可在改变子步时不必调整值;如碰撞体非常快,需要增加子步时,可能只需稍微调整阈值;也适用于基于密度计算的mass,如改变的布料的精度,应力仍然是一致的;这使得在子步和分辨率中,更容易设置值;

以下案例展示相同布料在不同分辨率和子步下的应力阈值,结果是非常相似的:

Paneling and draping

Paneling工作流

  • 导入T-pose角色模型;
  • 绘制衣服版型轮廓线,应比角色大些以便包裹角色(应绘制多笔曲线);
  • 在添加resample,以调整每笔的点数;
  • 在使用fuse,将点合并到一起;
  • 在使用Planar Patch from Curve节点,构建均匀三角形面片;
    • 勾选Resample Curves,确保曲线的边缘间距与内部边缘长度相匹配;
    • 降低Interior Edge Length,提高精度;
    • 旋转Smoothing->Subdivision Curves;
  • 在创建其他位置的布料面板模型;
  • 在使用Vellum Configure Cloth节点,配置布料;
  • 在使用Vellum Stitch Points节点,缝合接缝,设置约束长度为0;
  • 在使用Vellum Weld Points节点,焊接接缝,使接缝完全在一起;

Draping工作流

  • 创建布料面板模型,与Paneling工作流一样;
  • 在添加Vellum Drape节点,可自动缝合接缝;
    • 如布料难以包裹角色,应增大面板,也可在增加一个Vellum Drape节点(勾选Inflate Collisions);
  • 满意布料结果后,使用Vellum I/O缓存,在使用Vellum Rest Blend设置当前约束为起始状态;

Cloth simulation

将已drap布料转为起始几何体

  • 一旦布料drap后,即可后续解算保持约束,也可将其转换为起始几何体;
  • 转化为起始几何体,将会丢弃任何已设置的stiffness,可重新使用,也确保系统中没有更多的能量;
  • 使用Vellum Post-Process,是快速焊接点的好方法;
  • 为确保法线一致,可使用Polydoctor节点(勾选Correct Winding of Polygons to Majority of their Manifold Patch);
  • 然后在使用Vellum Constraint节点;

注:确保没有冲突的ID属性;新约束是厚度会被设置为0.01(默认),应确保厚度合适;

解算布料时应考虑的事项

  • Substeps、Iterations,决定布料的拉伸性,子步为5对布料是一个好的开始;
  • Tailoring,一些小的改变可能会很大改善最终效果,如根据角色的步伐,增加裙子的宽度可防止衣服底部的拉扯;
  • Static,通常衣服会在身上不切实际的移动,增加静态摩擦系数以更加贴合角色;
  • Bend Strength,值为0将有大量的褶皱,值越高越硬;
  • Compression Stiffness,压缩刚性,可使三角形折叠而不展开;
  • Tangent Stiffness,对附着在腰上的裤子或裙子解算非常有用,避免因重力掉落或滑动,比降低Rest Length Scale效果更好;仅在attach约束起作用,是vellum对外部几何体;
  • Stiffness Dropoff,降低或增加约束刚性,在远离起始状态时;
  • Air resistance,气流对布料非常重要,没有气流布料会变平,太大的气流则会被drag,默认值为0.1,通常会产生很好的效果;
  • Gravity,改变重力可使时间好像变快或变慢,也会影响比例,增加重力会有更大的拉伸;

Calculating mass and thickness   

        默认会自动计算mass和thickness,即改变vellum精度时解算效果不会改变太多;特别是对弯曲,较重或较轻的布料其褶皱大不相同;该方法是使用polyline的长度,三角形的面积,四面体的体积及密度density来计算mass,使用边长度来计算thickness;

        质量Mass,Calculate Uniform均匀的在所有点间分配质量,但对精度或布线不均的会产生问题;Calculate Varying(默认设置)分配的质量会与周围面积相匹配,点密集的区域质量相对较小;默认的Density参数0.1是针对布料的,其他预设类型约束Density参数会针对其类型有所不同;

        厚度Thickness,Calculate Uniform(默认设置)是基于每个面中边的平均长度,可避免过多的自碰撞并保持均匀的厚度,均匀统一的厚度是默认的设置,可像布料一样平整;Calculate Varying将自动根据布线的密集程度调整pscale大小,对角色来说是有用的;

Working with low res and high res cloth

        布料的stretch/bend的方式非常重要,起皱的程度和快慢可看出布料的材质;在处理mass/scale/topology时确保pscale属性正确,以使不同精度的材质看起来一致;调整精度时,Vellum Constraint节点会自动调整mass(总质量不变)、pscale(相对距离不变);

Quick moving cloth

        快速移动的对象,将使与之一起移动的布料聚集能量,如整个角色或角色的一部分快速移动;Velocity Blend参数和Refrence Frame节点,可用来生成更加理想的结果;Velocity Blend是通常用于快速移动的身体部分,如摆动的手臂;Refrence Frame节点通常用于快速移动的整个角色,如超级英雄和他的斗篷;

Velocity Blend

  • Attach to Geometry约束的Velocity Blend参数,可避免突然运动引起的问题,对跟随快速移动手臂末端的袖子也很有用;要求目标对象有速度属性v

Reference Frame

  • 参照参考对象的几何体,类似Velocity Blend,但适用于整体而不是局部;对快速移动的角色或作为其他环绕对象的父对象有用;
  • 可与Velocity Blend一起使用,如角色移动的很快,同时手臂向上猛拉;
  • wind force对角色快速移动很重要,Drag Compensation参数可调整任何风速;
  • 确保Refrence Frame节点上的子步和解算器上的子步相同;

Softbody

Vellum softbodies

        PBD柔体的主要优点是其可控性、稳定性、及可快速产生可信结果;尽管FEM是创建柔体的有利方法,只是世界的准确性和行为,但vellum是非常快,可多种约束;依据场景和要制作柔体的类型选择方法;

Vellum Struct Softbody工具,使用在内部点间随机随机形成的支柱,来创建粗略保持体积;仍然是对原始几何体进行模拟;

Vellum Tetrahedral Softbody工具,会polyreduce、remesh以创建一个低精度的代理模型,并四面体化;创建四面体后,沿边将距离约束以保持对象的整体形状,创建体积约束以保持每个四面体的体积;解算完后,使用point deform变形原始几何体;

        尽管vellum balloon、vellum struct softbody、vellum tetrahedral softbody看起来都像可延展黏糊的物体,但其主要区别是保持体积的方式;

  • vellum balloon保持全局体积,是使用压力约束均匀向外,挤压一个区域会膨胀另一个区域,类似气球;
  • vellum tetrahedral softbody更多的保持局部体积,因为每个四面体都保留体积,对有机材料很有用;
  • vellum struct softbody根本无法保持体积,使用的是内部支柱,类似里面有一组弹簧来保持形状;

Vellum Fiber 是柔体约束的一种类型,会沿着纤维方向压缩,如有保持体积会在另一个方向扩展;

Plasticity with softbodies

        塑性可使用物体在受到特定力或外部碰撞时,适应新的rest形态;通常对布料应避免塑性,然而柔体约束(如Tetrahedral Stretch)能很好的适应塑性;使用vellum tetrahedral softbody与vellum constraint结合使用,可获得逼真的结果;

有三个重要的参数控制柔体的塑性:

  • Plasticity Threshold,变形超过此阈值,将适应新的rest;
  • Plasticity Rate,适应新rest的速度;
  • Plasticity Hardening,适应新rest的更硬还是更软;

上例制作文件:An Introduction to Vellum Soft Bodies | SideFX

Constraints

Stitch and sliding constraints

        stitch约束可点到面,不仅仅是点到点,对缝合布料非常有用,缝合到最近位置对polyline也起作用,可创建平滑和真实的滑动;

Sliding Constraints

        滑动约束是stitch或attach约束可在目标表面滑动,启用Use Closest Location on Primitive(仅在polyline、triangle、quad有效),及Target Group Type为Primitives;Sliding Rate控制滑动快慢,1表示匹配约束速度;

        Tangent Stiffness会减缓滑动,此时可增加sliding rate;

Plasticity

        在vellum里,但对象被弯曲或拉伸时,会恢复到原始状态;当启用Plasticity时,一旦超过阈值就会保持新的状态,常用于Hair;在Shape Match约束,塑性也是有效的;可通过Stretch Plastic Flow、Bend Plastic Flow查看;

注,vellum很难创建非常坚硬的材质,如金属片,可使用Bullet Soft Constraints;

Triangle and tetrahedral stretch constraints

        ARAP是H18引入的一种约束,可忽略旋转,同时最大限度的减少stretch或shear;会产生类似弹性的效果,以恢复原始形态;此约束作用于三角形或四面体的整个形状,而不仅仅是边;这对有机材质或需要自然拉伸或压缩特别有用,会更平滑;Cloth约束也有Triangle Stretch选项;

        启用Preserve Volumes会应用额外约束,强制保持体积(类似tetrahedral volume约束);

        Tetrahedral stretch约束也可很好的塑性,塑性改变的时形状不是体积;

Animated pressure constraints

        气球对应两种约束,外部表面可拉伸的cloth约束,及避免塌陷的pressure约束;pressure保持全局的体积,挤压一边,另一边会膨胀;点属性pressurescale属性可缩放pressure效果,同时应设置restlength属性;

Dynamic constraints

        通常在解算前设置约束,但也可在解算过程中设置约束(即在DOP内的force_output处,创建vellum constraint),如glue;

Shape matching

        使用shape mathing方法,在vellum中刚体模拟;是用球填充对象的体积,尽可能的接近对象外形;将球约束在一起,创建类似刚体的结构;球与其他对象碰撞计算是非常快的,此方法适用于大量对象;

        shape matching基于vellum grain,使用Sphere Packing模式来填充对象;球的大小可以统一或可变,以捕获较小的结构,球还可重叠以更好表示对象,但无论如何都是近似的;

        Vellum Configure Grain Pieces会创建vellum grain和vellum shape match,解算完后在使用Vellum Transform Pieces节点来驱动原模型;

不支持老的芯片架构,如有问题将GPU改为CPU;

Constraint browser pane

        此面板可组织、创建、编辑约束(RBD或Vellum);依据tag,来确定自定义的主层次hierarchy(列出所有约束),同一个tag多个约束类型被添加为约束layer;

  • RBD,layers由constraint_name属性定义,tag由constraint_tag属性定义;
  • Vellum,layers由type属性定义,tag由constraint_tag属性定义;

Collisions

  • collisionignore(vellum字符串点属性),碰撞对象的名字,用于指定特定对象忽略碰撞,可使用POP Collison Ignore节点,如PackedGeo对象有面属性objname,则此属性表示对象名称;
  • collisiongroup(碰撞体字符串点属性),可针对对象的一部分设置碰撞,如角色的拇指;这对于清理布料和角色间的交互非常有用,如想手指和袖子交互而不和口袋交互;

修正碰撞穿插

        当碰撞体自身穿插时,可将整个碰撞体作为cloth对象,对穿插位置使用pin软约束(其他部分使用pin硬约束),还可使用peak节点稍微增加一点厚度(为布料创建更多空间),以在解算时变形修复穿插;

摩擦力

        解算器Static Threshold参数,由属性friction控制(如无此属性默认为1),解算器Dynamic Scale参数,由属性dynamicfriction控制;如两布料碰撞,其中一布料摩擦力乘以另一布料摩擦力,再乘以全局摩擦力,就为碰撞的静摩擦力;

Advanced

Setting up a 64-bit solve

        解算布料或毛发离原点超过10000个单位,可能会引起布料褶皱或头发缠绕的问题;将对象移动高离原点更近的位置即可解决问题,还可使用64位以获得更高精度(通常不建议,速度明显变慢);

 解算器没有选项在64位操作,为将几何体设置为64位:

  • 在vellum configure cloth前,使用attribute cast节点,确保几何体和约束都是64位精度;

vellum attributes

设置属性

TypeNameDescription
vectormaterialuvGeo点属性,可由Planar Patch/Planar Patch Curve设置,用于确定各向异性;
floatbendname, stretchnameGeo点属性,默认缩放约束属性;
解算Geo属性,所有POP属性均可应用:

Dynamics: parameters

TypeNameDescription
floatdragnormal, dragtangentpoint,阻尼影响最终速度;
floatinertiapoint,hair约束旋转阻力;
integerweld, branchweld, collisionweld

point,默认为-1;

weld是用户访问,branchweld是hair约束构建,collisionweld按需生成为detangle节点;

floatfriction, dynamicfrictionpoint/detail,缩放静摩擦力和dongle摩擦力;
floatpressurescalepoint,缩放pressure约束效果,可用于充气效果;

Dynamics: state

TypeNameDescription
vectorP, pprevious, plast, v, vprevious, vlastpoint,二阶算法,先前一帧位置和速度,及先先前一帧位置和速度;
point, vectororient, orientprevious, orientlast, w, wprevious, wlastpoint,对于hair的点方向和角速度;
integerstopped

point,可被自动休眠及唤醒使用(标准的POP属性),还可释放pin的点(而不是对mass为0操作);此属性可控制方向和位置,0都不控制,1控制位置,2仅控制旋转,3都控制;

integerdeadpoint,标准的POP属性,值为1点及对应的约束均会被移除,可使用POP Kill节点设置;

collision

TypeNameDescription
floatpscalepoint,每点半径;
integerlayerpoint,软度优先级,越大越轻;
integerdisableself, disableexternalpoint,值为0表示可自碰撞和外部碰撞,值为1表示禁用碰撞;只要边或三角形任意一个点的值为0,则整个边或三角形都禁用;
floatoverlap_self, overlap_externalpoint,默认值为10000,储存原始pscale的重叠度,0表示已完全使用pscale;
stringcollisionignorepoint,vellum点禁用与指定的对象碰撞;
stringcollisiongrouppoint,待禁用的碰撞对象点组;

Targeting

TypeNameDescription
string, integertarget_path, target_ptpoint,attach目标路径及点号;
pintoanimation, gluetoanimationpoint,pintoanimation更新位置,gluetoanimation更新位置及方向;
floattargetweightpoint,影响pin点的强度?
Breaking
TypeNameDescription
float, stringbreakthreshold, breaktypepoint,weld/branch weld类型,断开;阈值小于0将不断开;
Pressure
TypeNameDescription
vector, integerpressuregradient, volumepts, volumepoint,pressuregradient体积增大的方向类似法线,volumepts计算点体积的点数组;
内部变量
TypeNameDescription
floatdP, dPwpoint,约束置换及权重;
stringpatchnamepoint,标识每个vellum对象的名字;
解算Con约束属性,由许多类型的约束,其意义取决于约束类型,通常是面属性:
Dynamics: parameters
TypeNameDescription
floatdampingratioprim,值在0~1,高于0.1可能会阻止约束收敛;
floatrestlength, restlengthorigprim,初始约束状态(距离或角度等),实际仅使用restlength,restlengthorig为方便;
pointrestvectorprim,存储方向约束,及pin约束的目标位置;
vectorrestpoint,被shapematch约束使用的起始点位置;
floatstiffnessprim,约束强度,较高的值可能需要较高迭代;
floatcompressionsstiffnessprim,压缩约束强度,较高的值可能需要较高迭代;
floatstiffnessdropoff, stiffnessdropoffmin, stiffnessscaled(解算时)prim,超过指定的阈值,刚度从stiffness~0或0~stiffness;解算时有效的光效值存储在stiffnessscaled;
stringtype

prim,约束类型

distance、stitch、branchstitch约束点长度,distance约束距离(如三角形或毛发的边),stitch距离约束的别称,branchstitch用于hair的自动焊接;
ptprimstitch点到面的约束,restvector存储prim uv;
bend四点弯曲约束,表示共享边的两个三角形,约束共享边的角度;
trianglebend三点约束,保持线的弯曲;?
angle三点约束,保持二面角,被string约束使用;
tetvolume四点约束,保持四面体体积;
pressure多点约束,表示mesh表面的所有点,保持体积;
attach、pin约束点到特定位置,attach依据target属性,pin根据matchanimation属性;
attachnormalattach to geometry的额外约束,约束目标对象方向(由restdir指定);
pinorient约束点方向;
bendtwist两点约束,将边点方向一致,可沿hair方向创建扭曲效果;
stretchshear两点约束,距离约束和弯曲约束的组合,被hair使用;
tetfiber四面体约束,可沿materialW方向压缩;
triarap三角形ARAP拉伸约束,可最大限度地减少与起始形状(restvector)偏差;
tetarap*四面体ARAP拉伸约束,可最大限度地减少与起始形状(restmatrix)偏差;
shapematch保持原始形状(rest)的约束;
Dynamics: state
TypeNameDescription
floatstress约束施加的应力大小;
Sliding
TypeNameDescription
floatslidingrateprim,滑动速率;
stringtarget_group, targetpathprim,目标位置;
stringslidingattrib, attribpromoteprim,缩放滑动速率;
Breaking
TypeNameDescription
float, stringbreakthreshold, breaktypeprim,断开约束的阈值及类型,阈值小于0将不会断开;
Plasticity
TypeNameDescription
floatplasticthreshold塑性阈值,修改restlength;如值为负,将视为拉伸比率;
plasticrate,塑性速率,设置为0是禁用塑性的最简单方法;
plastichardening塑性后的刚性
plasticflow(解算时)塑性流的大小量;
Targeting
TypeNameDescription
integermatchanimationprim,如对pin约束设置为1,将查找target_path和target_pt,更新restvector到指定位置,以便跟随目标动画;
内部变量
TypeNameDescription
vectorLprim,约束量,可能是不同刚性或压缩刚性轴;通常应使用stress属性来确定约束量;
integerptsprim,被该约束影响的点;

Tips and troubleshooting

Sources

  • vellum使用连续的碰撞检测,可很好的避免快速运动穿过布料,如几何体点数是变化的则就不起作用了;
  • 尝试和下一帧模型blend,查看是否融合,如否,检查是否有id属性(会覆盖点号),也可使用match topology节点是点号在帧间一致;
  • vellum只关心前一帧的点,不介意在每帧中对prim数随机;

Pscale

  • 默认pscale很小,但输入的任何pscale属性都会超过它;
  • vellum与不太小的pscale效果最好,会在碰撞体顶部,而没有剧烈碰撞;通常,pscale不要超过边长,否则可能会相交;
  • vellum会预处理(类似bullet),即使点在彼此之上,也不会爆开;会记录原始距离在属性上,用于降低pscale对于碰撞;当布料分离时,这些属性会松开以使布料返回不会太靠近;设置过大的pscale可能也不会爆开,但会用大的pscale碰撞测试,导致布料缓慢停止;

Speed vs Quality 四个主要的区域,可使解算又快又好:

  • substeps,对快速运动的布料很重要,如在单个子步内有太多的碰撞和变化,可能会减慢速度,使用较小的子步会提供更好的碰撞边界;
  • Constraint Iterations,使拉伸和弯曲起作用,需要更高的迭代以获得刚性、无拉伸、无弯曲;如增加子步,力的量会有效的减少,因此会减少迭代;
  • Collision Passes,外部和内部碰撞都可处理,会在约束迭代中穿插着执行;如50迭代5碰撞,则每10迭代1碰撞;增加此值有助于失败的碰撞,但也考虑增加子步;2子步10碰撞与1子步20碰撞,成本大致相同,但前者可能会更好;
  • Post Collison Passes,在所有约束迭代完成后,在执行此额外的操作;由于此过程不与约束交互,布料会以碰撞外形推出,是避免碰撞失败的最后一次尝试;

Resolving problems

  • Stretchiness,XPBD在不过度刚性方面很好,如没有足够的迭代会无法收敛;如拉伸开了,增加约束迭代;增加子步也可解决,但迭代会更加便宜;

  • Protrusion problem,突出问题,如高精度布料与尖锐几何体碰撞,可能局部会变形(因为碰撞解算完全是局部的,仅移动碰撞点);

    • 可增加Collision Passes,Substeps;

  • Failed collisions
    • Thickness,默认布料非常薄,使布料更厚可提供更多空间以对剧烈的碰撞,但不要大于边长;
    • Substeps,可减少错误,高精度布料需要高子步;
    • Post Collision Passes
    • Layer Shock,层数越高点会越轻;
  • Asymmetric solves
    • vellum使用的是Gauss Seidel而不是Jacobi,可快速收敛,但此过程不会平滑的更新;如没有完全收敛,会得到奇怪的不对称结果;因为误差会集中在一部分区域,不是均匀分布;使用Smooth Iterations参数解决上述问题;
  • Unruly objects
    • 有时物体无视能量守恒,开始加速或旋转;
    • 一种原因可能是自穿插,特别是pscale过大;可使用塑性,来一层内部的能量;
    • 另一种原因可能是没有收敛,能量不对称的留着系统中,甚至会引起没有自穿插的旋转,特别是在pressure和strut约束中;增加Smooth Iterations和Damping可避免;有时可随机排序约束,或随机排序点(在构建约束前);
  • Unstable pins
    • hard pin与强bend约束,可能会引起不稳定;使用软约束,Smooth Iterations可解决;

Restarting sims 当使用drap的输出或先去解算的作为起点,必须注意属性:

  • IDs
    • 合并多个,检查id属性是否冲突;
    • 如删除prim,检查约束是否一致;
    • 检查weld点位置是否正确;
    • 考虑后处理的fuse焊接点;
  • overlap
    • 仅当没有overlap_self或overlap_external属性时,初始帧overlap才会被计算;删除这些属性通常是安全的选择;
  • Collisions not working vellum与大多数几何体类型碰撞,但不是所有:
    • Sphere, Tube, Circle, Metaball 在prim模式时,只与中心点碰撞;
    • Bezier/NURBS Curves 与多边形hull碰撞;
    • Bezier/NURBS Mesh Surfaces 仅与hull点碰撞;
    • VDB, Volume, HeightField 在SOP仅与点碰撞,在DOP使用地形高度场或静态对象的体积碰撞;
    • Polygon Soups 与polygon一样;
    • Tetrahedra 与四面体外部的triangle碰撞;
    • Packed Geometry 与polygon一样;
    • Other Packed Types 取决于是否支持Fast Extraction选项,repack节点可转化为支持此选项;
      • 要与RBD packed geometry碰撞,需在Assemble节点后添加repack;

Crinkled cloth or tangled hair 

  • 离原点超过10000个单位,可能会引起布料褶皱或头发缠绕的问题;将对象移动高离原点更近的位置即可解决问题,还可使用64位以获得更高精度(通常不建议,速度明显变慢);

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

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

相关文章

Centos7 制作Openssh9.5 RPM包

Centos7 制作Openssh9.5 RPM包 最近都在升级Openssh版本到9.3.在博客里也放了openssh 9.5的rpm包. 详见:https://blog.csdn.net/qq_29974229/article/details/133878576 但还是有小伙伴不停追问这个rpm包是怎么做的,怕下载别人的rpm包里被加了盐. 于是做了个关于怎么用官方的o…

yolov8添加ca注意力机制

创建文件 coordAtt.py 位置:ultralytics/nn/modules/coordAtt.py ###################### CoordAtt #### start by AI&CV ############################### # https://zhuanlan.zhihu.com/p/655475515 import torch import torch.nn as nn import t…

2023年【A特种设备相关管理(锅炉压力容器压力管道)】考试内容及A特种设备相关管理(锅炉压力容器压力管道)复审考试

题库来源:安全生产模拟考试一点通公众号小程序 A特种设备相关管理(锅炉压力容器压力管道)考试内容根据新A特种设备相关管理(锅炉压力容器压力管道)考试大纲要求,安全生产模拟考试一点通将A特种设备相关管理…

使用 async/await 是必须避免的陷阱

使用 async/await 是必须避免的陷阱 如果我们使用过 nodejs,那么我们可能已经在 javaSoript 中使用了异步操作。异步任务是一个独立于 JavaSoript 引擎的主线程执行的操作。从本质上讲,这就是应用程序功能没有阻塞的 UI 的原因。 nodejs 的单线程性质&a…

外包干了2个月,技术明显退步了...

先说一下自己的情况,大专生,19年通过校招进入广州某软件公司,干了接近5年的功能测试,今年11月份,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测…

kubectl获取命名空间下所有configmap集合的方法

前言: 获取单个configmap并忽略特定字段的操作可参照:kubectl获取ConfigMap导出YAML时如何忽略某些字段。 要获取命名空间下所有ConfigMap并忽略特定字段,你可以使用kubectl命令与例如yq这样的工具结合使用来忽略或删除不需要的字段。以下是…

MYSQL8用户权限配置详解

单位的系统性能问题需要把Mysql5升级到Mysql8,需要用到Mysql8的一些特性来提升系统的性能。 配置用户权限过程中发现一些问题,学习并记录一下。 目录 一、环境 二、MySQL8 用户权限 2.1 账号管理权限 2.1.1 连接数据库 2.1.2 账号权限配置 2.2 密码…

深信服AD负载均衡频繁掉线故障分析

一个由114.114.114.114引起的AD异常 客户反馈深信服负载均衡链路频繁掉线,具体故障现象如下 可以获取到IP地址、网关 两分钟掉一次,持续一个多月,求IT的心理阴影面积! 链路监视器只设置了一个114.114.114.114 处理流程&#xff…

15:00的面试,15:06就出来了,问的问题过于变态了。。。

从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到5月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…

Web漏洞分析-SQL注入XXE注入(中下)

随着互联网的不断普及和Web应用的广泛应用,网络安全问题愈发引起广泛关注。在网络安全领域中,SQL注入和XXE注入是两个备受关注的话题,也是导致许多安全漏洞的主要原因之一。本博客将深入研究这两种常见的Web漏洞,带您探寻背后的原…

【数据结构】链表OJ题(顺序表)(C语言实现)

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ 🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿&#x1…

Linux Spug自动化运维平台本地部署与公网远程访问

文章目录 前言1. Docker安装Spug2 . 本地访问测试3. Linux 安装cpolar4. 配置Spug公网访问地址5. 公网远程访问Spug管理界面6. 固定Spug公网地址 前言 Spug 面向中小型企业设计的轻量级无 Agent 的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、文件…

分享66个在线客服JS特效,总有一款适合您

分享66个在线客服JS特效,总有一款适合您 66个在线客服JS特效下载 链接:https://pan.baidu.com/s/1VqM6ASgKRFdQ8RyzbsX4uA?pwd6666 提取码:6666 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气&#xff0…

CubieBoard5(1)——烧录Linux镜像并远程登录

前言 最近项目使用CubieBoard5,但是网络资料甚少,官方文档资料放置得很零散。因此写下博客当做笔记。 准备 硬件 CubieBoard5开发板Windows PC配套电源线以及5V适配器Micro SD卡与读卡器网线 软件 XSHELL镜像文件烧录工具 烧录固件 从CubieBoard的…

【Unity动画】为一个动画片段添加事件Events

动画不管播放到那一帧,我们都可以在这里“埋伏”一个事件(调用一个函数并且给函数传递一个参数,参数在外部设置,甚至传递一个物体)! 嗨,亲爱的Unity小伙伴们!你是否曾想过为你的动画…

作业12.5

1.定义一个基类 Animal&#xff0c;其中有一个虛函数perform&#xff08;)&#xff0c;用于在子类中实现不同的表演行为。 #include <iostream>using namespace std; class Animal { private:int weight; public:Animal(){}Animal(int weight):weight(weight){}virtual …

【MVP矩阵】裁剪空间、NDC空间、屏幕空间

裁剪空间概述 裁剪空间是一个顶点乘以MVP矩阵之后所在的空间&#xff0c;Vertex Shader的输出就是在裁剪空间上&#xff08;划重点&#xff09; NDC空间概述 接上面&#xff0c;由GPU自己做透视除法将顶点转到NDC空间 两者的转换 透视除法将Clip Space顶点的4个分量都除以…

C语言学习笔记之数组篇

数组是一组相同类型元素的集合。 目录 一维数组 数组的创建 数组的初始化 数组的使用 数组在内存中的存储 二维数组 数组的创建 数组的初始化 数组的使用 数组在内存中的存储 数组名 数组名作函数参数 一维数组 数组的创建 type_t arr_name [const_n]; //type_…

51单片机制作数字频率计

文章目录 简介设计思路工作原理Proteus软件仿真软件程序实验现象测量误差和范围总结 简介 数字频率计是能实现对周期性变化信号频率测量的仪器。传统的频率计通常是用很多的逻辑电路和时序电路来实现的&#xff0c;这种电路一般运行较慢&#xff0c;而且测量频率的范围较小。这…

java--抽象类的常见应用场景:模板方法设计模式

1.模板方法设计模式解决了什么问题&#xff1f; ①解决方法中存在重复代码的问题。 2.模板方法设计模式的写法 1、定义一个抽象类。 2、在里面定义2个方法 ①一个是模板方法&#xff1a;把相同代码放里面去。 ②一个是抽象方法&#xff1a;具体实现交给子类完成。 分析&…