优化准星渲染
This commit is contained in:
parent
a78bfaf004
commit
551f31bf59
11 changed files with 78 additions and 572 deletions
|
@ -1,5 +1,6 @@
|
|||
package com.atsuishio.superbwarfare.client;
|
||||
|
||||
import com.atsuishio.superbwarfare.Mod;
|
||||
import com.atsuishio.superbwarfare.event.ClientEventHandler;
|
||||
import com.atsuishio.superbwarfare.item.gun.data.GunData;
|
||||
import com.atsuishio.superbwarfare.item.gun.data.value.AttachmentType;
|
||||
|
@ -18,6 +19,7 @@ import net.minecraft.resources.ResourceLocation;
|
|||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.world.item.ItemDisplayContext;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import org.joml.Matrix4f;
|
||||
import software.bernie.geckolib.animation.AnimationProcessor;
|
||||
import software.bernie.geckolib.cache.object.GeoBone;
|
||||
import software.bernie.geckolib.util.RenderUtil;
|
||||
|
@ -110,7 +112,7 @@ public class AnimationHelper {
|
|||
RenderUtil.scaleMatrixForBone(stack, bone);
|
||||
RenderUtil.translateAwayFromPivotPoint(stack, bone);
|
||||
PoseStack.Pose pose = stack.last();
|
||||
VertexConsumer vertexConsumer = buffer.getBuffer(ModRenderTypes.MUZZLE_FLASH_TYPE);
|
||||
VertexConsumer vertexConsumer = buffer.getBuffer(ModRenderTypes.MUZZLE_FLASH_TYPE.apply(Mod.loc("textures/particle/flare.png")));
|
||||
vertex(vertexConsumer, pose, packedLightIn, 0.0F, 0, 0, 1);
|
||||
vertex(vertexConsumer, pose, packedLightIn, 1.0F, 0, 1, 1);
|
||||
vertex(vertexConsumer, pose, packedLightIn, 1.0F, 1, 1, 0);
|
||||
|
@ -175,4 +177,34 @@ public class AnimationHelper {
|
|||
stack.popPose();
|
||||
}
|
||||
}
|
||||
|
||||
public static void handleZoomCrossHair(MultiBufferSource currentBuffer, RenderType renderType, String boneName, PoseStack stack, GeoBone bone, MultiBufferSource buffer, int packedLightIn, double x, double y, double z, int r, int g, int b, int a, String name) {
|
||||
if (boneName.equals("cross") && ClientEventHandler.zoomPos > 0.8) {
|
||||
stack.pushPose();
|
||||
stack.translate(x, y, -z);
|
||||
RenderUtil.translateMatrixToBone(stack, bone);
|
||||
RenderUtil.translateToPivotPoint(stack, bone);
|
||||
RenderUtil.rotateMatrixAroundBone(stack, bone);
|
||||
RenderUtil.scaleMatrixForBone(stack, bone);
|
||||
RenderUtil.translateAwayFromPivotPoint(stack, bone);
|
||||
PoseStack.Pose pose = stack.last();
|
||||
Matrix4f $$7 = pose.pose();
|
||||
VertexConsumer $$9 = buffer.getBuffer(ModRenderTypes.MUZZLE_FLASH_TYPE.apply(Mod.loc("textures/crosshair/" + name + ".png")));
|
||||
vertexRGB($$9, $$7, pose, packedLightIn, 0.0F, 0, 0, 1, r, g, b, a);
|
||||
vertexRGB($$9, $$7, pose, packedLightIn, 1.0F, 0, 1, 1, r, g, b, a);
|
||||
vertexRGB($$9, $$7, pose, packedLightIn, 1.0F, 1, 1, 0, r, g, b, a);
|
||||
vertexRGB($$9, $$7, pose, packedLightIn, 0.0F, 1, 0, 0, r, g, b, a);
|
||||
stack.popPose();
|
||||
}
|
||||
currentBuffer.getBuffer(renderType);
|
||||
}
|
||||
|
||||
private static void vertexRGB(VertexConsumer pConsumer, Matrix4f pPose, PoseStack.Pose pNormal, int pLightmapUV, float pX, float pY, int pU, int pV, int r, int g, int b, int a) {
|
||||
pConsumer.addVertex(pPose, pX - 0.5F, pY - 0.5F, 0.0F)
|
||||
.setColor(r, g, b, a)
|
||||
.setUv((float) pU, (float) pV)
|
||||
.setOverlay(OverlayTexture.NO_OVERLAY)
|
||||
.setLight(pLightmapUV)
|
||||
.setNormal(pNormal, 0.0F, 1.0F, 0.0F);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package com.atsuishio.superbwarfare.client;
|
||||
|
||||
import com.atsuishio.superbwarfare.Mod;
|
||||
import com.mojang.blaze3d.vertex.DefaultVertexFormat;
|
||||
import com.mojang.blaze3d.vertex.VertexFormat;
|
||||
import net.minecraft.Util;
|
||||
|
@ -34,34 +33,21 @@ public class ModRenderTypes extends RenderType {
|
|||
|
||||
//DickSheep的恩情还不完
|
||||
|
||||
public static final RenderType MUZZLE_FLASH_TYPE =
|
||||
RenderType.create(
|
||||
"muzzle_flash",
|
||||
DefaultVertexFormat.POSITION_TEX_COLOR, // 注意:格式名改为 POSITION_COLOR_TEX(不是 TEX)
|
||||
VertexFormat.Mode.QUADS,
|
||||
256,
|
||||
false,
|
||||
true,
|
||||
// 使用新的 CompositeState 构造方式
|
||||
RenderType.CompositeState.builder()
|
||||
// 关键修复:使用内置的 POSITION_COLOR_TEX_SHADER(直接调用 ShaderStateShard)
|
||||
.setShaderState(RENDERTYPE_EYES_SHADER)
|
||||
// 启用半透明(确保正确排序)
|
||||
.setTransparencyState(RenderStateShard.TRANSLUCENT_TRANSPARENCY)
|
||||
// 绑定贴图(替换为你的路径)
|
||||
.setTextureState(new RenderStateShard.TextureStateShard(
|
||||
Mod.loc("textures/particle/flare.png"),
|
||||
false, // 不模糊
|
||||
false // 不生成Mipmap
|
||||
))
|
||||
// 禁用光照和覆盖颜色
|
||||
.setLightmapState(RenderStateShard.NO_LIGHTMAP)
|
||||
.setOverlayState(RenderStateShard.NO_OVERLAY)
|
||||
// 深度测试和写入设置
|
||||
// .setDepthTestState(RenderStateShard.NO_DEPTH_TEST)
|
||||
.setWriteMaskState(RenderStateShard.COLOR_WRITE)
|
||||
.createCompositeState(false)
|
||||
);
|
||||
|
||||
public static final Function<ResourceLocation, RenderType> MUZZLE_FLASH_TYPE = Util.memoize((location) -> {
|
||||
TextureStateShard shard = new RenderStateShard.TextureStateShard(location, false, false);
|
||||
RenderType.CompositeState state = RenderType.CompositeState.builder()
|
||||
// 关键修复:使用内置的 POSITION_COLOR_TEX_SHADER(直接调用 ShaderStateShard)
|
||||
.setShaderState(RENDERTYPE_EYES_SHADER)
|
||||
// 启用半透明(确保正确排序)
|
||||
.setTransparencyState(RenderStateShard.TRANSLUCENT_TRANSPARENCY)
|
||||
// 绑定贴图
|
||||
.setTextureState(shard)
|
||||
// 禁用光照和覆盖颜色
|
||||
.setLightmapState(RenderStateShard.NO_LIGHTMAP)
|
||||
.setOverlayState(RenderStateShard.NO_OVERLAY)
|
||||
.setWriteMaskState(RenderStateShard.COLOR_WRITE)
|
||||
.createCompositeState(false);
|
||||
|
||||
return RenderType.create("muzzle_flash", DefaultVertexFormat.POSITION_TEX_COLOR, VertexFormat.Mode.QUADS, 256, false, true, state);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,27 +0,0 @@
|
|||
package com.atsuishio.superbwarfare.client.layer.gun;
|
||||
|
||||
import com.atsuishio.superbwarfare.Mod;
|
||||
import com.atsuishio.superbwarfare.item.gun.rifle.Hk416Item;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.texture.OverlayTexture;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import software.bernie.geckolib.cache.object.BakedGeoModel;
|
||||
import software.bernie.geckolib.renderer.GeoRenderer;
|
||||
import software.bernie.geckolib.renderer.layer.GeoRenderLayer;
|
||||
|
||||
public class Hk416Layer extends GeoRenderLayer<Hk416Item> {
|
||||
private static final ResourceLocation LAYER = Mod.loc("textures/item/hk416_e.png");
|
||||
|
||||
public Hk416Layer(GeoRenderer<Hk416Item> entityRenderer) {
|
||||
super(entityRenderer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(PoseStack poseStack, Hk416Item animatable, BakedGeoModel bakedModel, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, float partialTick, int packedLight, int packedOverlay) {
|
||||
RenderType glowRenderType = RenderType.eyes(LAYER);
|
||||
getRenderer().reRender(getDefaultBakedModel(animatable), poseStack, bufferSource, animatable, glowRenderType, bufferSource.getBuffer(glowRenderType), partialTick, packedLight, OverlayTexture.NO_OVERLAY, 0xFFFFFFFF);
|
||||
}
|
||||
}
|
|
@ -46,9 +46,6 @@ public class Hk416ItemModel extends GeoModel<Hk416Item> {
|
|||
GeoBone scope = getAnimationProcessor().getBone("Scope1");
|
||||
GeoBone scope2 = getAnimationProcessor().getBone("Scope2");
|
||||
GeoBone scope3 = getAnimationProcessor().getBone("Scope3");
|
||||
GeoBone cross1 = getAnimationProcessor().getBone("Cross1");
|
||||
GeoBone cross2 = getAnimationProcessor().getBone("Cross2");
|
||||
GeoBone cross3 = getAnimationProcessor().getBone("Cross3");
|
||||
GeoBone kuaimanji = getAnimationProcessor().getBone("kuaimanji");
|
||||
|
||||
Player player = Minecraft.getInstance().player;
|
||||
|
@ -79,14 +76,14 @@ public class Hk416ItemModel extends GeoModel<Hk416Item> {
|
|||
case 0 -> 0.2f;
|
||||
case 1 -> 0.4f;
|
||||
case 2 -> 0.8f;
|
||||
case 3 -> 0.78f;
|
||||
case 3 -> 0.9f;
|
||||
default -> 0f;
|
||||
};
|
||||
float posZ = switch (type) {
|
||||
case 0 -> 3f;
|
||||
case 1 -> 3.5f;
|
||||
case 2 -> 7.4f;
|
||||
case 3 -> 6.8f;
|
||||
case 3 -> 7.5f;
|
||||
default -> 0f;
|
||||
};
|
||||
|
||||
|
@ -99,8 +96,6 @@ public class Hk416ItemModel extends GeoModel<Hk416Item> {
|
|||
scope2.setScaleZ(1f - (0.8f * (float) zp));
|
||||
scope3.setScaleZ(1f - (0.5f * (float) zp));
|
||||
|
||||
var data = GunData.from(stack);
|
||||
|
||||
GeoBone shen;
|
||||
if (zt < 0.5) {
|
||||
shen = getAnimationProcessor().getBone("fireRootNormal");
|
||||
|
@ -133,17 +128,13 @@ public class Hk416ItemModel extends GeoModel<Hk416Item> {
|
|||
|
||||
CrossHairOverlay.gunRot = shen.getRotZ();
|
||||
|
||||
cross1.setPosY(-0.75f * (float) fpz);
|
||||
cross2.setPosY(-0.7f * (float) fpz);
|
||||
cross3.setPosY(-0.2f * (float) fpz);
|
||||
|
||||
GeoBone l = getAnimationProcessor().getBone("l");
|
||||
GeoBone r = getAnimationProcessor().getBone("r");
|
||||
rotXBipod = Mth.lerp(1.5f * times, rotXBipod, isProne(player) ? -90 : 0);
|
||||
l.setRotX(rotXBipod * Mth.DEG_TO_RAD);
|
||||
r.setRotX(rotXBipod * Mth.DEG_TO_RAD);
|
||||
|
||||
int mode = data.fireMode.get();
|
||||
int mode = GunData.from(stack).fireMode.get();
|
||||
|
||||
kuaimanji.setRotX(mode == 2 ? 90 * Mth.DEG_TO_RAD : 0);
|
||||
|
||||
|
|
|
@ -8,12 +8,14 @@ import com.atsuishio.superbwarfare.item.gun.GunItem;
|
|||
import com.atsuishio.superbwarfare.item.gun.data.GunData;
|
||||
import com.atsuishio.superbwarfare.item.gun.data.value.AttachmentType;
|
||||
import com.atsuishio.superbwarfare.item.gun.rifle.Hk416Item;
|
||||
import com.atsuishio.superbwarfare.tools.GunsTool;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.world.item.ItemDisplayContext;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import software.bernie.geckolib.cache.object.BakedGeoModel;
|
||||
|
@ -24,11 +26,10 @@ import java.util.HashSet;
|
|||
import java.util.Set;
|
||||
|
||||
public class Hk416ItemRenderer extends GeoItemRenderer<Hk416Item> {
|
||||
public static double zoomFactor;
|
||||
|
||||
public Hk416ItemRenderer() {
|
||||
super(new Hk416ItemModel());
|
||||
// TODO layer
|
||||
// this.addRenderLayer(new Hk416Layer(this));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -82,18 +83,6 @@ public class Hk416ItemRenderer extends GeoItemRenderer<Hk416Item> {
|
|||
if (!(itemStack.getItem() instanceof GunItem)) return;
|
||||
var data = GunData.from(itemStack);
|
||||
|
||||
if (name.equals("Cross1")) {
|
||||
bone.setHidden(ClientEventHandler.zoomPos < 0.7 || data.attachment.get(AttachmentType.SCOPE) != 1);
|
||||
}
|
||||
|
||||
if (name.equals("Cross2")) {
|
||||
bone.setHidden(ClientEventHandler.zoomPos < 0.7 || data.attachment.get(AttachmentType.SCOPE) != 2);
|
||||
}
|
||||
|
||||
if (name.equals("Cross3")) {
|
||||
bone.setHidden(ClientEventHandler.zoomPos < 0.7 || data.attachment.get(AttachmentType.SCOPE) != 3);
|
||||
}
|
||||
|
||||
if (GunData.from(itemStack).attachment.get(AttachmentType.SCOPE) == 2
|
||||
&& (name.equals("hidden"))) {
|
||||
bone.setHidden(ClientEventHandler.zoomPos > 0.7 && ClientEventHandler.zoom);
|
||||
|
@ -104,6 +93,19 @@ public class Hk416ItemRenderer extends GeoItemRenderer<Hk416Item> {
|
|||
bone.setHidden(ClientEventHandler.zoomPos > 0.7 && ClientEventHandler.zoom);
|
||||
}
|
||||
|
||||
int scopeType = GunData.from(itemStack).attachment.get(AttachmentType.SCOPE);
|
||||
zoomFactor = Mth.lerp(0.01 * partialTick, zoomFactor, GunsTool.getGunDoubleTag(GunData.from(itemStack).tag, "CustomZoom"));
|
||||
|
||||
switch (scopeType) {
|
||||
case 1 ->
|
||||
AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, packedLightIn, 0, 0.25, 30, 0, 255, 0, 255, "eotech");
|
||||
case 2 ->
|
||||
AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, packedLightIn, 0, 0.313, 9, 255, 0, 0, 255, "acog");
|
||||
case 3 ->
|
||||
AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, packedLightIn, 0, 0.29, Math.max(38 - 5.2 * zoomFactor, 3), 255, 0, 0, 255, "lpvo");
|
||||
}
|
||||
;
|
||||
|
||||
AnimationHelper.handleShootFlare(name, stack, itemStack, bone, buffer, packedLightIn, 0, 0, 1.440625, 0.3);
|
||||
|
||||
ItemModelHelper.handleGunAttachments(bone, itemStack, name);
|
||||
|
|
|
@ -9839,489 +9839,6 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Cross1",
|
||||
"parent": "0",
|
||||
"pivot": [0, 4.81172, -497.5],
|
||||
"cubes": [
|
||||
{
|
||||
"origin": [-1, 9.33906, -497.5],
|
||||
"size": [2, 0.5, 0],
|
||||
"uv": {
|
||||
"south": {"uv": [78, 56], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-2.4319, 8.74595, -497.5],
|
||||
"size": [2, 0.5, 0],
|
||||
"pivot": [-2.20684, 8.1145, -497.5],
|
||||
"rotation": [0, 0, -22.5],
|
||||
"uv": {
|
||||
"south": {"uv": [78, 56], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-3.98178, 8.74595, -497.5],
|
||||
"size": [2, 0.5, 0],
|
||||
"pivot": [-2.20684, 8.1145, -497.5],
|
||||
"rotation": [0, 0, -45],
|
||||
"uv": {
|
||||
"south": {"uv": [78, 56], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-5.41369, 9.33906, -497.5],
|
||||
"size": [2, 0.5, 0],
|
||||
"pivot": [-2.20684, 8.1145, -497.5],
|
||||
"rotation": [0, 0, -67.5],
|
||||
"uv": {
|
||||
"south": {"uv": [78, 56], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-5.07771, 3.23633, -497.5],
|
||||
"size": [2, 0.5, 0],
|
||||
"pivot": [-3.30277, 2.60488, -497.5],
|
||||
"rotation": [0, 0, -135],
|
||||
"uv": {
|
||||
"south": {"uv": [78, 56], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-6.50962, 3.82945, -497.5],
|
||||
"size": [2, 0.5, 0],
|
||||
"pivot": [-3.30277, 2.60488, -497.5],
|
||||
"rotation": [0, 0, -157.5],
|
||||
"uv": {
|
||||
"south": {"uv": [78, 56], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-3.52783, 3.23633, -497.5],
|
||||
"size": [2, 0.5, 0],
|
||||
"pivot": [-3.30277, 2.60488, -497.5],
|
||||
"rotation": [0, 0, -112.5],
|
||||
"uv": {
|
||||
"south": {"uv": [78, 56], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-5.77734, 4.56172, -497.5],
|
||||
"size": [2, 0.5, 0],
|
||||
"pivot": [-4.77734, 4.81172, -497.5],
|
||||
"rotation": [0, 0, -90],
|
||||
"uv": {
|
||||
"south": {"uv": [78, 56], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-0.25, 9.83906, -497.5],
|
||||
"size": [0.5, 2, 0],
|
||||
"pivot": [0, 4.81172, -497.5],
|
||||
"rotation": [0, 0, -90],
|
||||
"uv": {
|
||||
"south": {"uv": [78, 56], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-0.25, 9.83906, -497.5],
|
||||
"size": [0.5, 2, 0],
|
||||
"pivot": [0, 4.81172, -497.5],
|
||||
"rotation": [0, 0, 90],
|
||||
"uv": {
|
||||
"south": {"uv": [78.25, 56], "uv_size": [-0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-0.25, 9.83906, -497.5],
|
||||
"size": [0.5, 2, 0],
|
||||
"uv": {
|
||||
"south": {"uv": [78.25, 56], "uv_size": [-0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-0.25, 9.83906, -497.5],
|
||||
"size": [0.5, 2, 0],
|
||||
"pivot": [0, 4.81172, -497.5],
|
||||
"rotation": [0, 0, -180],
|
||||
"uv": {
|
||||
"south": {"uv": [78, 56], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-0.5, 4.31172, -497.5],
|
||||
"size": [1, 1, 0],
|
||||
"pivot": [0, 4.81172, -497.5],
|
||||
"rotation": [0, 0, -135],
|
||||
"uv": {
|
||||
"south": {"uv": [78, 56], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [3.52593, 8.07515, -497.5],
|
||||
"size": [2, 0.5, 0],
|
||||
"pivot": [2.38867, 4.6299, -497.5],
|
||||
"rotation": [0, 0, 157.5],
|
||||
"uv": {
|
||||
"south": {"uv": [78, 56], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [2.13479, 6.88081, -497.5],
|
||||
"size": [2, 0.5, 0],
|
||||
"pivot": [2.38867, 4.6299, -497.5],
|
||||
"rotation": [0, 0, 112.5],
|
||||
"uv": {
|
||||
"south": {"uv": [78, 56], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [2.94914, 7.33962, -497.5],
|
||||
"size": [2, 0.5, 0],
|
||||
"pivot": [2.38867, 4.6299, -497.5],
|
||||
"rotation": [0, 0, 135],
|
||||
"uv": {
|
||||
"south": {"uv": [78, 56], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [1.20684, 6.76857, -497.5],
|
||||
"size": [2, 0.5, 0],
|
||||
"pivot": [2.38867, 4.6299, -497.5],
|
||||
"rotation": [0, 0, 90],
|
||||
"uv": {
|
||||
"south": {"uv": [78, 56], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [0.30658, 7.01997, -497.5],
|
||||
"size": [2, 0.5, 0],
|
||||
"pivot": [2.38867, 4.6299, -497.5],
|
||||
"rotation": [0, 0, 67.5],
|
||||
"uv": {
|
||||
"south": {"uv": [78, 56], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-0.88776, 8.41112, -497.5],
|
||||
"size": [2, 0.5, 0],
|
||||
"pivot": [2.38867, 4.6299, -497.5],
|
||||
"rotation": [0, 0, 22.5],
|
||||
"uv": {
|
||||
"south": {"uv": [78, 56], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-0.42895, 7.59676, -497.5],
|
||||
"size": [2, 0.5, 0],
|
||||
"pivot": [2.38867, 4.6299, -497.5],
|
||||
"rotation": [0, 0, 45],
|
||||
"uv": {
|
||||
"south": {"uv": [78, 56], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [3.77734, 8.97541, -497.5],
|
||||
"size": [2, 0.5, 0],
|
||||
"pivot": [2.38867, 4.6299, -497.5],
|
||||
"rotation": [0, 0, -180],
|
||||
"uv": {
|
||||
"south": {"uv": [78, 56], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Cross2",
|
||||
"parent": "0",
|
||||
"pivot": [0, -1.88125, -329.05],
|
||||
"cubes": [
|
||||
{
|
||||
"origin": [-3.675, -11.08125, -329.05],
|
||||
"size": [7.35, 18.4, 0],
|
||||
"uv": {
|
||||
"south": {"uv": [219.25, 164], "uv_size": [36.75, 92]}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Cross3",
|
||||
"parent": "0",
|
||||
"pivot": [0, 4.79044, -115.99707],
|
||||
"cubes": [
|
||||
{
|
||||
"origin": [-0.03795, -5.41758, -115.99707],
|
||||
"size": [0.07591, 20.41603, 0],
|
||||
"pivot": [0, 4.79044, -115.99707],
|
||||
"rotation": [0, 0, -90],
|
||||
"uv": {
|
||||
"south": {"uv": [29, 111], "uv_size": [0.25, 19.75]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-0.03795, -5.41758, -115.99707],
|
||||
"size": [0.07591, 20.41603, 0],
|
||||
"uv": {
|
||||
"south": {"uv": [30, 111], "uv_size": [0.25, 19.75]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-0.07167, -5.41758, -115.99707],
|
||||
"size": [0.14334, 4.16, 0],
|
||||
"pivot": [0, 4.79044, -115.99707],
|
||||
"rotation": [0, 0, -90],
|
||||
"uv": {
|
||||
"south": {"uv": [35, 128], "uv_size": [0.25, 4]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-0.07167, -5.41758, -115.99707],
|
||||
"size": [0.14334, 4.16, 0],
|
||||
"pivot": [0, 4.79044, -115.99707],
|
||||
"rotation": [0, 0, 90],
|
||||
"uv": {
|
||||
"south": {"uv": [36, 128], "uv_size": [0.25, 4]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-0.07167, -5.41758, -115.99707],
|
||||
"size": [0.13928, 4.16, 0],
|
||||
"uv": {
|
||||
"south": {"uv": [46, 127], "uv_size": [0.25, 4]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-0.07167, -5.41758, -115.99707],
|
||||
"size": [0.13928, 4.16, 0],
|
||||
"pivot": [0, 4.79044, -115.99707],
|
||||
"rotation": [0, 0, -180],
|
||||
"uv": {
|
||||
"south": {"uv": [47, 111], "uv_size": [0.25, 4]}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "bone97",
|
||||
"parent": "Cross3",
|
||||
"pivot": [0, 4.70349, -96.3082],
|
||||
"cubes": [
|
||||
{
|
||||
"origin": [0.03797, 4.38338, -96.3082],
|
||||
"size": [0.07053, 0.3688, 0],
|
||||
"pivot": [0, 4.78984, -96.3082],
|
||||
"rotation": [0, 0, -90],
|
||||
"uv": {
|
||||
"south": {"uv": [236.375, 176.5], "uv_size": [0.875, 1]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-0.10851, 4.38338, -96.3082],
|
||||
"size": [0.07053, 0.3688, 0],
|
||||
"pivot": [0, 4.78984, -96.3082],
|
||||
"rotation": [0, 0, 90],
|
||||
"uv": {
|
||||
"south": {"uv": [237.25, 176.5], "uv_size": [-0.875, 1]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-0.10818, 4.89835, -96.3082],
|
||||
"size": [0.07053, 0.30111, 0],
|
||||
"pivot": [0, 4.78984, -96.3082],
|
||||
"rotation": [0, 0, 180],
|
||||
"uv": {
|
||||
"south": {"uv": [236.375, 177.5], "uv_size": [0.875, -1]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [0.03797, 4.82749, -96.3082],
|
||||
"size": [0.07053, 0.3688, 0],
|
||||
"pivot": [0, 4.78984, -96.3082],
|
||||
"rotation": [0, 0, 90],
|
||||
"uv": {
|
||||
"south": {"uv": [236.375, 177.5], "uv_size": [0.875, -1]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [0.03765, 4.89835, -96.3082],
|
||||
"size": [0.07053, 0.30111, 0],
|
||||
"pivot": [0, 4.78984, -96.3082],
|
||||
"rotation": [0, 0, -180],
|
||||
"uv": {
|
||||
"south": {"uv": [237.25, 177.5], "uv_size": [-0.875, -1]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-0.10851, 4.82749, -96.3082],
|
||||
"size": [0.07053, 0.3688, 0],
|
||||
"pivot": [0, 4.78984, -96.3082],
|
||||
"rotation": [0, 0, -90],
|
||||
"uv": {
|
||||
"south": {"uv": [237.25, 177.5], "uv_size": [-0.875, -1]}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "bone173",
|
||||
"parent": "Cross3",
|
||||
"pivot": [0, 4.79044, -115.99707],
|
||||
"cubes": [
|
||||
{
|
||||
"origin": [-0.05542, 3.6028, -115.99707],
|
||||
"size": [0.11084, 0.07962, 0],
|
||||
"pivot": [0, 4.79044, -115.99707],
|
||||
"rotation": [0, 0, -90],
|
||||
"uv": {
|
||||
"south": {"uv": [44, 141], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-0.05542, 2.5628, -115.99707],
|
||||
"size": [0.11084, 0.07962, 0],
|
||||
"pivot": [0, 4.79044, -115.99707],
|
||||
"rotation": [0, 0, -90],
|
||||
"uv": {
|
||||
"south": {"uv": [59, 126], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-0.05542, 1.5228, -115.99707],
|
||||
"size": [0.11084, 0.07963, 0],
|
||||
"pivot": [0, 4.79044, -115.99707],
|
||||
"rotation": [0, 0, -90],
|
||||
"uv": {
|
||||
"south": {"uv": [45, 141], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-0.05542, 0.4828, -115.99707],
|
||||
"size": [0.11084, 0.07963, 0],
|
||||
"pivot": [0, 4.79044, -115.99707],
|
||||
"rotation": [0, 0, -90],
|
||||
"uv": {
|
||||
"south": {"uv": [59, 127], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-0.05542, 0.4828, -115.99707],
|
||||
"size": [0.11084, 0.07963, 0],
|
||||
"pivot": [0, 4.79044, -115.99707],
|
||||
"rotation": [0, 0, 90],
|
||||
"uv": {
|
||||
"south": {"uv": [46, 141], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-0.05542, 3.6028, -115.99707],
|
||||
"size": [0.11084, 0.07962, 0],
|
||||
"pivot": [0, 4.79044, -115.99707],
|
||||
"rotation": [0, 0, 90],
|
||||
"uv": {
|
||||
"south": {"uv": [59, 128], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-0.05542, 2.5628, -115.99707],
|
||||
"size": [0.11084, 0.07962, 0],
|
||||
"pivot": [0, 4.79044, -115.99707],
|
||||
"rotation": [0, 0, 90],
|
||||
"uv": {
|
||||
"south": {"uv": [47, 141], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-0.05542, 1.5228, -115.99707],
|
||||
"size": [0.11084, 0.07963, 0],
|
||||
"pivot": [0, 4.79044, -115.99707],
|
||||
"rotation": [0, 0, 90],
|
||||
"uv": {
|
||||
"south": {"uv": [59, 129], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "bone174",
|
||||
"parent": "Cross3",
|
||||
"pivot": [0, 4.79044, -115.99707],
|
||||
"rotation": [0, 0, -90],
|
||||
"cubes": [
|
||||
{
|
||||
"origin": [-0.05542, 3.6028, -115.99707],
|
||||
"size": [0.11084, 0.07962, 0],
|
||||
"pivot": [0, 4.79044, -115.99707],
|
||||
"rotation": [0, 0, -90],
|
||||
"uv": {
|
||||
"south": {"uv": [48, 141], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-0.05542, 2.5628, -115.99707],
|
||||
"size": [0.11084, 0.07962, 0],
|
||||
"pivot": [0, 4.79044, -115.99707],
|
||||
"rotation": [0, 0, -90],
|
||||
"uv": {
|
||||
"south": {"uv": [59, 130], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-0.05542, 1.5228, -115.99707],
|
||||
"size": [0.11084, 0.07963, 0],
|
||||
"pivot": [0, 4.79044, -115.99707],
|
||||
"rotation": [0, 0, -90],
|
||||
"uv": {
|
||||
"south": {"uv": [49, 141], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-0.05542, 0.4828, -115.99707],
|
||||
"size": [0.11084, 0.07963, 0],
|
||||
"pivot": [0, 4.79044, -115.99707],
|
||||
"rotation": [0, 0, -90],
|
||||
"uv": {
|
||||
"south": {"uv": [59, 131], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-0.05542, 0.4828, -115.99707],
|
||||
"size": [0.11084, 0.07963, 0],
|
||||
"pivot": [0, 4.79044, -115.99707],
|
||||
"rotation": [0, 0, 90],
|
||||
"uv": {
|
||||
"south": {"uv": [50, 141], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-0.05542, 3.6028, -115.99707],
|
||||
"size": [0.11084, 0.07962, 0],
|
||||
"pivot": [0, 4.79044, -115.99707],
|
||||
"rotation": [0, 0, 90],
|
||||
"uv": {
|
||||
"south": {"uv": [59, 132], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-0.05542, 2.5628, -115.99707],
|
||||
"size": [0.11084, 0.07962, 0],
|
||||
"pivot": [0, 4.79044, -115.99707],
|
||||
"rotation": [0, 0, 90],
|
||||
"uv": {
|
||||
"south": {"uv": [51, 141], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-0.05542, 1.5228, -115.99707],
|
||||
"size": [0.11084, 0.07963, 0],
|
||||
"pivot": [0, 4.79044, -115.99707],
|
||||
"rotation": [0, 0, 90],
|
||||
"uv": {
|
||||
"south": {"uv": [59, 133], "uv_size": [0.25, 0.25]}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "magazine",
|
||||
"parent": "0",
|
||||
|
@ -20117,11 +19634,6 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "flare",
|
||||
"parent": "0",
|
||||
"pivot": [0.05, 1.75, -23.05]
|
||||
},
|
||||
{
|
||||
"name": "Righthand",
|
||||
"parent": "0",
|
||||
|
@ -20142,6 +19654,16 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "flare",
|
||||
"parent": "0",
|
||||
"pivot": [0.05, 1.75, -23.05]
|
||||
},
|
||||
{
|
||||
"name": "cross",
|
||||
"parent": "0",
|
||||
"pivot": [0, 4, -1000]
|
||||
},
|
||||
{
|
||||
"name": "camera",
|
||||
"pivot": [3.17141, 5.16276, 9.77702]
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
Binary file not shown.
After Width: | Height: | Size: 26 KiB |
Binary file not shown.
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 90 KiB |
Binary file not shown.
Before Width: | Height: | Size: 5.5 KiB |
Loading…
Add table
Reference in a new issue