Added reactor preliminary rendering (very wip)

Crystal model by mouse961
Matter model & texture by LemADEC
This commit is contained in:
Unknown 2019-05-14 01:30:17 +02:00 committed by unknown
parent 4ca0002759
commit 2e4b51ddba
10 changed files with 851 additions and 0 deletions

View file

@ -3,6 +3,7 @@ package cr0s.warpdrive.block.energy;
import cr0s.warpdrive.block.BlockAbstractContainer; import cr0s.warpdrive.block.BlockAbstractContainer;
import cr0s.warpdrive.data.ReactorFace; import cr0s.warpdrive.data.ReactorFace;
import cr0s.warpdrive.data.EnumTier; import cr0s.warpdrive.data.EnumTier;
import cr0s.warpdrive.render.TileEntityEnanReactorCoreRenderer;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.properties.PropertyInteger; import net.minecraft.block.properties.PropertyInteger;
@ -14,6 +15,10 @@ import net.minecraft.world.World;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import net.minecraftforge.fml.client.registry.ClientRegistry;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class BlockEnanReactorCore extends BlockAbstractContainer { public class BlockEnanReactorCore extends BlockAbstractContainer {
public static final PropertyInteger ENERGY = PropertyInteger.create("energy", 0, 3); public static final PropertyInteger ENERGY = PropertyInteger.create("energy", 0, 3);
@ -56,6 +61,17 @@ public class BlockEnanReactorCore extends BlockAbstractContainer {
return new TileEntityEnanReactorCore(); return new TileEntityEnanReactorCore();
} }
@SideOnly(Side.CLIENT)
@Override
public void modelInitialisation() {
super.modelInitialisation();
if (enumTier != EnumTier.BASIC) {
// Bind our TESR to our tile entity
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityEnanReactorCore.class, new TileEntityEnanReactorCoreRenderer());
}
}
@Override @Override
public void breakBlock(final World world, @Nonnull final BlockPos blockPos, @Nonnull final IBlockState blockState) { public void breakBlock(final World world, @Nonnull final BlockPos blockPos, @Nonnull final IBlockState blockState) {
super.breakBlock(world, blockPos, blockState); super.breakBlock(world, blockPos, blockState);

View file

@ -67,6 +67,16 @@ public class TileEntityEnanReactorCore extends TileEntityEnanReactorController {
private long releasedThisCycle = 0; // amount of energy released during current cycle private long releasedThisCycle = 0; // amount of energy released during current cycle
private long energyReleasedLastCycle = 0; private long energyReleasedLastCycle = 0;
// client properties
public float client_rotationCore_deg = 0.0F;
public float client_rotationSpeedCore_degPerTick = 2.0F;
public float client_rotationMatter_deg = 0.0F;
public float client_rotationSpeedMatter_degPerTick = 2.0F;
public float client_radiusMatter_m = 0.0F;
public float client_radiusSpeedMatter_mPerTick = 0.0F;
public float client_yCore = 0.0F;
public float client_yCoreSpeed_mPerTick = 0.0F;
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
private final WeakReference<TileEntityEnanReactorLaser>[] weakTileEntityLasers = (WeakReference<TileEntityEnanReactorLaser>[]) Array.newInstance(WeakReference.class, ReactorFace.maxInstabilities); private final WeakReference<TileEntityEnanReactorLaser>[] weakTileEntityLasers = (WeakReference<TileEntityEnanReactorLaser>[]) Array.newInstance(WeakReference.class, ReactorFace.maxInstabilities);
@ -105,11 +115,57 @@ public class TileEntityEnanReactorCore extends TileEntityEnanReactorController {
} }
} }
@Override
protected void onFirstUpdateTick() {
super.onFirstUpdateTick();
client_rotationCore_deg = world.rand.nextFloat() * 360.0F;
client_rotationSpeedCore_degPerTick = 2.0F * (float) instabilityValues[0];
client_rotationMatter_deg = world.rand.nextFloat() * 360.0F;
client_rotationSpeedMatter_degPerTick = client_rotationSpeedCore_degPerTick * 0.98F;
client_radiusMatter_m = 0.0F;
client_radiusSpeedMatter_mPerTick = 0.0F;
// we start at 0.5F to have a small animation on block placement
client_yCore = containedEnergy == 0 ? 0.5F : (float) vCenter.y - pos.getY();
client_yCoreSpeed_mPerTick = 0.0F;
}
@Override @Override
public void update() { public void update() {
super.update(); super.update();
if (world.isRemote) { if (world.isRemote) {
float stabilityAverage = 0.0F;
final ReactorFace[] reactorFaces = ReactorFace.getLasers(enumTier);
for (final ReactorFace reactorFace : reactorFaces) {
stabilityAverage += (float) instabilityValues[reactorFace.indexStability];
}
stabilityAverage /= reactorFaces.length;
final float radiusMatterMax = (float) vCenter.y - pos.getY();
final float rotationTarget_degPerTick = 0.5F * stabilityAverage;
final float radiusMatterTarget = containedEnergy <= 10000 ? 0.0F : radiusMatterMax * (containedEnergy / (float) energyStored_max);
final float yCoreTarget = containedEnergy == 0 ? 1.0F : radiusMatterMax;
// elastic rotation
client_rotationCore_deg += client_rotationSpeedCore_degPerTick;
client_rotationSpeedCore_degPerTick = 0.975F * client_rotationSpeedCore_degPerTick
+ 0.025F * rotationTarget_degPerTick;
client_rotationMatter_deg += client_rotationSpeedMatter_degPerTick;
client_rotationSpeedMatter_degPerTick = 0.985F * client_rotationSpeedMatter_degPerTick
+ 0.015F * rotationTarget_degPerTick;
// linear radius
client_radiusMatter_m += client_radiusSpeedMatter_mPerTick;
final float radiusDelta = radiusMatterTarget - client_radiusMatter_m;
client_radiusSpeedMatter_mPerTick = Math.signum(radiusDelta) * Math.min(0.05F, Math.abs(radiusDelta));
// linear position
client_yCore += client_yCoreSpeed_mPerTick;
final float yDelta = yCoreTarget - client_yCore;
client_yCoreSpeed_mPerTick = Math.signum(yDelta) * Math.min(0.05F, Math.abs(yDelta));
return; return;
} }

View file

@ -0,0 +1,144 @@
package cr0s.warpdrive.render;
import cr0s.warpdrive.WarpDrive;
import cr0s.warpdrive.block.energy.TileEntityEnanReactorCore;
import cr0s.warpdrive.client.SpriteManager;
import java.util.List;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.GlStateManager.DestFactor;
import net.minecraft.client.renderer.GlStateManager.SourceFactor;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.renderer.block.model.IBakedModel;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
import net.minecraftforge.client.model.IModel;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.common.model.TRSRTransformation;
public class TileEntityEnanReactorCoreRenderer extends TileEntitySpecialRenderer<TileEntityEnanReactorCore> {
private IBakedModel bakedModelCrystal;
private IBakedModel bakedModelMatter;
private static List<BakedQuad> quadsCrystal;
private static List<BakedQuad> quadsMatter;
public TileEntityEnanReactorCoreRenderer() {
super();
SpriteManager.add(new ResourceLocation("warpdrive:blocks/energy/reactor_core-crystal"));
SpriteManager.add(new ResourceLocation("warpdrive:blocks/energy/reactor_core-grip"));
SpriteManager.add(new ResourceLocation("warpdrive:blocks/energy/reactor_matter"));
}
private List<BakedQuad> getCrystalQuads() {
// Since we cannot bake in preInit() we do lazy baking of the model as soon as we need it for rendering
if (bakedModelCrystal == null) {
final ResourceLocation resourceLocation = new ResourceLocation(WarpDrive.MODID, "block/energy/reactor_crystal.obj");
final IModel model = RenderCommons.getModel(resourceLocation);
bakedModelCrystal = model.bake(TRSRTransformation.identity(), DefaultVertexFormats.ITEM, ModelLoader.defaultTextureGetter());
}
quadsCrystal = bakedModelCrystal.getQuads(null, null, 0L);
return quadsCrystal;
}
private List<BakedQuad> getMatterQuads() {
// Since we cannot bake in preInit() we do lazy baking of the model as soon as we need it for rendering
if (bakedModelMatter == null) {
final ResourceLocation resourceLocation = new ResourceLocation(WarpDrive.MODID, "block/energy/reactor_matter.obj");
final IModel model = RenderCommons.getModel(resourceLocation);
bakedModelMatter = model.bake(TRSRTransformation.identity(), DefaultVertexFormats.ITEM, ModelLoader.defaultTextureGetter());
}
quadsMatter = bakedModelMatter.getQuads(null, null, 0L);
return quadsMatter;
}
@Override
public void render(final TileEntityEnanReactorCore tileEntityEnanReactorCore, final double x, final double y, final double z,
final float partialTicks, final int destroyStage, final float alpha) {
if (!tileEntityEnanReactorCore.getWorld().isBlockLoaded(tileEntityEnanReactorCore.getPos(), false)) {
return;
}
if (quadsCrystal == null) {
quadsCrystal = getCrystalQuads();
}
if (quadsMatter == null) {
quadsMatter = getMatterQuads();
}
final Tessellator tessellator = Tessellator.getInstance();
GlStateManager.pushAttrib();
GlStateManager.pushMatrix();
final double yCore = y + tileEntityEnanReactorCore.client_yCore + partialTicks * tileEntityEnanReactorCore.client_yCoreSpeed_mPerTick;
GlStateManager.translate(x + 0.5D, yCore, z + 0.5D);
GlStateManager.blendFunc(SourceFactor.SRC_ALPHA, DestFactor.ONE_MINUS_SRC_ALPHA);
GlStateManager.enableBlend();
// GlStateManager.disableCull();
RenderHelper.disableStandardItemLighting();
// render the crystal
GlStateManager.enableLighting();
Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE);
final BufferBuilder worldRenderer = tessellator.getBuffer();
final float rotationCrystal = tileEntityEnanReactorCore.client_rotationCore_deg + partialTicks * tileEntityEnanReactorCore.client_rotationSpeedCore_degPerTick;
GlStateManager.rotate(rotationCrystal, 0.0F, 1.0F, 0.0F);
worldRenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK);
RenderCommons.renderModelTESR(quadsCrystal, worldRenderer, tileEntityEnanReactorCore.getWorld().getCombinedLight(tileEntityEnanReactorCore.getPos(), 15));
tessellator.draw();
// render the matter cloud
if (tileEntityEnanReactorCore.client_radiusMatter_m > 0.0F) {
GlStateManager.disableLighting();
// main model
final float radiusMatter = tileEntityEnanReactorCore.client_radiusMatter_m + partialTicks * tileEntityEnanReactorCore.client_radiusSpeedMatter_mPerTick;
final float heightMatter = Math.max(0.75F, radiusMatter / 2.0F);
GlStateManager.scale(radiusMatter, heightMatter, radiusMatter);
final float rotationMatter = tileEntityEnanReactorCore.client_rotationMatter_deg + partialTicks * tileEntityEnanReactorCore.client_rotationSpeedMatter_degPerTick
- rotationCrystal;
GlStateManager.rotate(rotationMatter, 0.0F, 1.0F, 0.0F);
worldRenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK);
RenderCommons.renderModelTESR(quadsMatter, worldRenderer, tileEntityEnanReactorCore.getWorld().getCombinedLight(tileEntityEnanReactorCore.getPos(), 15));
tessellator.draw();
// surface model, slightly bigger
GlStateManager.scale(1.1F, 1.05F, 1.1F);
final float rotationSurface = 0.5F * tileEntityEnanReactorCore.client_rotationSpeedMatter_degPerTick;
GlStateManager.rotate(rotationSurface, 0.0F, 1.0F, 0.0F);
worldRenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK);
RenderCommons.renderModelTESR(quadsMatter, worldRenderer, tileEntityEnanReactorCore.getWorld().getCombinedLight(tileEntityEnanReactorCore.getPos(), 15));
tessellator.draw();
// core model, slightly smaller
GlStateManager.scale(1.1F, 1.05F, 1.1F);
final float rotationCore = -0.75F * tileEntityEnanReactorCore.client_rotationSpeedMatter_degPerTick;
GlStateManager.rotate(rotationCore, 0.0F, 1.0F, 0.0F);
worldRenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK);
RenderCommons.renderModelTESR(quadsMatter, worldRenderer, tileEntityEnanReactorCore.getWorld().getCombinedLight(tileEntityEnanReactorCore.getPos(), 15));
tessellator.draw();
}
worldRenderer.setTranslation(0.0D, 0.0D, 0.0D);
RenderHelper.enableStandardItemLighting();
GlStateManager.disableBlend();
// GlStateManager.enableCull();
GlStateManager.popMatrix();
GlStateManager.popAttrib();
}
}

View file

@ -0,0 +1,24 @@
# Blender MTL File: 'None'
# Material Count: 2
newmtl m_crystal
# Ns 96.078431
# Ka 1.000000 1.000000 1.000000
# Kd 0.027200 0.112621 0.800000
# Ks 0.022863 0.263922 0.500000
# Ke 0.000000 0.000000 0.000000
# Ni 1.000000
d 1.000000
# illum 2
map_Kd warpdrive:blocks/energy/reactor_core-crystal
newmtl m_grip
# Ns 96.078431
# Ka 1.000000 1.000000 1.000000
# Kd 0.800000 0.543579 0.404160
# Ks 0.500000 0.433684 0.327299
# Ke 0.000000 0.000000 0.000000
# Ni 1.000000
d 1.000000
# illum 2
map_Kd warpdrive:blocks/energy/reactor_core-grip

View file

@ -0,0 +1,350 @@
# Blender v2.79 (sub 0) OBJ File: ''
# www.blender.org
mtllib reactor_crystal.mtl
o crystal
v 0.044966 -0.508000 -0.153414
v -0.000951 -0.508000 -0.053779
v -0.050220 -0.508000 -0.151799
v -0.003016 -0.508000 -0.175526
v 0.159193 0.508000 -0.015059
v 0.052666 0.508000 0.011164
v 0.139586 0.508000 0.078100
v 0.171821 0.508000 0.036242
v -0.091978 -0.508000 -0.130810
v -0.042708 -0.508000 -0.032789
v -0.150063 -0.508000 -0.055384
v -0.139182 -0.508000 -0.107083
v 0.087412 0.508000 -0.133853
v 0.041495 0.508000 -0.034218
v 0.148022 0.508000 -0.060440
v 0.135394 0.508000 -0.111741
v -0.073543 0.508000 0.159572
v -0.020718 0.508000 0.158676
v -0.022579 0.508000 0.048985
v -0.107179 0.508000 0.118831
v 0.148022 -0.508000 -0.060440
v 0.041495 -0.508000 -0.034218
v 0.087412 -0.508000 -0.133853
v 0.135394 -0.508000 -0.111741
v -0.073543 -0.508000 0.159572
v 0.078835 -0.508000 0.156987
v 0.078835 0.508000 0.156987
v -0.170569 0.508000 0.042050
v -0.170569 -0.508000 0.042050
v -0.139182 0.508000 -0.107083
v 0.171821 -0.508000 0.036242
v -0.003016 0.508000 -0.175526
v -0.020718 -0.508000 0.158676
v -0.107179 -0.508000 0.118831
v -0.022579 -0.508000 0.048985
v 0.026011 -0.508000 0.157883
v 0.024150 -0.508000 0.048192
v 0.111070 -0.508000 0.115129
v -0.050220 0.508000 -0.151799
v -0.000951 0.508000 -0.053778
v 0.044966 0.508000 -0.153414
v -0.136933 0.508000 0.082791
v -0.052334 0.508000 0.012945
v -0.159689 0.508000 -0.009650
v 0.139586 -0.508000 0.078100
v 0.052666 -0.508000 0.011164
v 0.159193 -0.508000 -0.015059
v -0.150063 0.508000 -0.055384
v -0.042708 0.508000 -0.032789
v -0.091978 0.508000 -0.130810
v 0.111070 0.508000 0.115129
v 0.024150 0.508000 0.048192
v 0.026011 0.508000 0.157883
v -0.159689 -0.508000 -0.009650
v -0.052334 -0.508000 0.012945
v -0.136933 -0.508000 0.082791
v -0.207411 0.563880 -0.019694
v -0.052334 0.563880 0.012945
v -0.042708 0.563880 -0.032789
v -0.197786 0.563880 -0.065428
v 0.149709 0.304800 0.144884
v 0.111070 0.304800 0.115129
v 0.139586 0.304800 0.078100
v 0.178224 0.304800 0.107856
v 0.026838 0.563880 0.206644
v 0.024150 0.563880 0.048192
v -0.022579 0.563880 0.048985
v -0.019891 0.563880 0.207437
v 0.178224 0.563880 0.107856
v 0.052666 0.563880 0.011164
v 0.149709 0.563880 0.144884
v -0.072122 0.304800 -0.195373
v -0.113880 0.304800 -0.174383
v -0.113880 0.563880 -0.174383
v -0.072122 0.563880 -0.195373
v 0.065378 0.563880 -0.197705
v -0.000951 0.563880 -0.053778
v 0.041495 0.563880 -0.034218
v 0.107823 0.563880 -0.178144
v -0.113880 -0.304800 -0.174383
v -0.091978 -0.304800 -0.130810
v -0.050220 -0.304800 -0.151799
v -0.072122 -0.304800 -0.195373
v -0.022579 0.970280 0.048986
v 0.024150 0.970280 0.048193
v 0.024150 -0.970280 0.048192
v 0.024150 -0.563880 0.048192
v -0.022579 -0.563880 0.048985
v -0.022579 -0.970280 0.048985
v 0.052666 0.970280 0.011165
v -0.000951 0.970280 -0.053777
v -0.042708 0.970280 -0.032788
v -0.052334 -0.563880 0.012945
v -0.052334 -0.970280 0.012945
v 0.107823 0.304800 -0.178144
v 0.065378 0.304800 -0.197705
v -0.113880 -0.563880 -0.174383
v -0.072122 -0.563880 -0.195373
v -0.000951 -0.563880 -0.053779
v -0.042708 -0.563880 -0.032789
v 0.026838 -0.563880 0.206644
v -0.019891 -0.563880 0.207437
v -0.042708 -0.970280 -0.032789
v -0.000951 -0.970280 -0.053779
v 0.065378 -0.304800 -0.197705
v 0.044966 -0.304800 -0.153414
v 0.087412 -0.304800 -0.133853
v 0.107823 -0.304800 -0.178144
v 0.178224 -0.304800 0.107856
v 0.139586 -0.304800 0.078100
v 0.111070 -0.304800 0.115129
v 0.149709 -0.304800 0.144884
v 0.041495 0.970280 -0.034217
v -0.207411 0.304800 -0.019694
v -0.159689 0.304800 -0.009650
v 0.087412 0.304800 -0.133853
v -0.207411 -0.304800 -0.019694
v -0.159689 -0.304800 -0.009650
v -0.150063 -0.304800 -0.055384
v -0.197786 -0.304800 -0.065428
v -0.197786 0.304800 -0.065428
v -0.150063 0.304800 -0.055384
v -0.052334 0.970280 0.012946
v -0.174541 0.563880 0.113839
v 0.195376 0.563880 -0.072097
v 0.065378 -0.563880 -0.197705
v 0.107823 -0.563880 -0.178144
v 0.041495 -0.563880 -0.034218
v 0.206547 0.563880 -0.026716
v -0.144786 0.563880 0.149880
v -0.174541 0.304800 0.113839
v -0.136933 0.304800 0.082791
v -0.107179 0.304800 0.118831
v -0.144786 0.304800 0.149880
v 0.206547 0.304800 -0.026716
v 0.159193 0.304800 -0.015059
v 0.044966 0.304800 -0.153414
v 0.178224 -0.563880 0.107856
v 0.149709 -0.563880 0.144884
v 0.052666 -0.563880 0.011164
v 0.195376 0.304800 -0.072097
v 0.148022 0.304800 -0.060440
v -0.091978 0.304800 -0.130810
v 0.041495 -0.970280 -0.034218
v -0.019891 0.304800 0.207437
v -0.020718 0.304800 0.158676
v -0.050220 0.304800 -0.151799
v -0.144786 -0.563880 0.149880
v -0.174541 -0.563880 0.113839
v 0.052666 -0.970280 0.011164
v -0.144786 -0.304800 0.149880
v -0.174541 -0.304800 0.113839
v 0.195376 -0.563880 -0.072097
v 0.206547 -0.563880 -0.026716
v -0.207411 -0.563880 -0.019694
v -0.019891 -0.304800 0.207437
v -0.020718 -0.304800 0.158676
v 0.195376 -0.304800 -0.072097
v 0.148022 -0.304800 -0.060440
v 0.159193 -0.304800 -0.015059
v 0.206547 -0.304800 -0.026716
v -0.197786 -0.563880 -0.065428
v 0.026011 0.304800 0.157883
v 0.026838 0.304800 0.206644
v -0.107179 -0.304800 0.118831
v 0.026838 -0.304800 0.206644
v 0.026011 -0.304800 0.157883
v -0.136933 -0.304800 0.082791
vn 0.0000 1.0000 -0.0000
vn -0.0000 -1.0000 -0.0000
vn -0.4491 0.0000 -0.8935
vn 0.0170 -0.0000 0.9999
vn 0.7923 -0.0000 0.6102
vn -0.7711 -0.0000 0.6367
vn 0.4185 0.0000 -0.9082
vn -0.2060 -0.0000 0.9786
vn 0.9082 -0.0000 0.4185
vn -0.9999 -0.0000 0.0170
vn 0.2060 0.0000 -0.9786
vn -0.9082 0.0000 -0.4185
vn -0.6101 0.0000 0.7923
vn 0.6102 0.0000 -0.7923
vn -0.6367 -0.0000 -0.7712
vn -0.6367 -0.0000 -0.7711
vn -0.8935 -0.0000 0.4491
vn -0.2390 -0.0000 -0.9710
vn 0.2390 0.0000 0.9710
vn -0.9786 0.0000 -0.2059
vn 0.6101 0.0000 -0.7923
vn 0.6367 -0.0000 0.7711
vn -0.9082 0.0000 -0.4186
vn 0.9999 0.0000 -0.0170
vn 0.8935 0.0000 -0.4491
vn -0.6366 0.0000 -0.7712
vn 0.7923 -0.0000 0.6101
vn -0.7712 -0.0000 0.6367
vn 0.9710 0.0000 -0.2390
vn -0.9786 0.0000 -0.2060
vn -0.4185 -0.0000 0.9082
vn 0.4491 -0.0000 0.8935
vn -0.9710 -0.0000 0.2390
vn -0.7923 0.0000 -0.6101
vn 0.7711 0.0000 -0.6367
vn -0.0170 0.0000 -0.9999
usemtl m_grip
s 1
f 57//1 58//1 59//1 60//1
f 61//2 62//2 63//2 64//2
f 65//1 66//1 67//1 68//1
f 69//1 70//1 66//1 71//1
f 72//3 73//3 74//3 75//3
f 76//1 77//1 78//1 79//1
f 80//1 81//1 82//1 83//1
f 84//4 67//4 66//4 85//4
f 86//4 87//4 88//4 89//4
f 85//5 66//5 70//5 90//5
f 91//3 77//3 59//3 92//3
f 89//6 88//6 93//6 94//6
f 95//7 96//7 76//7 79//7
f 74//1 59//1 77//1 75//1
f 97//2 98//2 99//2 100//2
f 101//2 102//2 88//2 87//2
f 103//3 100//3 99//3 104//3
f 105//1 106//1 107//1 108//1
f 109//1 110//1 111//1 112//1
f 113//1 84//1 85//1 90//1
f 57//8 114//8 115//8 44//8
f 95//9 79//9 13//9 116//9
f 58//8 57//8 44//8 43//8
f 68//10 67//10 19//10 18//10
f 117//1 118//1 119//1 120//1
f 60//11 59//11 49//11 48//11
f 121//11 60//11 48//11 122//11
f 77//12 76//12 41//12 40//12
f 71//13 66//13 52//13 51//13
f 84//1 113//1 91//1 123//1
f 69//14 64//14 63//14 7//14
f 124//15 58//16 43//16 42//15
f 59//17 74//17 50//17 49//17
f 78//18 125//18 15//18 14//18
f 126//2 127//2 128//2 99//2
f 61//13 71//13 51//13 62//13
f 129//19 70//19 6//19 5//19
f 121//20 114//20 57//20 60//20
f 70//21 69//21 7//21 6//21
f 67//22 130//22 20//22 19//22
f 131//2 132//2 133//2 134//2
f 135//19 129//19 5//19 136//19
f 79//9 78//9 14//9 13//9
f 76//23 96//23 137//23 41//23
f 66//24 65//24 53//24 52//24
f 138//2 139//2 87//2 140//2
f 130//22 134//22 133//22 20//22
f 125//18 141//18 142//18 15//18
f 105//7 108//7 127//7 126//7
f 75//25 77//25 40//25 39//25
f 74//17 73//17 143//17 50//17
f 104//7 99//7 128//7 144//7
f 145//10 68//10 18//10 146//10
f 131//26 124//15 42//15 132//26
f 61//27 64//27 69//27 71//27
f 72//25 75//25 39//25 147//25
f 130//1 67//1 58//1 124//1
f 148//2 149//2 93//2 88//2
f 150//5 140//5 87//5 86//5
f 151//28 152//28 149//28 148//28
f 153//2 154//2 140//2 128//2
f 80//3 83//3 98//3 97//3
f 131//28 134//28 130//28 124//28
f 72//2 147//2 143//2 73//2
f 104//2 89//2 94//2 103//2
f 92//1 123//1 91//1
f 89//2 104//2 144//2 86//2
f 101//24 87//24 37//24 36//24
f 117//8 155//8 54//8 118//8
f 144//29 128//29 140//29 150//29
f 102//10 156//10 157//10 33//10
f 153//18 128//18 22//18 21//18
f 158//1 159//1 160//1 161//1
f 87//13 139//13 38//13 37//13
f 154//19 161//19 160//19 47//19
f 109//27 112//27 139//27 138//27
f 162//11 120//11 119//11 11//11
f 97//17 100//17 10//17 9//17
f 145//2 146//2 163//2 164//2
f 99//25 98//25 3//25 2//25
f 151//22 148//22 34//22 165//22
f 117//20 120//20 162//20 155//20
f 166//24 101//24 36//24 167//24
f 109//14 138//21 45//21 110//14
f 166//1 167//1 157//1 156//1
f 88//10 102//10 33//10 35//10
f 125//1 78//1 70//1 129//1
f 105//23 126//12 1//12 106//23
f 128//9 127//9 23//9 22//9
f 135//2 136//2 142//2 141//2
f 155//8 93//8 55//8 54//8
f 158//18 153//18 21//18 159//18
f 123//6 58//6 67//6 84//6
f 98//25 83//25 82//25 3//25
f 148//22 88//22 35//22 34//22
f 113//7 78//7 77//7 91//7
f 126//12 99//12 2//12 1//12
f 139//13 112//13 111//13 38//13
f 127//9 108//9 107//9 23//9
f 138//21 140//21 46//21 45//21
f 95//2 116//2 137//2 96//2
f 93//16 149//16 56//16 55//16
f 149//26 152//26 168//26 56//26
f 155//2 162//2 100//2 93//2
f 80//17 97//17 9//17 81//17
f 100//11 162//11 11//11 10//11
f 121//2 122//2 115//2 114//2
f 90//29 70//29 78//29 113//29
f 166//4 156//4 102//4 101//4
f 151//1 165//1 168//1 152//1
f 158//29 161//29 154//29 153//29
f 135//29 141//29 125//29 129//29
f 94//30 93//30 100//30 103//30
f 92//30 59//30 58//30 123//30
f 150//2 86//2 144//2
f 145//4 164//4 65//4 68//4
f 65//24 164//24 163//24 53//24
f 140//19 154//19 47//19 46//19
usemtl m_crystal
f 1//2 2//2 3//2 4//2
f 5//1 6//1 7//1 8//1
f 9//2 10//2 11//2 12//2
f 13//1 14//1 15//1 16//1
f 17//1 18//1 19//1 20//1
f 21//2 22//2 23//2 24//2
f 17//31 25//31 26//32 27//32
f 25//31 17//31 28//33 29//33
f 12//34 29//33 28//33 30//34
f 8//27 27//32 26//32 31//27
f 16//35 8//29 31//29 24//35
f 4//36 12//34 30//34 32//36
f 24//35 4//36 32//36 16//35
f 33//2 25//2 34//2 35//2
f 36//2 37//2 38//2 26//2
f 39//1 40//1 41//1 32//1
f 42//1 43//1 44//1 28//1
f 45//2 46//2 47//2 31//2
f 48//1 49//1 50//1 30//1
f 51//1 52//1 53//1 27//1
f 54//2 55//2 56//2 29//2

View file

@ -0,0 +1,11 @@
# Blender MTL File: 'None'
# Material Count: 1
newmtl m_matter
# Ns 0
# Ka 0.000000 0.000000 0.000000
# Kd 0.8 0.8 0.8
# Ks 0.8 0.8 0.8
d 1
# illum 2
map_Kd warpdrive:blocks/energy/reactor_matter

View file

@ -0,0 +1,250 @@
# Blender v2.79 (sub 0) OBJ File: ''
# www.blender.org
mtllib reactor_matter.mtl
o matter
v -0.000000 0.287013 -0.692910
v -0.000000 0.530330 -0.530330
v 0.327762 0.530330 -0.429046
v 0.428242 0.287013 -0.560576
v -0.000000 0.750000 0.000000
v 0.287013 0.692910 0.088692
v 0.287013 0.692910 -0.088692
v 0.177383 0.692910 -0.232198
v -0.177383 0.692910 0.232198
v -0.000000 0.692910 0.287012
v 0.177384 0.692910 0.232198
v -0.000000 -0.530330 -0.530330
v -0.000000 -0.287013 -0.692910
v 0.428242 -0.287013 -0.560576
v 0.327762 -0.530330 -0.429046
v -0.000000 0.000000 -0.750000
v 0.463525 0.000000 -0.606763
v -0.000000 0.692910 -0.287013
v -0.000000 -0.692910 -0.287013
v 0.177383 -0.692910 -0.232198
v 0.692909 -0.287013 -0.214121
v 0.530330 -0.530330 -0.163881
v 0.692909 0.287013 -0.214121
v 0.750000 0.000000 -0.231763
v 0.530330 0.530330 -0.163881
v 0.287013 -0.692910 -0.088692
v -0.287013 -0.692910 0.088692
v -0.287013 -0.692910 -0.088692
v -0.000000 -0.750000 -0.000000
v -0.177383 -0.692910 0.232198
v 0.530330 -0.530330 0.163881
v 0.287013 -0.692910 0.088692
v 0.750000 -0.000000 0.231763
v 0.692909 -0.287013 0.214121
v 0.530330 0.530330 0.163881
v 0.692909 0.287013 0.214121
v -0.287013 0.692910 -0.088692
v -0.287013 0.692910 0.088692
v 0.463525 -0.000000 0.606763
v 0.428242 -0.287013 0.560576
v 0.327762 0.530330 0.429046
v 0.428242 0.287013 0.560576
v 0.327762 -0.530330 0.429046
v 0.177384 -0.692910 0.232198
v -0.000000 -0.287013 0.692910
v -0.000000 -0.530330 0.530330
v -0.000000 0.287013 0.692910
v -0.000000 -0.000000 0.750000
v -0.000000 0.530330 0.530330
v -0.000000 -0.692910 0.287012
v -0.428242 0.287013 0.560576
v -0.463525 -0.000000 0.606763
v -0.327762 0.530330 0.429046
v -0.327762 -0.530330 0.429046
v -0.428242 -0.287013 0.560576
v -0.530330 -0.530330 0.163881
v -0.750000 -0.000000 0.231763
v -0.692910 -0.287013 0.214121
v -0.530330 0.530330 0.163881
v -0.692910 0.287013 0.214121
v -0.177384 -0.692910 -0.232198
v -0.530330 0.530330 -0.163881
v -0.692910 0.287013 -0.214121
v -0.692910 -0.287013 -0.214121
v -0.530330 -0.530330 -0.163881
v -0.750000 0.000000 -0.231763
v -0.428242 -0.287013 -0.560576
v -0.327762 -0.530330 -0.429046
v -0.428242 0.287013 -0.560576
v -0.463525 0.000000 -0.606763
v -0.177384 0.692910 -0.232198
v -0.327762 0.530330 -0.429046
vn 0.2489 0.5381 -0.8053
vn 0.1765 0.9824 -0.0613
vn 0.1771 0.9824 -0.0591
vn 0.1577 0.9801 -0.1205
vn -0.0000 0.9808 0.1951
vn 0.0602 0.9790 0.1947
vn 0.2489 -0.5381 -0.8053
vn 0.2901 0.1867 -0.9386
vn 0.1692 0.8195 -0.5476
vn 0.1692 -0.8195 -0.5476
vn 0.2901 -0.1867 -0.9386
vn 0.6643 -0.5487 -0.5075
vn 0.7799 0.1918 -0.5958
vn 0.4470 0.8268 -0.3414
vn 0.4470 -0.8268 -0.3414
vn 0.7799 -0.1918 -0.5958
vn 0.6643 0.5487 -0.5075
vn -0.1771 -0.9824 0.0591
vn -0.1765 -0.9824 0.0613
vn -0.1577 -0.9801 0.1205
vn 0.1577 -0.9801 -0.1205
vn 0.5556 -0.8315 0.0000
vn 0.9808 -0.1951 -0.0000
vn 0.8315 0.5556 0.0000
vn -0.1765 0.9824 0.0613
vn -0.1771 0.9824 0.0591
vn -0.1577 0.9801 0.1205
vn 0.8315 -0.5556 0.0000
vn 0.9808 0.1951 0.0000
vn 0.5556 0.8315 0.0000
vn 0.7799 -0.1918 0.5958
vn 0.6643 0.5487 0.5075
vn 0.1577 0.9801 0.1205
vn 0.6643 -0.5487 0.5075
vn 0.7799 0.1918 0.5958
vn 0.4470 0.8268 0.3414
vn 0.4470 -0.8268 0.3414
vn 0.2489 -0.5381 0.8053
vn 0.2901 0.1867 0.9386
vn 0.1692 0.8195 0.5476
vn 0.1692 -0.8195 0.5476
vn 0.2901 -0.1867 0.9386
vn 0.2489 0.5381 0.8053
vn -0.0000 -0.9808 0.1951
vn 0.0602 -0.9790 0.1947
vn -0.2901 0.1867 0.9386
vn -0.1692 0.8195 0.5476
vn -0.1692 -0.8195 0.5476
vn -0.2901 -0.1867 0.9386
vn -0.2489 0.5381 0.8053
vn -0.2489 -0.5381 0.8053
vn -0.4470 -0.8268 0.3414
vn -0.7799 -0.1918 0.5958
vn -0.6643 0.5487 0.5075
vn 0.0000 -0.9808 -0.1951
vn 0.0602 -0.9790 -0.1947
vn 0.1771 -0.9824 0.0591
vn 0.1765 -0.9824 0.0613
vn 0.1951 -0.9808 0.0000
vn -0.6643 -0.5487 0.5075
vn -0.7799 0.1918 0.5958
vn -0.4470 0.8268 0.3414
vn -0.8315 0.5556 0.0000
vn -0.8315 -0.5556 0.0000
vn -0.9808 0.1951 0.0000
vn -0.5556 0.8315 0.0000
vn -0.5556 -0.8315 0.0000
vn -0.9808 -0.1951 -0.0000
vn -0.1577 -0.9801 -0.1205
vn -0.6643 -0.5487 -0.5075
vn -0.7799 0.1918 -0.5958
vn -0.4470 0.8268 -0.3414
vn -0.4470 -0.8268 -0.3414
vn -0.7799 -0.1918 -0.5958
vn -0.6643 0.5487 -0.5075
vn -0.1577 0.9801 -0.1205
vn -0.1692 0.8195 -0.5476
vn -0.1692 -0.8195 -0.5476
vn -0.2901 -0.1867 -0.9386
vn -0.2489 0.5381 -0.8053
vn -0.2489 -0.5381 -0.8053
vn -0.2901 0.1867 -0.9386
vn 0.0000 0.9808 -0.1951
vn -0.0602 0.9790 -0.1947
vn 0.1951 0.9808 0.0000
vn 0.0602 0.9790 -0.1947
vn -0.1951 0.9808 0.0000
vn -0.0602 0.9790 0.1947
vn -0.1951 -0.9808 0.0000
vn -0.0602 -0.9790 0.1947
vn -0.0602 -0.9790 -0.1947
vn 0.1577 -0.9801 0.1205
usemtl m_matter
s 1
f 1//1 2//1 3//1 4//1
f 5//2 7//3 8//4
f 5//5 10//5 11//6
f 12//7 13//7 14//7 15//7
f 16//8 1//8 4//8 17//8
f 2//9 18//9 8//9 3//9
f 19//10 12//10 15//10 20//10
f 13//11 16//11 17//11 14//11
f 15//12 14//12 21//12 22//12
f 17//13 4//13 23//13 24//13
f 3//14 8//14 7//14 25//14
f 20//15 15//15 22//15 26//15
f 14//16 17//16 24//16 21//16
f 4//17 3//17 25//17 23//17
f 27//18 29//19 30//20
f 29//21 20//21 26//21
f 26//22 22//22 31//22 32//22
f 21//23 24//23 33//23 34//23
f 23//24 25//24 35//24 36//24
f 5//25 38//26 9//27
f 22//28 21//28 34//28 31//28
f 24//29 23//29 36//29 33//29
f 25//30 7//30 6//30 35//30
f 34//31 33//31 39//31 40//31
f 36//32 35//32 41//32 42//32
f 6//33 5//33 11//33
f 31//34 34//34 40//34 43//34
f 33//35 36//35 42//35 39//35
f 35//36 6//36 11//36 41//36
f 32//37 31//37 43//37 44//37
f 43//38 40//38 45//38 46//38
f 39//39 42//39 47//39 48//39
f 41//40 11//40 10//40 49//40
f 44//41 43//41 46//41 50//41
f 40//42 39//42 48//42 45//42
f 42//43 41//43 49//43 47//43
f 50//44 29//44 44//45
f 48//46 47//46 51//46 52//46
f 49//47 10//47 9//47 53//47
f 50//48 46//48 54//48 30//48
f 45//49 48//49 52//49 55//49
f 47//50 49//50 53//50 51//50
f 46//51 45//51 55//51 54//51
f 30//52 54//52 56//52 27//52
f 55//53 52//53 57//53 58//53
f 51//54 53//54 59//54 60//54
f 29//55 19//55 20//56
f 32//57 29//58 26//59
f 54//60 55//60 58//60 56//60
f 52//61 51//61 60//61 57//61
f 53//62 9//62 38//62 59//62
f 60//63 59//63 62//63 63//63
f 56//64 58//64 64//64 65//64
f 57//65 60//65 63//65 66//65
f 59//66 38//66 37//66 62//66
f 27//67 56//67 65//67 28//67
f 58//68 57//68 66//68 64//68
f 29//69 28//69 61//69
f 65//70 64//70 67//70 68//70
f 66//71 63//71 69//71 70//71
f 62//72 37//72 71//72 72//72
f 28//73 65//73 68//73 61//73
f 64//74 66//74 70//74 67//74
f 63//75 62//75 72//75 69//75
f 37//76 5//76 71//76
f 72//77 71//77 18//77 2//77
f 61//78 68//78 12//78 19//78
f 67//79 70//79 16//79 13//79
f 69//80 72//80 2//80 1//80
f 68//81 67//81 13//81 12//81
f 70//82 69//82 1//82 16//82
f 5//83 18//83 71//84
f 5//2 6//85 7//3
f 5//83 8//86 18//83
f 5//25 37//87 38//26
f 5//5 9//88 10//5
f 27//18 28//89 29//19
f 50//44 30//90 29//44
f 29//55 61//91 19//55
f 32//57 44//92 29//58

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB