link中的rel和rev属性

理解HTML文档间的关系:rel与rev属性详解
本文深入探讨HTML文档间的关系属性rel与rev的作用与使用方法,包括它们如何定义链接类型以及在不同元素上的应用。同时列举了常用的属性如Alternate、Stylesheet等,并介绍了它们在网页构建中的作用。

    这两个标记主要是用于表示文档之间的联系,rel是从源文档到目标文档的关系;rev是从目标文档到源文档的关系
rel,rev用来指定链接定义中哪一端是源端,哪一端是目的端,两者的属性都是描述链接的基本特征,即链接类型。   

  rel属性,描述了当前页面与href所指定文档的关系。

  rev属性,描述了href所指定文档与当前页面的关系。

  值得注意的是:rel属性和rev属性的使用,对于A元素和LINK元素有所不同,原则是:对于A元素,这两个属性都不是必须的;但对于LINK元素,这两个元素至少使用一个。   
  这两个属性对于用户程序、搜索引擎而言,可用不同的方式来解释。例如,用户程序可能通过导航工具栏提供对链接文档的访问,或者将下一个文档预先下载以节省访问时间。
经常用到的属性如下:
Alternate — 定义交替出现的链接
Stylesheet — 定义一个外部加载的样式表
Start — 通知搜索引擎,文档的开始
Next — 记录文档的下一页.(浏览器可以提前加载此页)
Prev — 记录文档的上一页.(定义浏览器的后退键)
Contents
Index — 当前文档的索引
Glossary — 词汇
Copyright — 当前文档的版权
Chapter — 当前文档的章节
Section — 作为文档的一部分
Subsection — 作为文档的一小部分
Appendix — 定义文档的附加信息
Help — 链接帮助信息

Bookmark — 书签

Shortcut Icon — 收藏夹中图标显示

这是模型的Prim #usda 1.0 def "Item_00" { def Xform "g1_29dof_with_hand_rev_1_0" ( prepend apiSchemas = ["IsaacRobotAPI"] variants = { string Physics = "PhysX" string Sensor = "Sensors" string left_hand = "Inspire" string right_hand = "Inspire" } prepend variantSets = ["Physics", "Sensor", "right_hand", "left_hand"] ) { string isaac:namespace ( displayName = "Namespace" doc = "Namespace of the prim in Isaac Sim" ) prepend rel isaac:physics:robotJoints = [ </Item_00/g1_29dof_with_hand_rev_1_0/joints/left_hip_pitch_joint>, </Item_00/g1_29dof_with_hand_rev_1_0/joints/left_hip_roll_joint>, </Item_00/g1_29dof_with_hand_rev_1_0/joints/left_hip_yaw_joint>, </Item_00/g1_29dof_with_hand_rev_1_0/joints/left_knee_joint>, </Item_00/g1_29dof_with_hand_rev_1_0/joints/left_ankle_pitch_joint>, </Item_00/g1_29dof_with_hand_rev_1_0/joints/left_ankle_roll_joint>, </Item_00/g1_29dof_with_hand_rev_1_0/joints/right_hip_pitch_joint>, </Item_00/g1_29dof_with_hand_rev_1_0/joints/right_hip_roll_joint>, </Item_00/g1_29dof_with_hand_rev_1_0/joints/right_hip_yaw_joint>, </Item_00/g1_29dof_with_hand_rev_1_0/joints/right_knee_joint>, </Item_00/g1_29dof_with_hand_rev_1_0/joints/right_ankle_pitch_joint>, </Item_00/g1_29dof_with_hand_rev_1_0/joints/right_ankle_roll_joint>, </Item_00/g1_29dof_with_hand_rev_1_0/joints/waist_yaw_joint>, </Item_00/g1_29dof_with_hand_rev_1_0/joints/waist_roll_joint>, </Item_00/g1_29dof_with_hand_rev_1_0/joints/waist_pitch_joint>, </Item_00/g1_29dof_with_hand_rev_1_0/joints/left_shoulder_pitch_joint>, </Item_00/g1_29dof_with_hand_rev_1_0/joints/left_shoulder_roll_joint>, </Item_00/g1_29dof_with_hand_rev_1_0/joints/left_shoulder_yaw_joint>, </Item_00/g1_29dof_with_hand_rev_1_0/joints/left_elbow_joint>, </Item_00/g1_29dof_with_hand_rev_1_0/joints/left_wrist_roll_joint>, </Item_00/g1_29dof_with_hand_rev_1_0/joints/left_wrist_pitch_joint>, </Item_00/g1_29dof_with_hand_rev_1_0/joints/left_wrist_yaw_joint>, </Item_00/g1_29dof_with_hand_rev_1_0/joints/right_shoulder_pitch_joint>, </Item_00/g1_29dof_with_hand_rev_1_0/joints/right_shoulder_roll_joint>, </Item_00/g1_29dof_with_hand_rev_1_0/joints/right_shoulder_yaw_joint>, </Item_00/g1_29dof_with_hand_rev_1_0/joints/right_elbow_joint>, </Item_00/g1_29dof_with_hand_rev_1_0/joints/right_wrist_roll_joint>, </Item_00/g1_29dof_with_hand_rev_1_0/joints/right_wrist_pitch_joint>, </Item_00/g1_29dof_with_hand_rev_1_0/joints/right_wrist_yaw_joint>, ] prepend rel isaac:physics:robotLinks = [ </Item_00/g1_29dof_with_hand_rev_1_0/pelvis>, </Item_00/g1_29dof_with_hand_rev_1_0/left_hip_pitch_link>, </Item_00/g1_29dof_with_hand_rev_1_0/left_hip_roll_link>, </Item_00/g1_29dof_with_hand_rev_1_0/left_hip_yaw_link>, </Item_00/g1_29dof_with_hand_rev_1_0/left_knee_link>, </Item_00/g1_29dof_with_hand_rev_1_0/left_ankle_pitch_link>, </Item_00/g1_29dof_with_hand_rev_1_0/left_ankle_roll_link>, </Item_00/g1_29dof_with_hand_rev_1_0/right_hip_pitch_link>, </Item_00/g1_29dof_with_hand_rev_1_0/right_hip_roll_link>, </Item_00/g1_29dof_with_hand_rev_1_0/right_hip_yaw_link>, </Item_00/g1_29dof_with_hand_rev_1_0/right_knee_link>, </Item_00/g1_29dof_with_hand_rev_1_0/right_ankle_pitch_link>, </Item_00/g1_29dof_with_hand_rev_1_0/right_ankle_roll_link>, </Item_00/g1_29dof_with_hand_rev_1_0/waist_yaw_link>, </Item_00/g1_29dof_with_hand_rev_1_0/waist_roll_link>, </Item_00/g1_29dof_with_hand_rev_1_0/torso_link>, </Item_00/g1_29dof_with_hand_rev_1_0/left_shoulder_pitch_link>, </Item_00/g1_29dof_with_hand_rev_1_0/left_shoulder_roll_link>, </Item_00/g1_29dof_with_hand_rev_1_0/left_shoulder_yaw_link>, </Item_00/g1_29dof_with_hand_rev_1_0/left_elbow_link>, </Item_00/g1_29dof_with_hand_rev_1_0/left_wrist_roll_link>, </Item_00/g1_29dof_with_hand_rev_1_0/left_wrist_pitch_link>, </Item_00/g1_29dof_with_hand_rev_1_0/left_wrist_yaw_link>, </Item_00/g1_29dof_with_hand_rev_1_0/right_shoulder_pitch_link>, </Item_00/g1_29dof_with_hand_rev_1_0/right_shoulder_roll_link>, </Item_00/g1_29dof_with_hand_rev_1_0/right_shoulder_yaw_link>, </Item_00/g1_29dof_with_hand_rev_1_0/right_elbow_link>, </Item_00/g1_29dof_with_hand_rev_1_0/right_wrist_roll_link>, </Item_00/g1_29dof_with_hand_rev_1_0/right_wrist_pitch_link>, </Item_00/g1_29dof_with_hand_rev_1_0/right_wrist_yaw_link>, ] quatd xformOp:orient = (1, 0, 0, 0) double3 xformOp:scale = (1, 1, 1) double3 xformOp:translate = (0, 0, 0) uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:orient", "xformOp:scale"] over "right_wrist_pitch_link" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { string isaac:nameOverride ( displayName = "Name Override" doc = "Name override for prim lookup in base name search" ) } over "left_hand" { string isaac:namespace ( displayName = "Namespace" doc = "Namespace of the prim in Isaac Sim" ) } over "right_hand" { string isaac:namespace ( displayName = "Namespace" doc = "Namespace of the prim in Isaac Sim" ) } over "right_ankle_roll_link" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { string isaac:nameOverride ( displayName = "Name Override" doc = "Name override for prim lookup in base name search" ) } over "pelvis" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { string isaac:nameOverride ( displayName = "Name Override" doc = "Name override for prim lookup in base name search" ) over "pelvis_contour_link" ( prepend apiSchemas = ["IsaacReferencePointAPI"] ) { } over "imu_in_pelvis" ( prepend apiSchemas = ["IsaacReferencePointAPI"] ) { } } over "left_hip_pitch_link" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { } over "left_hip_roll_link" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { } over "left_hip_yaw_link" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { string isaac:nameOverride ( displayName = "Name Override" doc = "Name override for prim lookup in base name search" ) } over "left_knee_link" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { } over "left_ankle_pitch_link" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { } over "left_ankle_roll_link" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { } over "right_hip_pitch_link" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { } over "right_hip_roll_link" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { } over "right_hip_yaw_link" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { } over "right_knee_link" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { string isaac:nameOverride ( displayName = "Name Override" doc = "Name override for prim lookup in base name search" ) } over "right_ankle_pitch_link" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { } over "waist_yaw_link" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { } over "waist_roll_link" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { } over "torso_link" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { over "d435_link" ( prepend apiSchemas = ["IsaacReferencePointAPI"] ) { } over "head_link" ( prepend apiSchemas = ["IsaacReferencePointAPI"] ) { } over "imu_in_torso" ( prepend apiSchemas = ["IsaacReferencePointAPI"] ) { } over "logo_link" ( prepend apiSchemas = ["IsaacReferencePointAPI"] ) { } over "mid360_link" ( prepend apiSchemas = ["IsaacReferencePointAPI"] ) { } } over "left_shoulder_pitch_link" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { } over "left_shoulder_roll_link" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { } over "left_shoulder_yaw_link" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { } over "left_elbow_link" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { } over "left_wrist_roll_link" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { } over "left_wrist_pitch_link" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { } over "left_wrist_yaw_link" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { over "left_hand_palm_link" ( prepend apiSchemas = ["IsaacReferencePointAPI"] ) { } } over "right_shoulder_pitch_link" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { } over "right_shoulder_roll_link" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { } over "right_shoulder_yaw_link" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { } over "right_elbow_link" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { } over "right_wrist_roll_link" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { } over "right_wrist_yaw_link" ( prepend apiSchemas = ["IsaacLinkAPI"] ) { over "right_hand_palm_link" ( prepend apiSchemas = ["IsaacReferencePointAPI"] ) { } } over "joints" { over "left_hip_pitch_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "left_hip_roll_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "left_hip_yaw_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "left_knee_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "left_ankle_pitch_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "left_ankle_roll_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "right_hip_pitch_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "right_hip_roll_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "right_hip_yaw_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "right_knee_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "right_ankle_pitch_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "right_ankle_roll_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "waist_yaw_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "waist_roll_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "waist_pitch_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "left_shoulder_pitch_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "left_shoulder_roll_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "left_shoulder_yaw_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "left_elbow_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "left_wrist_roll_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "left_wrist_pitch_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "left_wrist_yaw_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "left_hand_index_0_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "left_hand_index_1_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "left_hand_middle_0_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "left_hand_middle_1_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "left_hand_thumb_0_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "left_hand_thumb_1_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "left_hand_thumb_2_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "right_shoulder_pitch_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "right_shoulder_roll_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "right_shoulder_yaw_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "right_elbow_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "right_wrist_roll_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "right_wrist_pitch_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } over "right_wrist_yaw_joint" ( prepend apiSchemas = ["IsaacJointAPI"] ) { } } variantSet "Physics" = { "None" ( customData = { string[] variantPrimPaths = ["left_hand", "right_hand"] } prepend references = @https://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Isaac/5.0/Isaac/Robots/Unitree/G1/configuration/g1_29dof_with_hand_rev_1_0_base.usd@ ) { over "joints" ( active = false ) { } over "left_hand" ( variants = { string Physics = "None" } ) { } over "right_hand" ( variants = { string Physics = "None" } ) { } } "PhysX" ( customData = { string[] variantPrimPaths = ["left_hand", "right_hand"] } prepend payload = @https://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Isaac/5.0/Isaac/Robots/Unitree/G1/configuration/g1_29dof_with_hand_rev_1_0_physics.usd@ ) { over "left_hand" ( variants = { string Physics = "Physx" } ) { } over "right_hand" ( variants = { string Physics = "Physx" } ) { } } "SimplifiedPhysX" ( customData = { string[] variantPrimPaths = ["left_hand", "right_hand"] } prepend payload = @https://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Isaac/5.0/Isaac/Robots/Unitree/G1/configuration/g1_29dof_with_hand_rev_1_0_physics_simplified.usd@ ) { over "left_hand" ( variants = { string Physics = "Physx" } ) { } over "right_hand" ( variants = { string Physics = "Physx" } ) { } } } variantSet "Sensor" = { "None" { } "Sensors" ( prepend payload = @https://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Isaac/5.0/Isaac/Robots/Unitree/G1/configuration/g1_29dof_with_hand_rev_1_0_sensor.usd@ ) { } } variantSet "left_hand" = { "Inspire" ( prepend payload = @https://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Isaac/5.0/Isaac/Robots/Unitree/G1/configuration/g1_left_hand_inspire_left_physics.usd@ ) { prepend rel isaac:physics:robotJoints = </Item_00/g1_29dof_with_hand_rev_1_0/inspire_left_hand> prepend rel isaac:physics:robotLinks = </Item_00/g1_29dof_with_hand_rev_1_0/inspire_left_hand> } "None" { } "ThreeFinger" ( prepend payload = @https://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Isaac/5.0/Isaac/Robots/Unitree/G1/configuration/g1_left_hand_three_finger_hand_physics_left.usd@ ) { prepend rel isaac:physics:robotJoints = </Item_00/g1_29dof_with_hand_rev_1_0/left_hand> prepend rel isaac:physics:robotLinks = </Item_00/g1_29dof_with_hand_rev_1_0/left_hand> } } variantSet "right_hand" = { "Inspire" ( prepend payload = @https://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Isaac/5.0/Isaac/Robots/Unitree/G1/configuration/g1_right_hand_inspire_right_physics.usd@ ) { prepend rel isaac:physics:robotJoints = </Item_00/g1_29dof_with_hand_rev_1_0/inspire_right_hand> prepend rel isaac:physics:robotLinks = </Item_00/g1_29dof_with_hand_rev_1_0/inspire_right_hand> } "None" { } "ThreeFinger" ( prepend payload = @https://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Isaac/5.0/Isaac/Robots/Unitree/G1/configuration/g1_right_hand_three_finger_hand_physics_right.usd@ ) { prepend rel isaac:physics:robotJoints = </Item_00/g1_29dof_with_hand_rev_1_0/right_hand> prepend rel isaac:physics:robotLinks = </Item_00/g1_29dof_with_hand_rev_1_0/right_hand> } } } }
09-10
<think> 我们正在讨论的是Isaac Sim中宇树G1机器人的USD模型代码解析。根据用户提供的上下文,用户可能已经拥有一个G1模型的Prim USD文件(通常以.usda或.usd为后缀),并希望了解如何解析、使用优化该模型。 由于用户提到了"模型G1的Prim #usda 1.0代码",我们将重点放在解析USD文件上。USD(Universal Scene Description)是NVIDIA Isaac Sim使用的场景描述格式。一个典型的G1机器人USD模型会包含多个组成部分:刚体、关节、传感器等。 下面按照用户的需求,分三部分进行: 1. USD代码解析:解释G1模型的USD文件结构 2. 使用方法:如何在Isaac Sim中加载操控该模型 3. 优化调试:针对性能、物理特性等方面的优化方法 --- ### 1. **G1模型USD代码解析** 一个基本的G1机器人USD文件结构如下(简化版): ```usda #usda 1.0 ( defaultPrim = "G1" metersPerUnit = 1.0 ) def Xform "G1" ( prepend apiSchemas = ["PhysicsRigidBodyAPI", "PhysicsMassAPI"] ) { matrix4d xformOp:transform = ( (1,0,0,0), (0,1,0,0), (0,0,1,0), (0,0,0.6,1) ) uniform token[] xformOpOrder = ["xformOp:transform"] # 身体主体(躯干) def Mesh "body" { float3[] extent = [(-0.3,-0.2,-0.1), (0.3,0.2,0.1)] int[] faceVertexCount = [4, 4, ...] int[] faceVertexIndices = [0,1,2,3, 4,5,6,7, ...] point3f[] points = [(-0.3,-0.2,-0.1), (0.3,-0.2,-0.1), ...] color3f[] primvars:displayColor = [(0.5, 0.5, 0.5)] } # 腿部关节(示例:左前腿髋关节) def RevoluteJoint "joint_hip_left" { uniform token physics:axis = "Z" rel physics:body0 = </G1/body> rel physics:body1 = </G1/upper_leg_left> float physics:lowerLimit = -45 float physics:upperLimit = 45 float physics:joint:position = 0 # 初始角度 } # 更多关节连杆定义... } ``` #### 关键元素解析: - **`defaultPrim`**: 指定场景的根节点,这里是"G1" - **`Xform`**: 定义机器人的整体变换(初始位置姿态) - **`Mesh`**: 定义刚体的几何形状(通常为简化碰撞体) - **`RevoluteJoint`**: 旋转关节,包含: - `physics:axis`: 旋转轴(Z轴) - `physics:body0``physics:body1`: 连接的父子刚体 - `physics:lowerLimit`/`physics:upperLimit`: 关节角度限制 - `physics:joint:position`: 关节初始位置(弧度) > 完整模型包含12个关节(4条腿×3关节/腿)多个刚体连杆[^1] --- ### 2. **在Isaac Sim中使用G1模型** #### 加载USD模型 ```python from omni.isaac.core import World world = World(stage_units_in_meters=1.0) # 加载USD文件 asset_path = "/path/to/unitree_g1.usd" prim_path = "/World/Robots/G1" position = np.array([0, 0, 0.6]) # 初始高度避免碰撞 # 在场景中添加机器人 world.scene.add( name="g1_robot", prim_path=prim_path, usd_path=asset_path, position=position ) world.reset() ``` #### 关节控制示例 ```python robot = world.scene.get_object("g1_robot") articulation_controller = robot.get_articulation_controller() # 设置PD控制目标位置(左肩关节抬起30度) target_positions = [0] * 12 # 12个关节 target_positions[4] = np.deg2rad(30) # 索引4对应左肩关节 # 创建关节动作 action = robot.create_action( joint_positions=target_positions, joint_efforts=[200]*12 # 最大扭矩限制 ) articulation_controller.apply_action(action) ``` --- ### 3. **模型优化与调试** #### 物理参数优化 ```python # 调整关节摩擦(减小sim2real差距) for joint in robot.dof_names: robot.set_joint_friction(joint_name=joint, value=0.05) # 摩擦系数范围[0,1] # 调整关节阻尼(抑制振荡) robot.set_joint_damping(joint_names=robot.dof_names, damping_coeffs=[0.1]*12) ``` #### 碰撞体简化(性能优化) ```usda # 在USD中用立方体替代复杂网格(原始文件内修改) def Cube "collision_cube" ( prepend apiSchemas = ["PhysicsCollisionAPI"] ) { double size = 0.1 matrix4d xformOp:transform = ( (1,0,0,0), (0,1,0,0), (0,0,1,0
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值