2.0.4 • Published 2 days ago

@antv/g-plugin-box2d v2.0.4

Weekly downloads
-
License
MIT
Repository
github
Last release
2 days ago

@antv/g-plugin-box2d

支持 Box2D 物理引擎(仅支持刚体)。2D 图形初始化后开始仿真,在任意时刻可以施加外力改变图形的位置和旋转角度。

运行时加载 WASM 方式使用,entry 使用 UMD:

目前使用 Box2D 2.4,参考文档:https://box2d.org/documentation/。

安装方式

创建插件并在渲染器中注册:

import { Plugin as PluginBox2D } from '@antv/g-plugin-box2d';
renderer.registerPlugin(new PluginBox2D());

在 2D 图形中使用相关物理属性:

new Circle({
    style: {
        rigid: 'dynamic', // 动态物体,参与受力计算
        density: 10, // 密度:10 千克/平方米
        r: 10, // 半径:对应物理世界中 10 米
    },
});

全局配置

全局物理世界配置。

gravity

重力,默认值为 [0, 100]

new PluginBox2D({
  gravity: [0, 10], // 物理世界中的重力
}),

timeStep

仿真时间间隔,默认值为 1/60

velocityIterations

默认值为 8

positionIterations

默认值为 3

图形物理属性

Box2D 使用如下物理单位:米、千克和秒。

https://box2d.org/documentation/mdd_1git_hub_box2d_docs_loose_ends.html#autotoc_md124

Box2D uses MKS (meters, kilograms, and seconds) units and radians for angles.

rigid

刚体类型:

  • static 静态物体,例如地面
  • dynamic 动态物体,计算受力
  • kinematic

density

密度,千克/平方米。静态物体为 0。

linearVelocity

线速度,默认值为 [0, 0]

angularVelocity

角速度,默认值为 0

gravityScale

重力因子,默认值为 1https://box2d.org/documentation/mdd_1git_hub_box2d_docs_dynamics.html#autotoc_md60

linearDamping

阻尼,默认值为 0https://box2d.org/documentation/mdd_1git_hub_box2d_docs_dynamics.html#autotoc_md59

angularDamping

角阻尼,默认值为 0https://box2d.org/documentation/mdd_1git_hub_box2d_docs_dynamics.html#autotoc_md59

fixedRotation

固定旋转角度,默认值为 falsehttps://box2d.org/documentation/mdd_1git_hub_box2d_docs_dynamics.html#autotoc_md62

bullet

默认值为 falsehttps://box2d.org/documentation/mdd_1git_hub_box2d_docs_dynamics.html#autotoc_md63

对物体施加外力

除了通过初始化参数进行仿真,在任意时刻都可以通过施加外力,改变物体的位置和旋转角度。

https://box2d.org/documentation/mdd_1git_hub_box2d_docs_dynamics.html#autotoc_md71

void b2Body::ApplyForce(const b2Vec2& force, const b2Vec2& point);
void b2Body::ApplyTorque(float torque);
void b2Body::ApplyLinearImpulse(const b2Vec2& impulse, const b2Vec2& point);
void b2Body::ApplyAngularImpulse(float impulse);

applyForce

const plugin = new PluginBox2D();
plugin.applyForce(circle, [0, 0], [0, 0]);

applyTorque

applyLinearImpulse

applyAngularImpulse

WIP 流体

使用 liquidfun:https://github.com/Birch-san/box2d-wasm/blob/c04514c040/README.md#alternative-distributions

2.0.4

2 days ago

2.0.3

4 days ago

2.0.2

17 days ago

2.0.1

1 month ago

2.0.0

2 months ago

1.9.24

2 months ago

1.9.23

2 months ago

1.9.22-next.20

2 months ago

1.9.22-next.19

2 months ago

1.9.22-next.18

2 months ago

1.9.22-next.17

2 months ago

1.9.22-next.16

2 months ago

1.9.22-next.15

2 months ago

1.9.22-next.14

2 months ago

1.9.22

3 months ago

1.9.22-next.13

3 months ago

1.9.22-next.12

3 months ago

1.9.22-next.11

3 months ago

1.9.22-next.10

3 months ago

1.9.22-next.9

3 months ago

1.9.22-next.8

3 months ago

1.9.22-next.7

4 months ago

1.9.22-next.4

4 months ago

1.9.22-next.6

4 months ago

1.9.22-next.1

4 months ago

1.9.22-next.2

4 months ago

1.9.22-next.3

4 months ago

1.9.22-next.0

4 months ago

1.9.21

4 months ago

1.9.20

5 months ago

1.9.19

6 months ago

1.9.18

6 months ago

1.9.17

6 months ago

1.9.16

6 months ago

1.9.15

7 months ago

1.9.14

7 months ago

1.9.13

9 months ago

1.9.12

9 months ago

1.9.11

9 months ago

1.9.10

9 months ago

1.9.8

9 months ago

1.9.7

10 months ago

1.9.6

10 months ago

1.9.5

10 months ago

1.9.4

10 months ago

1.9.3

10 months ago

1.9.2

10 months ago

1.9.1

11 months ago

1.9.0

11 months ago

1.8.0

11 months ago

1.8.0-beta.1

11 months ago

1.7.52

11 months ago

1.7.53

11 months ago

1.8.0-alpha.1

11 months ago

1.7.50

12 months ago

1.7.51

12 months ago

1.7.47

1 year ago

1.7.48

1 year ago

1.7.49

12 months ago

1.7.39

1 year ago

1.7.40

1 year ago

1.7.41

1 year ago

1.7.42

1 year ago

1.7.43

1 year ago

1.7.44

1 year ago

1.7.45

1 year ago

1.7.46

1 year ago

1.7.35

1 year ago

1.7.36

1 year ago

1.7.37

1 year ago

1.7.38

1 year ago

1.7.19

2 years ago

1.7.20

2 years ago

1.7.21

2 years ago

1.7.22

2 years ago

1.7.23

2 years ago

1.7.24

2 years ago

1.7.25

2 years ago

1.7.26

2 years ago

1.7.27

2 years ago

1.7.28

1 year ago

1.7.29

1 year ago

1.7.30

1 year ago

1.7.31

1 year ago

1.7.32

1 year ago

1.7.33

1 year ago

1.7.34

1 year ago

1.7.18

2 years ago

1.7.10

2 years ago

1.7.11

2 years ago

1.7.12

2 years ago

1.7.13

2 years ago

1.7.14

2 years ago

1.7.15

2 years ago

1.7.16

2 years ago

1.7.17

2 years ago

1.7.9

2 years ago

1.7.8

2 years ago

1.7.7

2 years ago

1.7.6

2 years ago

1.7.5

2 years ago

1.7.4

2 years ago

1.7.3

2 years ago

1.7.2

2 years ago

1.7.1

2 years ago

1.2.0

2 years ago

1.6.4

2 years ago

1.6.3

2 years ago

1.6.2

2 years ago

1.6.1

2 years ago

1.6.0

2 years ago

1.2.3

2 years ago

1.4.0

2 years ago

1.2.2

2 years ago

1.2.1

2 years ago

1.1.3-alpha.1

2 years ago

1.1.3-alpha.0

2 years ago

1.1.8-alpha.1

2 years ago

1.1.8-alpha.0

2 years ago

1.1.8

2 years ago

1.5.3

2 years ago

1.1.7

2 years ago

1.7.0

2 years ago

1.5.2

2 years ago

1.1.6

2 years ago

1.5.1

2 years ago

1.1.5

2 years ago

1.6.0-alpha.0

2 years ago

1.5.0

2 years ago

1.1.4

2 years ago

1.3.1

2 years ago

1.1.3

2 years ago

1.3.0

2 years ago

1.1.1

2 years ago

1.0.13-alpha.13

2 years ago

1.1.0

2 years ago

1.0.13-alpha.14

2 years ago

1.0.13-alpha.11

2 years ago

1.0.13-alpha.12

2 years ago

1.0.13-alpha.15

2 years ago

1.0.13-alpha.16

2 years ago

1.1.2

2 years ago

1.0.13-alpha.0

2 years ago

1.0.13-alpha.2

2 years ago

1.0.13-alpha.4

2 years ago

1.0.13-alpha.7

2 years ago

1.0.12-alpha.1

2 years ago

1.0.13-alpha.6

2 years ago

1.0.12-alpha.2

2 years ago

1.0.13-alpha.9

2 years ago

1.0.13-alpha.8

2 years ago

1.0.11

2 years ago

1.0.12-alpha.0

2 years ago

1.0.14

2 years ago

1.0.13-alpha.10

2 years ago

1.0.13

2 years ago

1.0.12

2 years ago

1.0.10

2 years ago

1.0.9

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago