Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c3b9e23f3d | ||
|
|
87e94056cc | ||
|
|
c43718f8fa | ||
|
|
23f1ca4f34 | ||
|
|
95febc136f | ||
|
|
e2f13cd311 | ||
|
|
b4a2da4b88 | ||
|
|
ba9f15ee5c | ||
|
|
644437a5f0 | ||
|
|
353efb38c5 | ||
|
|
ae5a28f273 | ||
|
|
1ade6002c1 | ||
|
|
6f28527be4 | ||
|
|
f6f6889c63 | ||
|
|
638c507276 | ||
|
|
ae80c7a5bf | ||
|
|
34ea491f39 | ||
|
|
88685c6366 | ||
|
|
cc75cb631a | ||
|
|
9fccd71521 | ||
|
|
d83cc6403c | ||
|
|
1c59a3bc6f | ||
|
|
2b0e22d4c9 | ||
|
|
4c613b606a | ||
|
|
56e174ae2f | ||
|
|
908786897f | ||
|
|
33a61ca2ed | ||
|
|
b2fa0bc028 | ||
|
|
cf124b3f38 | ||
|
|
0b6096d3e8 | ||
|
|
84fcc346a9 | ||
|
|
fe1aa7220e | ||
|
|
d739141b25 | ||
|
|
2a6cc0fd87 | ||
|
|
965b54c901 | ||
|
|
e7a7cc5588 | ||
|
|
9d3cfa7e2a | ||
|
|
47c228205a | ||
|
|
b1aa61d5f0 | ||
|
|
5ca5ca194b | ||
|
|
e75f624935 | ||
|
|
d01efecb0e | ||
|
|
7d13269480 | ||
|
|
a8415db4ac | ||
|
|
1120a3e144 | ||
|
|
f2af3a7324 | ||
|
|
7c4ee37867 | ||
|
|
a38a6d3c5f | ||
|
|
876ec56780 | ||
|
|
5df4a1d8d0 | ||
|
|
d7f74212f0 | ||
|
|
3a4d11d46d | ||
|
|
e5664e207d | ||
|
|
cda6e2c822 | ||
|
|
3d97ade42e | ||
|
|
1693c74a6a | ||
|
|
11f07b154b | ||
|
|
049fb28ffc | ||
|
|
9769b88156 | ||
|
|
d032021cde | ||
|
|
77ac841b8b |
@@ -48,7 +48,6 @@ artifacts/
|
|||||||
*_i.h
|
*_i.h
|
||||||
*.ilk
|
*.ilk
|
||||||
*.meta
|
*.meta
|
||||||
*.obj
|
|
||||||
*.pch
|
*.pch
|
||||||
*.pdb
|
*.pdb
|
||||||
*.pgc
|
*.pgc
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
/workspace.xml
|
||||||
|
/vcs.xml
|
||||||
|
/modules.xml
|
||||||
|
/misc.xml
|
||||||
|
/encodings.xml
|
||||||
|
/CrystalPoint.iml
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.5)
|
||||||
|
project(CrystalPoint)
|
||||||
|
|
||||||
|
file(GLOB SOURCE_FILES
|
||||||
|
"*.h"
|
||||||
|
"*.cpp"
|
||||||
|
)
|
||||||
|
|
||||||
|
add_executable(CrystalPoint ${SOURCE_FILES})
|
||||||
|
|
||||||
|
find_package(OpenGL REQUIRED)
|
||||||
|
find_package(GLUT REQUIRED)
|
||||||
|
include_directories( ${OPENGL_INCLUDE_DIRS} ${GLUT_INCLUDE_DIRS} )
|
||||||
|
target_link_libraries(CrystalPoint ${OPENGL_LIBRARIES} ${GLUT_LIBRARY} )
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall ")
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio 14
|
||||||
|
VisualStudioVersion = 14.0.24720.0
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CrystalPoint", "CrystalPoint.vcxproj", "{F82158C7-7345-4CB0-9F90-3AB49A071904}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{F82158C7-7345-4CB0-9F90-3AB49A071904}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{F82158C7-7345-4CB0-9F90-3AB49A071904}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{F82158C7-7345-4CB0-9F90-3AB49A071904}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{F82158C7-7345-4CB0-9F90-3AB49A071904}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{F82158C7-7345-4CB0-9F90-3AB49A071904}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{F82158C7-7345-4CB0-9F90-3AB49A071904}.Release|x64.Build.0 = Release|x64
|
||||||
|
{F82158C7-7345-4CB0-9F90-3AB49A071904}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{F82158C7-7345-4CB0-9F90-3AB49A071904}.Release|x86.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
@@ -0,0 +1,102 @@
|
|||||||
|
|
||||||
|
#include "CrystalPoint.h"
|
||||||
|
#include <GL/freeglut.h>
|
||||||
|
#include <cmath>
|
||||||
|
#include <cstring>
|
||||||
|
#include "WorldHandler.h"
|
||||||
|
#include "Player.h"
|
||||||
|
|
||||||
|
int CrystalPoint::width = 0;
|
||||||
|
int CrystalPoint::height = 0;
|
||||||
|
|
||||||
|
void CrystalPoint::init()
|
||||||
|
{
|
||||||
|
player = Player::getInstance();
|
||||||
|
worldhandler = WorldHandler::getInstance();
|
||||||
|
//cursor = Cursor::getInstance();
|
||||||
|
|
||||||
|
lastFrameTime = 0;
|
||||||
|
|
||||||
|
glClearColor(0.7, 0.7, 1.0, 1.0);
|
||||||
|
|
||||||
|
mousePosition = Vec2f(width / 2, height / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CrystalPoint::draw()
|
||||||
|
{
|
||||||
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
|
|
||||||
|
//Draw world
|
||||||
|
glEnable(GL_LIGHTING);
|
||||||
|
glEnable(GL_DEPTH_TEST);
|
||||||
|
|
||||||
|
glMatrixMode(GL_PROJECTION);
|
||||||
|
glLoadIdentity();
|
||||||
|
gluPerspective(70, width / (float)height, 0.1f, 15000);
|
||||||
|
glMatrixMode(GL_MODELVIEW);
|
||||||
|
glLoadIdentity();
|
||||||
|
|
||||||
|
worldhandler->draw();
|
||||||
|
|
||||||
|
//cursor->draw();
|
||||||
|
|
||||||
|
glutSwapBuffers();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CrystalPoint::update()
|
||||||
|
{
|
||||||
|
float frameTime = glutGet(GLUT_ELAPSED_TIME) / 1000.0f;
|
||||||
|
float deltaTime = frameTime - lastFrameTime;
|
||||||
|
lastFrameTime = frameTime;
|
||||||
|
|
||||||
|
if (keyboardState.special[GLUT_KEY_LEFT] && !prevKeyboardState.special[GLUT_KEY_LEFT])
|
||||||
|
worldhandler->PreviousWorld();
|
||||||
|
if (keyboardState.special[GLUT_KEY_RIGHT] && !prevKeyboardState.special[GLUT_KEY_RIGHT])
|
||||||
|
worldhandler->NextWorld();
|
||||||
|
if (keyboardState.keys[27])
|
||||||
|
exit(0);
|
||||||
|
|
||||||
|
Player* player = Player::getInstance();
|
||||||
|
|
||||||
|
player->rotation.y += mouseOffset.x / 10.0f;
|
||||||
|
player->rotation.x += mouseOffset.y / 10.0f;
|
||||||
|
if (player->rotation.x > 90)
|
||||||
|
player->rotation.x = 90;
|
||||||
|
if (player->rotation.x < -90)
|
||||||
|
player->rotation.x = -90;
|
||||||
|
|
||||||
|
float speed = 1;
|
||||||
|
|
||||||
|
Vec3f oldPosition = player->position;
|
||||||
|
if (keyboardState.keys['a']) player->setPosition(0, deltaTime*speed, false);
|
||||||
|
if (keyboardState.keys['d']) player->setPosition(180, deltaTime*speed, false);
|
||||||
|
if (keyboardState.keys['w']) player->setPosition(90, deltaTime*speed, false);
|
||||||
|
if (keyboardState.keys['s']) player->setPosition(270, deltaTime*speed, false);
|
||||||
|
//if (keyboardState.keys['q']) player->setPosition(1, deltaTime*speed, true);
|
||||||
|
//if (keyboardState.keys['e']) player->setPosition(-1, deltaTime*speed, true);
|
||||||
|
|
||||||
|
if (!worldhandler->isPlayerPositionValid())
|
||||||
|
player->position = oldPosition;
|
||||||
|
|
||||||
|
player->position.y = worldhandler->getHeight(player->position.x, player->position.z) + 1.7f;
|
||||||
|
|
||||||
|
|
||||||
|
worldhandler->update(deltaTime);
|
||||||
|
|
||||||
|
mousePosition = mousePosition + mouseOffset;
|
||||||
|
//cursor->update(mousePosition);
|
||||||
|
|
||||||
|
mouseOffset = Vec2f(0, 0);
|
||||||
|
prevKeyboardState = keyboardState;
|
||||||
|
glutPostRedisplay();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
KeyboardState::KeyboardState()
|
||||||
|
{
|
||||||
|
memset(keys, 0, sizeof(keys));
|
||||||
|
memset(special, 0, sizeof(special));
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
class WorldHandler;
|
||||||
|
class Player;
|
||||||
|
#include "Vector.h"
|
||||||
|
|
||||||
|
class KeyboardState
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool keys[256];
|
||||||
|
bool special[256];
|
||||||
|
bool control, shift, alt;
|
||||||
|
|
||||||
|
KeyboardState();
|
||||||
|
};
|
||||||
|
|
||||||
|
class CrystalPoint
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void init();
|
||||||
|
void draw();
|
||||||
|
void update();
|
||||||
|
|
||||||
|
WorldHandler* worldhandler;
|
||||||
|
Player* player;
|
||||||
|
|
||||||
|
static int width, height;
|
||||||
|
KeyboardState keyboardState;
|
||||||
|
KeyboardState prevKeyboardState;
|
||||||
|
|
||||||
|
Vec2f mouseOffset;
|
||||||
|
Vec2f mousePosition;
|
||||||
|
|
||||||
|
float lastFrameTime;
|
||||||
|
|
||||||
|
};
|
||||||
@@ -0,0 +1,198 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|Win32">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectGuid>{F82158C7-7345-4CB0-9F90-3AB49A071904}</ProjectGuid>
|
||||||
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<RootNamespace>CrystalJohan</RootNamespace>
|
||||||
|
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
|
||||||
|
<ProjectName>CrystalPoint</ProjectName>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v140</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v140</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v140</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v140</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="Shared">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<PrecompiledHeaderFile />
|
||||||
|
<AdditionalIncludeDirectories>freeglut/include</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalLibraryDirectories>freeglut/lib</AdditionalLibraryDirectories>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<PrecompiledHeaderFile />
|
||||||
|
<AdditionalIncludeDirectories>freeglut/include</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalLibraryDirectories>freeglut/lib</AdditionalLibraryDirectories>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<PrecompiledHeaderFile />
|
||||||
|
<AdditionalIncludeDirectories>freeglut/include</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalLibraryDirectories>freeglut/lib</AdditionalLibraryDirectories>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<PrecompiledHeaderFile />
|
||||||
|
<AdditionalIncludeDirectories>freeglut/include</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalLibraryDirectories>freeglut/lib</AdditionalLibraryDirectories>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="CrystalPoint.cpp" />
|
||||||
|
<ClCompile Include="Cursor.cpp" />
|
||||||
|
<ClCompile Include="Enemy.cpp" />
|
||||||
|
<ClCompile Include="Entity.cpp" />
|
||||||
|
<ClCompile Include="HeightMap.cpp" />
|
||||||
|
<ClCompile Include="Interface.cpp" />
|
||||||
|
<ClCompile Include="json.cpp" />
|
||||||
|
<ClCompile Include="LevelObject.cpp" />
|
||||||
|
<ClCompile Include="Main.cpp" />
|
||||||
|
<ClCompile Include="Model.cpp" />
|
||||||
|
<ClCompile Include="Player.cpp" />
|
||||||
|
<ClCompile Include="Vector.cpp" />
|
||||||
|
<ClCompile Include="Vertex.cpp" />
|
||||||
|
<ClCompile Include="World.cpp" />
|
||||||
|
<ClCompile Include="WorldHandler.cpp" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="CrystalPoint.h" />
|
||||||
|
<ClInclude Include="Cursor.h" />
|
||||||
|
<ClInclude Include="Enemy.h" />
|
||||||
|
<ClInclude Include="Entity.h" />
|
||||||
|
<ClInclude Include="HeightMap.h" />
|
||||||
|
<ClInclude Include="Interface.h" />
|
||||||
|
<ClInclude Include="json.h" />
|
||||||
|
<ClInclude Include="LevelObject.h" />
|
||||||
|
<ClInclude Include="Main.h" />
|
||||||
|
<ClInclude Include="Model.h" />
|
||||||
|
<ClInclude Include="Player.h" />
|
||||||
|
<ClInclude Include="stb_image.h" />
|
||||||
|
<ClInclude Include="vector.h" />
|
||||||
|
<ClInclude Include="Vertex.h" />
|
||||||
|
<ClInclude Include="World.h" />
|
||||||
|
<ClInclude Include="WorldHandler.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="worlds\fire.json" />
|
||||||
|
<None Include="worlds\ice.json" />
|
||||||
|
<None Include="worlds\rock.json" />
|
||||||
|
<None Include="worlds\small.json" />
|
||||||
|
<None Include="worlds\worlds.json" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,140 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Source Files">
|
||||||
|
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Header Files">
|
||||||
|
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||||
|
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Resource Files">
|
||||||
|
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||||
|
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Source Files\Object">
|
||||||
|
<UniqueIdentifier>{1e464995-b141-43fd-9e25-16d6ac47176b}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Source Files\World">
|
||||||
|
<UniqueIdentifier>{0de1a037-e536-40df-a0d0-0d929f2fe752}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Source Files\json">
|
||||||
|
<UniqueIdentifier>{9c655946-3f99-44ea-bc97-2817656954e0}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="Main.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Player.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="json.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="WorldHandler.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Entity.cpp">
|
||||||
|
<Filter>Source Files\Object</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Model.cpp">
|
||||||
|
<Filter>Source Files\Object</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Vertex.cpp">
|
||||||
|
<Filter>Source Files\Object</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Vector.cpp">
|
||||||
|
<Filter>Source Files\Object</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="World.cpp">
|
||||||
|
<Filter>Source Files\World</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="HeightMap.cpp">
|
||||||
|
<Filter>Source Files\World</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="LevelObject.cpp">
|
||||||
|
<Filter>Source Files\World</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Enemy.cpp">
|
||||||
|
<Filter>Source Files\Object</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="CrystalPoint.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Cursor.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Interface.cpp">
|
||||||
|
<Filter>Source Files\World</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="World.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="Entity.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="Enemy.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="LevelObject.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="Model.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="stb_image.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="Player.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="Main.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="json.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="HeightMap.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="Vertex.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="WorldHandler.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="CrystalPoint.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="Interface.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="Cursor.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="vector.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="worlds\worlds.json">
|
||||||
|
<Filter>Source Files\json</Filter>
|
||||||
|
</None>
|
||||||
|
<None Include="worlds\fire.json">
|
||||||
|
<Filter>Source Files\json</Filter>
|
||||||
|
</None>
|
||||||
|
<None Include="worlds\ice.json">
|
||||||
|
<Filter>Source Files\json</Filter>
|
||||||
|
</None>
|
||||||
|
<None Include="worlds\small.json">
|
||||||
|
<Filter>Source Files\json</Filter>
|
||||||
|
</None>
|
||||||
|
<None Include="worlds\rock.json">
|
||||||
|
<Filter>Source Files\json</Filter>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
#include "Cursor.h"
|
||||||
|
#include <GL\freeglut.h>
|
||||||
|
#include <cmath>
|
||||||
|
#include "CrystalPoint.h"
|
||||||
|
|
||||||
|
Cursor* Cursor::instance = NULL;
|
||||||
|
|
||||||
|
Cursor::Cursor()
|
||||||
|
{
|
||||||
|
enabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Cursor::~Cursor()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
Cursor* Cursor::getInstance(void)
|
||||||
|
{
|
||||||
|
if (instance == nullptr)
|
||||||
|
instance = new Cursor();
|
||||||
|
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Cursor::enable(bool enable)
|
||||||
|
{
|
||||||
|
enabled = enable;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Cursor::isEnabled(void)
|
||||||
|
{
|
||||||
|
return enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Cursor::draw(void)
|
||||||
|
{
|
||||||
|
//Draw Cursor
|
||||||
|
glMatrixMode(GL_PROJECTION);
|
||||||
|
glLoadIdentity();
|
||||||
|
glOrtho(0, CrystalPoint::width, CrystalPoint::height, 0, -10, 10);
|
||||||
|
glMatrixMode(GL_MODELVIEW);
|
||||||
|
glLoadIdentity();
|
||||||
|
|
||||||
|
glDisable(GL_LIGHTING);
|
||||||
|
glDisable(GL_DEPTH_TEST);
|
||||||
|
glColor4f(1, cos(glutGet(GLUT_ELAPSED_TIME) / 1000.0f), sin(glutGet(GLUT_ELAPSED_TIME) / 1000.0f), 1);
|
||||||
|
|
||||||
|
glBegin(GL_TRIANGLES);
|
||||||
|
glVertex2f(mousePosition.x, mousePosition.y);
|
||||||
|
glVertex2f(mousePosition.x + 15, mousePosition.y + 15);
|
||||||
|
glVertex2f(mousePosition.x + 5, mousePosition.y + 20);
|
||||||
|
glEnd();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Cursor::update(Vec2f newPosition)
|
||||||
|
{
|
||||||
|
mousePosition = newPosition;
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "Vector.h"
|
||||||
|
|
||||||
|
class Cursor
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
Cursor();
|
||||||
|
|
||||||
|
static Cursor* instance;
|
||||||
|
bool enabled;
|
||||||
|
Vec2f mousePosition;
|
||||||
|
public:
|
||||||
|
|
||||||
|
~Cursor();
|
||||||
|
|
||||||
|
static Cursor* getInstance(void);
|
||||||
|
|
||||||
|
void enable(bool enable);
|
||||||
|
bool isEnabled(void);
|
||||||
|
|
||||||
|
void draw(void);
|
||||||
|
void update(Vec2f newPosition);
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
#define _USE_MATH_DEFINES
|
||||||
|
#include <cmath>
|
||||||
|
|
||||||
|
#include "Enemy.h"
|
||||||
|
#include "Model.h"
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
|
||||||
|
Enemy::Enemy(const std::string &fileName,
|
||||||
|
const Vec3f &position,
|
||||||
|
Vec3f &rotation,
|
||||||
|
const float &scale)
|
||||||
|
{
|
||||||
|
model = Model::load(fileName);
|
||||||
|
this->position = position;
|
||||||
|
this->rotation = rotation;
|
||||||
|
this->scale = scale;
|
||||||
|
this->canCollide = true;
|
||||||
|
target = position;
|
||||||
|
speed = 1;
|
||||||
|
radius = 20;
|
||||||
|
hasTarget = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Enemy::~Enemy()
|
||||||
|
{
|
||||||
|
if (model)
|
||||||
|
Model::unload(model);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Enemy::draw()
|
||||||
|
{
|
||||||
|
Entity::draw();
|
||||||
|
glPushMatrix();
|
||||||
|
|
||||||
|
glTranslatef(position.x, position.y, position.z);
|
||||||
|
|
||||||
|
glBegin(GL_LINE_LOOP);
|
||||||
|
for (int i = 0; i < 360; i++)
|
||||||
|
{
|
||||||
|
//convert degrees into radians
|
||||||
|
float degInRad = i*(M_PI / 180.0);
|
||||||
|
glVertex3f(cos(degInRad)*radius, 1*scale,sin(degInRad)*radius);
|
||||||
|
}
|
||||||
|
glEnd();
|
||||||
|
|
||||||
|
glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Enemy::update(float delta)
|
||||||
|
{
|
||||||
|
if (hasTarget)
|
||||||
|
{
|
||||||
|
//just 2d walking
|
||||||
|
float dx, dz, length;
|
||||||
|
|
||||||
|
dx = target.x - position.x;
|
||||||
|
dz = target.z - position.z;
|
||||||
|
|
||||||
|
length = sqrt(dx*dx + dz*dz);
|
||||||
|
if (length > 0.03)
|
||||||
|
{
|
||||||
|
dx /= length;
|
||||||
|
dz /= length;
|
||||||
|
|
||||||
|
dx *= speed*delta;
|
||||||
|
dz *= speed*delta;
|
||||||
|
|
||||||
|
position.x += dx;
|
||||||
|
position.z += dz;
|
||||||
|
}
|
||||||
|
rotation.y = atan2f(dx, dz) * 180 / M_PI;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "Entity.h"
|
||||||
|
#include <string>
|
||||||
|
#include "Vector.h"
|
||||||
|
|
||||||
|
class Enemy : public Entity
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Enemy(const std::string &fileName,const Vec3f &position,Vec3f &rotation,const float &scale);
|
||||||
|
~Enemy();
|
||||||
|
|
||||||
|
bool hasTarget;
|
||||||
|
Vec3f target;
|
||||||
|
float speed,radius;
|
||||||
|
|
||||||
|
void update(float);
|
||||||
|
void draw();
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
#include "Entity.h"
|
||||||
|
#include "cmath"
|
||||||
|
#include <GL/freeglut.h>
|
||||||
|
#include "Model.h"
|
||||||
|
|
||||||
|
|
||||||
|
Entity::Entity()
|
||||||
|
{
|
||||||
|
model = NULL;
|
||||||
|
scale = 1;
|
||||||
|
canCollide = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Entity::~Entity()
|
||||||
|
{
|
||||||
|
if(model)
|
||||||
|
Model::unload(model);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Entity::draw()
|
||||||
|
{
|
||||||
|
if (model)
|
||||||
|
{
|
||||||
|
glPushMatrix();
|
||||||
|
|
||||||
|
|
||||||
|
glTranslatef(position.x, position.y, position.z);
|
||||||
|
glRotatef(rotation.x, 1, 0, 0);
|
||||||
|
glRotatef(rotation.y, 0, 1, 0);
|
||||||
|
glRotatef(rotation.z, 0, 0, 1);
|
||||||
|
glScalef(scale, scale, scale);
|
||||||
|
//collision gaat hierdoor kapot glTranslatef(-model->center.x, 0, -model->center.z);
|
||||||
|
|
||||||
|
glEnable(GL_CULL_FACE);
|
||||||
|
glCullFace(GL_BACK);
|
||||||
|
model->draw();
|
||||||
|
glCullFace(GL_FRONT);
|
||||||
|
model->draw();
|
||||||
|
glDisable(GL_CULL_FACE);
|
||||||
|
|
||||||
|
glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Entity::inObject(const Vec3f & point)
|
||||||
|
{
|
||||||
|
if (!model)
|
||||||
|
return false;
|
||||||
|
Vec3f center = position + model->center;
|
||||||
|
float distance = ((point.x - center.x) * (point.x - center.x) + (point.z - center.z)*(point.z - center.z));
|
||||||
|
if (distance < model->radius*scale*model->radius*scale)
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "Vector.h"
|
||||||
|
class Model;
|
||||||
|
|
||||||
|
class Entity
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Entity();
|
||||||
|
~Entity();
|
||||||
|
|
||||||
|
Model* model;
|
||||||
|
|
||||||
|
virtual void draw();
|
||||||
|
virtual void update(float elapsedTime) {};
|
||||||
|
Vec3f position;
|
||||||
|
Vec3f rotation;
|
||||||
|
float scale;
|
||||||
|
|
||||||
|
bool canCollide;
|
||||||
|
bool inObject(const Vec3f &position);
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,155 @@
|
|||||||
|
#include "HeightMap.h"
|
||||||
|
#include "stb_image.h"
|
||||||
|
#include "vector.h"
|
||||||
|
|
||||||
|
#include "LevelObject.h"
|
||||||
|
|
||||||
|
#include <GL/freeglut.h>
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include "World.h"
|
||||||
|
|
||||||
|
#define RED 0
|
||||||
|
#define GREEN 1
|
||||||
|
#define BLUE 2
|
||||||
|
#define ALPHA 3
|
||||||
|
|
||||||
|
HeightMap::HeightMap(const std::string &file, World* world)
|
||||||
|
{
|
||||||
|
int bpp;
|
||||||
|
unsigned char* imgData = stbi_load(file.c_str(), &width, &height, &bpp, 4);
|
||||||
|
|
||||||
|
auto heightAt = [&](int x, int y)
|
||||||
|
{
|
||||||
|
return (imgData[(x + y * width) * 4 ] / 256.0f) * 50.0f;
|
||||||
|
};
|
||||||
|
|
||||||
|
auto valueAt = [&](int x, int y, int offset = 0)
|
||||||
|
{
|
||||||
|
return imgData[(x + y * width) * 4 + offset];
|
||||||
|
};
|
||||||
|
|
||||||
|
for (int y = 0; y < height-1; y++)
|
||||||
|
{
|
||||||
|
for (int x = 0; x < width-1; x++)
|
||||||
|
{
|
||||||
|
int offsets[4][2] = { { 0, 0 },{ 1, 0 },{ 1, 1 },{ 0, 1 } };
|
||||||
|
Vec3f ca(0, heightAt(x, y + 1) - heightAt(x, y), 1);
|
||||||
|
Vec3f ba(1, heightAt(x + 1, y) - heightAt(x, y), 0);
|
||||||
|
|
||||||
|
|
||||||
|
if (valueAt(x, y, GREEN) > 0)
|
||||||
|
{
|
||||||
|
world->addLevelObject(new LevelObject(world->getObjectFromValue(valueAt(x, y, GREEN)).first, Vec3f(x, heightAt(x, y), y), Vec3f(0, 0, 0), 1, world->getObjectFromValue(valueAt(x, y, GREEN)).second));
|
||||||
|
}
|
||||||
|
|
||||||
|
Vec3f normal = ca.cross(ba);
|
||||||
|
normal.Normalize();
|
||||||
|
|
||||||
|
for (int i = 0; i < 4; i++)
|
||||||
|
{
|
||||||
|
float h = heightAt(x + offsets[i][0], y + offsets[i][1]);
|
||||||
|
vertices.push_back(Vertex{ (float)(x + offsets[i][0]), h, (float)(y + offsets[i][1]),
|
||||||
|
normal.x, normal.y, normal.z,
|
||||||
|
(x + offsets[i][0]) / (float)height, (y + offsets[i][1]) / (float)width } );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
glGenTextures(1, &imageIndex);
|
||||||
|
glBindTexture(GL_TEXTURE_2D, imageIndex);
|
||||||
|
|
||||||
|
glTexImage2D(GL_TEXTURE_2D,
|
||||||
|
0, //level
|
||||||
|
GL_RGBA, //internal format
|
||||||
|
width, //width
|
||||||
|
height, //height
|
||||||
|
0, //border
|
||||||
|
GL_RGBA, //data format
|
||||||
|
GL_UNSIGNED_BYTE, //data type
|
||||||
|
imgData); //data
|
||||||
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
|
|
||||||
|
stbi_image_free(imgData);
|
||||||
|
}
|
||||||
|
|
||||||
|
HeightMap::~HeightMap()
|
||||||
|
{
|
||||||
|
glDeleteTextures(1, &imageIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
void HeightMap::Draw()
|
||||||
|
{
|
||||||
|
glEnable(GL_LIGHTING);
|
||||||
|
float color[] = { 0.7f, 0.7f, 0.7f, 1 };
|
||||||
|
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, color);
|
||||||
|
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, color);
|
||||||
|
|
||||||
|
glEnable(GL_TEXTURE_2D);
|
||||||
|
glBindTexture(GL_TEXTURE_2D, imageIndex);
|
||||||
|
|
||||||
|
glEnableClientState(GL_VERTEX_ARRAY);
|
||||||
|
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||||
|
//glEnableClientState(GL_COLOR_ARRAY);
|
||||||
|
glEnableClientState(GL_NORMAL_ARRAY);
|
||||||
|
|
||||||
|
glVertexPointer(3, GL_FLOAT, sizeof(Vertex), ((float*)vertices.data()) + 0);
|
||||||
|
glTexCoordPointer(2, GL_FLOAT, sizeof(Vertex), ((float*)vertices.data()) + 6);
|
||||||
|
glNormalPointer(GL_FLOAT, sizeof(Vertex), ((float*)vertices.data()) + 3);
|
||||||
|
glDrawArrays(GL_QUADS, 0, vertices.size());
|
||||||
|
|
||||||
|
glDisableClientState(GL_VERTEX_ARRAY);
|
||||||
|
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||||
|
//glDisableClientState(GL_COLOR_ARRAY);
|
||||||
|
glDisableClientState(GL_NORMAL_ARRAY);
|
||||||
|
}
|
||||||
|
|
||||||
|
float HeightMap::GetHeight(float x, float y)
|
||||||
|
{
|
||||||
|
int ix = x;
|
||||||
|
int iy = y;
|
||||||
|
|
||||||
|
int index = (ix + (width - 1) * iy) * 4;
|
||||||
|
|
||||||
|
if (index + 3 >= vertices.size())
|
||||||
|
index = vertices.size() - 4;
|
||||||
|
|
||||||
|
if (index < 0)
|
||||||
|
index = 0;
|
||||||
|
|
||||||
|
Vertex& a = vertices[index];
|
||||||
|
Vertex& b = vertices[index+1];
|
||||||
|
Vertex& c = vertices[index+3];
|
||||||
|
|
||||||
|
float lowervalue = ((b.z - c.z)*(a.x - c.x) + (c.x - b.x)*(a.z - c.z));
|
||||||
|
float labda1 = ((b.z - c.z)*(x - c.x) + (c.x - b.x)*(y - c.z)) / lowervalue;
|
||||||
|
float labda2 = ((c.y - a.y)*(x - c.x) + (a.x - c.x)*(y - c.y)) / lowervalue;
|
||||||
|
float labda3 = 1 - labda1 - labda2;
|
||||||
|
|
||||||
|
Vertex z = a * labda1 + b * labda2 + c * labda3;
|
||||||
|
|
||||||
|
return z.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
void HeightMap::SetTexture(const std::string &file)
|
||||||
|
{
|
||||||
|
int bpp, width2, height2;
|
||||||
|
unsigned char* imgData = stbi_load(file.c_str(), &width2, &height2, &bpp, 4);
|
||||||
|
|
||||||
|
glBindTexture(GL_TEXTURE_2D, imageIndex);
|
||||||
|
|
||||||
|
glTexImage2D(GL_TEXTURE_2D,
|
||||||
|
0, //level
|
||||||
|
GL_RGBA, //internal format
|
||||||
|
width2, //width
|
||||||
|
height2, //height
|
||||||
|
0, //border
|
||||||
|
GL_RGBA, //data format
|
||||||
|
GL_UNSIGNED_BYTE, //data type
|
||||||
|
imgData); //data
|
||||||
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
|
|
||||||
|
stbi_image_free(imgData);
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "Vertex.h"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
#include <GL/freeglut.h>
|
||||||
|
|
||||||
|
class World;
|
||||||
|
|
||||||
|
class HeightMap
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
int height;
|
||||||
|
int width;
|
||||||
|
|
||||||
|
GLuint imageIndex;
|
||||||
|
public:
|
||||||
|
HeightMap(const std::string &file, World* world);
|
||||||
|
~HeightMap();
|
||||||
|
|
||||||
|
void Draw();
|
||||||
|
float GetHeight(float x, float y);
|
||||||
|
void SetTexture(const std::string &file);
|
||||||
|
|
||||||
|
std::vector<Vertex> vertices;
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
#include "Interface.h"
|
||||||
|
#include <GL\freeglut.h>
|
||||||
|
#include "CrystalPoint.h"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "Player.h"
|
||||||
|
|
||||||
|
//Prototype
|
||||||
|
void glutBitmapString(std::string str, int x, int y);
|
||||||
|
|
||||||
|
Interface::Interface()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Interface::~Interface()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void Interface::draw()
|
||||||
|
{
|
||||||
|
Player* player = Player::getInstance();
|
||||||
|
|
||||||
|
//Switch view to Ortho
|
||||||
|
glMatrixMode(GL_PROJECTION);
|
||||||
|
glLoadIdentity();
|
||||||
|
glOrtho(0, 1000, 1000, 0, -10, 10);
|
||||||
|
glMatrixMode(GL_MODELVIEW);
|
||||||
|
glLoadIdentity();
|
||||||
|
|
||||||
|
glDisable(GL_LIGHTING);
|
||||||
|
glDisable(GL_DEPTH_TEST);
|
||||||
|
glDisable(GL_TEXTURE_2D);
|
||||||
|
|
||||||
|
//Draw interface
|
||||||
|
|
||||||
|
//Health bar
|
||||||
|
glBegin(GL_QUADS);
|
||||||
|
glColor4f(0,0,0, 1.0);
|
||||||
|
glVertex2f(250, 980);
|
||||||
|
glVertex2f(250, 965);
|
||||||
|
glVertex2f(750, 965);
|
||||||
|
glVertex2f(750, 980);
|
||||||
|
glEnd();
|
||||||
|
|
||||||
|
glBegin(GL_QUADS);
|
||||||
|
glColor4f(1.0f, 0.1f, 0.1f, 1.0);
|
||||||
|
glVertex2f(250, 980);
|
||||||
|
glVertex2f(250, 965);
|
||||||
|
|
||||||
|
glColor4f(1.0f, 0.5f, 0.5f, 1.0);
|
||||||
|
glVertex2f(250 + (player->health / 100 * 500), 965);
|
||||||
|
glVertex2f(250 + (player->health / 100 * 500), 980);
|
||||||
|
glEnd();
|
||||||
|
|
||||||
|
//XP bar
|
||||||
|
glBegin(GL_QUADS);
|
||||||
|
glColor4f(0, 0, 0, 1.0);
|
||||||
|
glVertex2f(250, 950);
|
||||||
|
glVertex2f(250, 935);
|
||||||
|
glVertex2f(750, 935);
|
||||||
|
glVertex2f(750, 950);
|
||||||
|
glEnd();
|
||||||
|
|
||||||
|
glBegin(GL_QUADS);
|
||||||
|
glColor4f(1.0f, 1.0f, 0.1f, 1.0);
|
||||||
|
glVertex2f(250, 950);
|
||||||
|
glVertex2f(250, 935);
|
||||||
|
|
||||||
|
glColor4f(1.0f, 1.0f, 0.5f, 1.0);
|
||||||
|
glVertex2f(250 + (player->xp / 100 * 500), 935);
|
||||||
|
glVertex2f(250 + (player->xp / 100 * 500), 950);
|
||||||
|
glEnd();
|
||||||
|
|
||||||
|
//Text: level
|
||||||
|
glColor4f(1.0f, 1.0f, 0.1f, 1.0);
|
||||||
|
glutBitmapString("Level: " + std::to_string(player->level), 490, 900);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void Interface::update(float deltaTime)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void glutBitmapString(std::string str, int x, int y)
|
||||||
|
{
|
||||||
|
glRasterPos2f(x, y);
|
||||||
|
for (int i = 0; i < str.size(); i++)
|
||||||
|
{
|
||||||
|
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, str[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
#pragma once
|
||||||
|
class Interface
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Interface();
|
||||||
|
~Interface();
|
||||||
|
|
||||||
|
void draw(void);
|
||||||
|
void update(float deltaTime);
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
#include "LevelObject.h"
|
||||||
|
|
||||||
|
#include "Model.h"
|
||||||
|
|
||||||
|
|
||||||
|
LevelObject::LevelObject(const std::string &fileName, const Vec3f &position, const Vec3f &rotation, const float &scale, const bool &hasCollision)
|
||||||
|
{
|
||||||
|
model = Model::load(fileName);
|
||||||
|
this->position = position;
|
||||||
|
this->rotation = rotation;
|
||||||
|
this->scale = scale;
|
||||||
|
this->canCollide = hasCollision;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
LevelObject::~LevelObject()
|
||||||
|
{
|
||||||
|
if (model)
|
||||||
|
Model::unload(model);
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "Entity.h"
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
|
||||||
|
class LevelObject : public Entity
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
LevelObject(const std::string &fileName,
|
||||||
|
const Vec3f &position,
|
||||||
|
const Vec3f &rotation,
|
||||||
|
const float &scale,
|
||||||
|
const bool &hasCollision);
|
||||||
|
~LevelObject();
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,96 @@
|
|||||||
|
#include <GL/freeglut.h>
|
||||||
|
|
||||||
|
#include "CrystalPoint.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "Vector.h"
|
||||||
|
|
||||||
|
void configureOpenGL(void);
|
||||||
|
|
||||||
|
CrystalPoint* app;
|
||||||
|
|
||||||
|
bool justMoved = false;
|
||||||
|
|
||||||
|
int main(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
app = new CrystalPoint();
|
||||||
|
glutInit(&argc, argv);
|
||||||
|
|
||||||
|
configureOpenGL();
|
||||||
|
|
||||||
|
app->init();
|
||||||
|
|
||||||
|
glutDisplayFunc([]() { app->draw(); } );
|
||||||
|
glutIdleFunc([]() { app->update(); } );
|
||||||
|
glutReshapeFunc([](int w, int h) { CrystalPoint::width = w; CrystalPoint::height = h; glViewport(0, 0, w, h); });
|
||||||
|
|
||||||
|
//Keyboard
|
||||||
|
glutKeyboardFunc([](unsigned char c, int, int) { app->keyboardState.keys[c] = true; });
|
||||||
|
glutKeyboardUpFunc([](unsigned char c, int, int) { app->keyboardState.keys[c] = false; });
|
||||||
|
glutSpecialFunc([](int c, int, int) { app->keyboardState.special[c] = true; });
|
||||||
|
glutSpecialUpFunc([](int c, int, int) { app->keyboardState.special[c] = false; });
|
||||||
|
|
||||||
|
auto mousemotion = [](int x, int y)
|
||||||
|
{
|
||||||
|
if (justMoved)
|
||||||
|
{
|
||||||
|
justMoved = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int dx = x - app->width / 2;
|
||||||
|
int dy = y - app->height / 2;
|
||||||
|
if ((dx != 0 || dy != 0) && abs(dx) < 400 && abs(dy) < 400)
|
||||||
|
{
|
||||||
|
app->mouseOffset = app->mouseOffset + Vec2f(dx, dy);
|
||||||
|
glutWarpPointer(app->width / 2, app->height / 2);
|
||||||
|
justMoved = true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//Mouse
|
||||||
|
glutPassiveMotionFunc(mousemotion);
|
||||||
|
glutMotionFunc(mousemotion);
|
||||||
|
|
||||||
|
CrystalPoint::height = GLUT_WINDOW_HEIGHT;
|
||||||
|
CrystalPoint::width = GLUT_WINDOW_WIDTH;
|
||||||
|
|
||||||
|
glutMainLoop();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void configureOpenGL()
|
||||||
|
{
|
||||||
|
//Init window and glut display mode
|
||||||
|
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
|
||||||
|
glutInitWindowSize(800, 600);
|
||||||
|
glutCreateWindow("Crystal Point");
|
||||||
|
glutFullScreen();
|
||||||
|
|
||||||
|
//Depth testing
|
||||||
|
glEnable(GL_DEPTH_TEST);
|
||||||
|
|
||||||
|
//Alpha blending
|
||||||
|
glEnable(GL_BLEND);
|
||||||
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
|
|
||||||
|
//Alpha testing
|
||||||
|
glEnable(GL_ALPHA_TEST);
|
||||||
|
glAlphaFunc(GL_GREATER, 0.01f);
|
||||||
|
|
||||||
|
//Lighting
|
||||||
|
GLfloat mat_specular[] = { 0.2, 0.2, 0.2, 0 };
|
||||||
|
//GLfloat mat_shininess[] = { 5.0 };
|
||||||
|
GLfloat light_position[] = { 0.0, 2.0, 1.0, 0 };
|
||||||
|
GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 0 };
|
||||||
|
GLfloat light_ambient[] = { 0.3, 0.3, 0.3, 0 };
|
||||||
|
glClearColor(0.7, 0.7, 1.0, 1.0);
|
||||||
|
|
||||||
|
//glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
|
||||||
|
//glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess);
|
||||||
|
//glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
|
||||||
|
//glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);
|
||||||
|
|
||||||
|
glEnable(GL_LIGHTING);
|
||||||
|
glEnable(GL_LIGHT0);
|
||||||
|
|
||||||
|
glutSetCursor(GLUT_CURSOR_NONE);
|
||||||
|
}
|
||||||
@@ -0,0 +1,385 @@
|
|||||||
|
#include "Model.h"
|
||||||
|
|
||||||
|
#define STB_IMAGE_IMPLEMENTATION
|
||||||
|
#include "stb_image.h"
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <fstream>
|
||||||
|
#include <string>
|
||||||
|
#include <algorithm>
|
||||||
|
#include <cmath>
|
||||||
|
|
||||||
|
//Prototypes
|
||||||
|
std::vector<std::string> split(std::string str, std::string sep);
|
||||||
|
std::string replace(std::string str, std::string toReplace, std::string replacement);
|
||||||
|
std::string toLower(std::string data);
|
||||||
|
|
||||||
|
Model::Model(std::string fileName)
|
||||||
|
{
|
||||||
|
std::string dirName = fileName;
|
||||||
|
if (dirName.rfind("/") != std::string::npos)
|
||||||
|
dirName = dirName.substr(0, dirName.rfind("/"));
|
||||||
|
if (dirName.rfind("\\") != std::string::npos)
|
||||||
|
dirName = dirName.substr(0, dirName.rfind("\\"));
|
||||||
|
if (fileName == dirName)
|
||||||
|
dirName = "";
|
||||||
|
|
||||||
|
|
||||||
|
std::ifstream pFile(fileName.c_str());
|
||||||
|
|
||||||
|
if (!pFile.is_open())
|
||||||
|
{
|
||||||
|
std::cout << "Could not open file " << fileName << std::endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ObjGroup* currentGroup = new ObjGroup();
|
||||||
|
currentGroup->materialIndex = -1;
|
||||||
|
|
||||||
|
|
||||||
|
while (!pFile.eof())
|
||||||
|
{
|
||||||
|
std::string line;
|
||||||
|
std::getline(pFile, line);
|
||||||
|
|
||||||
|
line = replace(line, "\t", " ");
|
||||||
|
while (line.find(" ") != std::string::npos)
|
||||||
|
line = replace(line, " ", " ");
|
||||||
|
if (line == "")
|
||||||
|
continue;
|
||||||
|
if (line[0] == ' ')
|
||||||
|
line = line.substr(1);
|
||||||
|
if (line == "")
|
||||||
|
continue;
|
||||||
|
if (line[line.length() - 1] == ' ')
|
||||||
|
line = line.substr(0, line.length() - 1);
|
||||||
|
if (line == "")
|
||||||
|
continue;
|
||||||
|
if (line[0] == '#')
|
||||||
|
continue;
|
||||||
|
|
||||||
|
std::vector<std::string> params = split(line, " ");
|
||||||
|
params[0] = toLower(params[0]);
|
||||||
|
|
||||||
|
if (params[0] == "v")
|
||||||
|
vertices.push_back(Vec3f((float)atof(params[1].c_str()), (float)atof(params[2].c_str()), (float)atof(params[3].c_str())));
|
||||||
|
else if (params[0] == "vn")
|
||||||
|
normals.push_back(Vec3f((float)atof(params[1].c_str()), (float)atof(params[2].c_str()), (float)atof(params[3].c_str())));
|
||||||
|
else if (params[0] == "vt")
|
||||||
|
texcoords.push_back(Vec2f((float)atof(params[1].c_str()), (float)atof(params[2].c_str())));
|
||||||
|
else if (params[0] == "f")
|
||||||
|
{
|
||||||
|
for (size_t ii = 4; ii <= params.size(); ii++)
|
||||||
|
{
|
||||||
|
Face face;
|
||||||
|
|
||||||
|
for (size_t i = ii - 3; i < ii; i++) //magische forlus om van quads triangles te maken ;)
|
||||||
|
{
|
||||||
|
VertexIndex vertex;
|
||||||
|
std::vector<std::string> indices = split(params[i == (ii - 3) ? 1 : i], "/");
|
||||||
|
if (indices.size() >= 1) //er is een positie
|
||||||
|
vertex.position = atoi(indices[0].c_str()) - 1;
|
||||||
|
if (indices.size() == 2) //alleen texture
|
||||||
|
vertex.texcoord = atoi(indices[1].c_str()) - 1;
|
||||||
|
if (indices.size() == 3) //v/t/n of v//n
|
||||||
|
{
|
||||||
|
if (indices[1] != "")
|
||||||
|
vertex.texcoord = atoi(indices[1].c_str()) - 1;
|
||||||
|
vertex.normal = atoi(indices[2].c_str()) - 1;
|
||||||
|
}
|
||||||
|
face.vertices.push_back(vertex);
|
||||||
|
}
|
||||||
|
currentGroup->faces.push_back(face);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (params[0] == "s")
|
||||||
|
{//smoothing
|
||||||
|
}
|
||||||
|
else if (params[0] == "mtllib")
|
||||||
|
{
|
||||||
|
loadMaterialFile(dirName + "/" + params[1], dirName);
|
||||||
|
}
|
||||||
|
else if (params[0] == "usemtl")
|
||||||
|
{
|
||||||
|
if (currentGroup->faces.size() != 0)
|
||||||
|
groups.push_back(currentGroup);
|
||||||
|
currentGroup = new ObjGroup();
|
||||||
|
currentGroup->materialIndex = -1;
|
||||||
|
|
||||||
|
for (size_t i = 0; i < materials.size(); i++)
|
||||||
|
{
|
||||||
|
MaterialInfo* info = materials[i];
|
||||||
|
if (info->name == params[1])
|
||||||
|
{
|
||||||
|
currentGroup->materialIndex = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (currentGroup->materialIndex == -1)
|
||||||
|
std::cout << "Could not find material name " << params[1] << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
groups.push_back(currentGroup);
|
||||||
|
|
||||||
|
minVertex = vertices[0];
|
||||||
|
maxVertex = vertices[0];
|
||||||
|
for (auto v : vertices)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < 3; i++)
|
||||||
|
{
|
||||||
|
minVertex[i] = fmin(minVertex[i], v[i]);
|
||||||
|
maxVertex[i] = fmax(maxVertex[i], v[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
center = (minVertex + maxVertex) / 2.0f;
|
||||||
|
radius = 0;
|
||||||
|
for (auto v : vertices)
|
||||||
|
radius = fmax(radius, (center.x - v.x) * (center.x - v.x) + (center.z - v.z) * (center.z - v.z));
|
||||||
|
radius = sqrt(radius);
|
||||||
|
|
||||||
|
for each(ObjGroup *group in groups)
|
||||||
|
{
|
||||||
|
Optimise(group);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Model::Optimise(ObjGroup *t)
|
||||||
|
{
|
||||||
|
for (Face &face : t->faces)
|
||||||
|
{
|
||||||
|
for each(auto &vertex in face.vertices)
|
||||||
|
{
|
||||||
|
t->VertexArray.push_back(Vertex(vertices[vertex.position].x, vertices[vertex.position].y, vertices[vertex.position].z,
|
||||||
|
normals[vertex.normal].x, normals[vertex.normal].y, normals[vertex.normal].z,
|
||||||
|
texcoords[vertex.texcoord].x, texcoords[vertex.texcoord].y));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Model::draw()
|
||||||
|
{
|
||||||
|
glEnableClientState(GL_VERTEX_ARRAY);
|
||||||
|
glEnableClientState(GL_NORMAL_ARRAY);
|
||||||
|
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||||
|
for (auto &g : groups)
|
||||||
|
{
|
||||||
|
if (materials[g->materialIndex]->hasTexture)
|
||||||
|
{
|
||||||
|
glEnable(GL_TEXTURE_2D);
|
||||||
|
materials[g->materialIndex]->texture->bind();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
glDisable(GL_TEXTURE_2D);
|
||||||
|
|
||||||
|
float color[4] = { 1, 0, 0, 1 };
|
||||||
|
|
||||||
|
if (materials[g->materialIndex]->hasDiffuse)
|
||||||
|
{
|
||||||
|
memcpy(color, materials[g->materialIndex]->diffuseColor.v, 3 * sizeof(float));
|
||||||
|
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, color);
|
||||||
|
}
|
||||||
|
else if (materials[g->materialIndex]->hasAmbient)
|
||||||
|
{
|
||||||
|
memcpy(color, materials[g->materialIndex]->ambientColor.v, 3 * sizeof(float));
|
||||||
|
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, color);
|
||||||
|
}
|
||||||
|
else if (materials[g->materialIndex]->hasSpecular)
|
||||||
|
{
|
||||||
|
memcpy(color, materials[g->materialIndex]->specularColor.v, 3 * sizeof(float));
|
||||||
|
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
glVertexPointer(3, GL_FLOAT, sizeof(Vertex), ((float*)g->VertexArray.data()) + 0);
|
||||||
|
glNormalPointer(GL_FLOAT, sizeof(Vertex), ((float*)g->VertexArray.data()) + 3);
|
||||||
|
glTexCoordPointer(2, GL_FLOAT, sizeof(Vertex), ((float*)g->VertexArray.data()) + 6);
|
||||||
|
glDrawArrays(GL_TRIANGLES, 0, g->VertexArray.size());
|
||||||
|
}
|
||||||
|
glDisableClientState(GL_VERTEX_ARRAY);
|
||||||
|
glDisableClientState(GL_NORMAL_ARRAY);
|
||||||
|
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Model::loadMaterialFile(std::string fileName, std::string dirName)
|
||||||
|
{
|
||||||
|
std::ifstream pFile(fileName.c_str());
|
||||||
|
if (!pFile.is_open())
|
||||||
|
{
|
||||||
|
std::cout << "Could not open file " << fileName << std::endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
MaterialInfo* currentMaterial = NULL;
|
||||||
|
|
||||||
|
while (!pFile.eof())
|
||||||
|
{
|
||||||
|
std::string line;
|
||||||
|
std::getline(pFile, line);
|
||||||
|
|
||||||
|
line = replace(line, "\t", " ");
|
||||||
|
while (line.find(" ") != std::string::npos)
|
||||||
|
line = replace(line, " ", " ");
|
||||||
|
if (line == "")
|
||||||
|
continue;
|
||||||
|
if (line[0] == ' ')
|
||||||
|
line = line.substr(1);
|
||||||
|
if (line == "")
|
||||||
|
continue;
|
||||||
|
if (line[line.length() - 1] == ' ')
|
||||||
|
line = line.substr(0, line.length() - 1);
|
||||||
|
if (line == "")
|
||||||
|
continue;
|
||||||
|
if (line[0] == '#')
|
||||||
|
continue;
|
||||||
|
|
||||||
|
std::vector<std::string> params = split(line, " ");
|
||||||
|
params[0] = toLower(params[0]);
|
||||||
|
|
||||||
|
if (params[0] == "newmtl")
|
||||||
|
{
|
||||||
|
if (currentMaterial != NULL)
|
||||||
|
{
|
||||||
|
materials.push_back(currentMaterial);
|
||||||
|
}
|
||||||
|
currentMaterial = new MaterialInfo();
|
||||||
|
currentMaterial->name = params[1];
|
||||||
|
}
|
||||||
|
else if (params[0] == "map_kd")
|
||||||
|
{
|
||||||
|
currentMaterial->hasTexture = true;
|
||||||
|
currentMaterial->texture = new Texture(dirName + "/" + params[1]);
|
||||||
|
}
|
||||||
|
else if (params[0] == "kd")
|
||||||
|
{
|
||||||
|
currentMaterial->hasDiffuse = true;
|
||||||
|
currentMaterial->diffuseColor = Vec3f(atof(params[1].c_str()), atof(params[2].c_str()), atof(params[3].c_str()));
|
||||||
|
}
|
||||||
|
else if (params[0] == "ka")
|
||||||
|
{
|
||||||
|
currentMaterial->hasAmbient = true;
|
||||||
|
currentMaterial->ambientColor = Vec3f(atof(params[1].c_str()), atof(params[2].c_str()), atof(params[3].c_str()));
|
||||||
|
}
|
||||||
|
else if (params[0] == "ks")
|
||||||
|
{
|
||||||
|
currentMaterial->hasSpecular = true;
|
||||||
|
currentMaterial->specularColor = Vec3f(atof(params[1].c_str()), atof(params[2].c_str()), atof(params[3].c_str()));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
std::cout << "Didn't parse " << params[0] << " in material file" << std::endl;
|
||||||
|
}
|
||||||
|
if (currentMaterial != NULL)
|
||||||
|
materials.push_back(currentMaterial);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Model::MaterialInfo::MaterialInfo()
|
||||||
|
{
|
||||||
|
hasTexture = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Model::Texture::Texture(const std::string & fileName)
|
||||||
|
{
|
||||||
|
int width, height, bpp;
|
||||||
|
stbi_set_flip_vertically_on_load(true);
|
||||||
|
unsigned char* imgData = stbi_load(fileName.c_str(), &width, &height, &bpp, 4);
|
||||||
|
|
||||||
|
glGenTextures(1, &index);
|
||||||
|
glBindTexture(GL_TEXTURE_2D, index);
|
||||||
|
|
||||||
|
glTexImage2D(GL_TEXTURE_2D,
|
||||||
|
0, //level
|
||||||
|
GL_RGBA, //internal format
|
||||||
|
width, //width
|
||||||
|
height, //height
|
||||||
|
0, //border
|
||||||
|
GL_RGBA, //data format
|
||||||
|
GL_UNSIGNED_BYTE, //data type
|
||||||
|
imgData); //data
|
||||||
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
|
||||||
|
|
||||||
|
stbi_image_free(imgData);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Model::Texture::bind()
|
||||||
|
{
|
||||||
|
glBindTexture(GL_TEXTURE_2D, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string replace(std::string str, std::string toReplace, std::string replacement)
|
||||||
|
{
|
||||||
|
size_t index = 0;
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
index = str.find(toReplace, index);
|
||||||
|
if (index == std::string::npos)
|
||||||
|
break;
|
||||||
|
str.replace(index, toReplace.length(), replacement);
|
||||||
|
++index;
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<std::string> split(std::string str, std::string sep)
|
||||||
|
{
|
||||||
|
std::vector<std::string> ret;
|
||||||
|
size_t index;
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
index = str.find(sep);
|
||||||
|
if (index == std::string::npos)
|
||||||
|
break;
|
||||||
|
ret.push_back(str.substr(0, index));
|
||||||
|
str = str.substr(index + 1);
|
||||||
|
}
|
||||||
|
ret.push_back(str);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline std::string toLower(std::string data)
|
||||||
|
{
|
||||||
|
std::transform(data.begin(), data.end(), data.begin(), ::tolower);
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
std::map<std::string, std::pair<Model*, int>> Model::cache;
|
||||||
|
|
||||||
|
Model* Model::load(const std::string &fileName)
|
||||||
|
{
|
||||||
|
if (cache.find(fileName) == cache.end())
|
||||||
|
cache[fileName] = std::pair<Model*, int>(new Model(fileName), 0);
|
||||||
|
cache[fileName].second++;
|
||||||
|
return cache[fileName].first;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Model::unload(Model* model)
|
||||||
|
{
|
||||||
|
for (auto m : cache)
|
||||||
|
{
|
||||||
|
if (m.second.first == model)
|
||||||
|
{
|
||||||
|
m.second.second--;
|
||||||
|
if (m.second.second == 0)
|
||||||
|
{
|
||||||
|
delete m.second.first;
|
||||||
|
cache.erase(cache.find(m.first));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Model::~Model(void)
|
||||||
|
{
|
||||||
|
for (auto m : cache)
|
||||||
|
{
|
||||||
|
delete m.second.first;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <GL/freeglut.h>
|
||||||
|
#include <list>
|
||||||
|
#include <vector>
|
||||||
|
#include <map>
|
||||||
|
#include "Vector.h"
|
||||||
|
#include "Vertex.h"
|
||||||
|
|
||||||
|
class Model
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
|
||||||
|
class VertexIndex
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
int position;
|
||||||
|
int normal;
|
||||||
|
int texcoord;
|
||||||
|
};
|
||||||
|
|
||||||
|
class Face
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
std::list<VertexIndex> vertices;
|
||||||
|
};
|
||||||
|
|
||||||
|
class Texture
|
||||||
|
{
|
||||||
|
GLuint index;
|
||||||
|
public:
|
||||||
|
Texture(const std::string &fileName);
|
||||||
|
void bind();
|
||||||
|
};
|
||||||
|
|
||||||
|
class MaterialInfo
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
MaterialInfo();
|
||||||
|
std::string name;
|
||||||
|
Texture* texture;
|
||||||
|
bool hasTexture;
|
||||||
|
|
||||||
|
bool hasDiffuse;
|
||||||
|
Vec3f diffuseColor;
|
||||||
|
bool hasAmbient;
|
||||||
|
Vec3f ambientColor;
|
||||||
|
bool hasSpecular;
|
||||||
|
Vec3f specularColor;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class ObjGroup
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
std::string name;
|
||||||
|
int materialIndex;
|
||||||
|
std::list<Face> faces;
|
||||||
|
std::vector<Vertex> VertexArray;
|
||||||
|
};
|
||||||
|
|
||||||
|
std::vector<Vec3f> vertices;
|
||||||
|
std::vector<Vec3f> normals;
|
||||||
|
std::vector<Vec2f> texcoords;
|
||||||
|
std::vector<ObjGroup*> groups;
|
||||||
|
std::vector<MaterialInfo*> materials;
|
||||||
|
|
||||||
|
void loadMaterialFile(std::string fileName, std::string dirName);
|
||||||
|
|
||||||
|
Model(std::string filename);
|
||||||
|
~Model(void);
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
static std::map<std::string, std::pair<Model*, int> > cache;
|
||||||
|
static Model* load(const std::string &fileName);
|
||||||
|
static void unload(Model* model);
|
||||||
|
|
||||||
|
void draw();
|
||||||
|
void Optimise(ObjGroup *t);
|
||||||
|
|
||||||
|
Vec3f minVertex;
|
||||||
|
Vec3f maxVertex;
|
||||||
|
|
||||||
|
Vec3f center;
|
||||||
|
float radius;
|
||||||
|
};
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
#define _USE_MATH_DEFINES
|
||||||
|
#include <cmath>
|
||||||
|
#include "Player.h"
|
||||||
|
#include <GL/freeglut.h>
|
||||||
|
|
||||||
|
Player* Player::instance = NULL;
|
||||||
|
|
||||||
|
Player::Player()
|
||||||
|
{
|
||||||
|
speed = 10;
|
||||||
|
health = 50;
|
||||||
|
xp = 75;
|
||||||
|
level = 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
Player* Player::getInstance()
|
||||||
|
{
|
||||||
|
if (instance == nullptr)
|
||||||
|
instance = new Player();
|
||||||
|
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Player::init()
|
||||||
|
{
|
||||||
|
instance = new Player();
|
||||||
|
}
|
||||||
|
|
||||||
|
Player::~Player()
|
||||||
|
{
|
||||||
|
if (leftWeapon)
|
||||||
|
delete leftWeapon;
|
||||||
|
|
||||||
|
if (rightWeapon)
|
||||||
|
delete rightWeapon;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Player::setCamera()
|
||||||
|
{
|
||||||
|
glRotatef(rotation.x, 1, 0, 0);
|
||||||
|
glRotatef(rotation.y, 0, 1, 0);
|
||||||
|
glTranslatef(-position.x, -position.y, -position.z);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void Player::setPosition(float angle, float fac, bool height)
|
||||||
|
{
|
||||||
|
fac *= speed;
|
||||||
|
if (height)
|
||||||
|
position.y += angle*fac;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
position.x -= (float)cos((rotation.y + angle) / 180 * M_PI) * fac;
|
||||||
|
position.z -= (float)sin((rotation.y + angle) / 180 * M_PI) * fac;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "Vector.h"
|
||||||
|
|
||||||
|
class Model;
|
||||||
|
|
||||||
|
class Player
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
static Player* instance;
|
||||||
|
public:
|
||||||
|
Player();
|
||||||
|
~Player();
|
||||||
|
|
||||||
|
void setCamera();
|
||||||
|
void setPosition(float angle, float fac, bool height);
|
||||||
|
|
||||||
|
static Player* getInstance(void);
|
||||||
|
static void init(void);
|
||||||
|
|
||||||
|
Vec3f position;
|
||||||
|
Vec2f rotation;
|
||||||
|
|
||||||
|
Model* leftWeapon;
|
||||||
|
Model* rightWeapon;
|
||||||
|
|
||||||
|
float health;
|
||||||
|
float xp;
|
||||||
|
int level;
|
||||||
|
|
||||||
|
float speed;
|
||||||
|
};
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
========================================================================
|
||||||
|
CONSOLE APPLICATION : CrystalPoint Project Overview
|
||||||
|
========================================================================
|
||||||
|
|
||||||
|
AppWizard has created this CrystalPoint application for you.
|
||||||
|
|
||||||
|
This file contains a summary of what you will find in each of the files that
|
||||||
|
make up your CrystalPoint application.
|
||||||
|
|
||||||
|
|
||||||
|
CrystalPoint.vcxproj
|
||||||
|
This is the main project file for VC++ projects generated using an Application Wizard.
|
||||||
|
It contains information about the version of Visual C++ that generated the file, and
|
||||||
|
information about the platforms, configurations, and project features selected with the
|
||||||
|
Application Wizard.
|
||||||
|
|
||||||
|
CrystalPoint.vcxproj.filters
|
||||||
|
This is the filters file for VC++ projects generated using an Application Wizard.
|
||||||
|
It contains information about the association between the files in your project
|
||||||
|
and the filters. This association is used in the IDE to show grouping of files with
|
||||||
|
similar extensions under a specific node (for e.g. ".cpp" files are associated with the
|
||||||
|
"Source Files" filter).
|
||||||
|
|
||||||
|
CrystalPoint.cpp
|
||||||
|
This is the main application source file.
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
Other standard files:
|
||||||
|
|
||||||
|
StdAfx.h, StdAfx.cpp
|
||||||
|
These files are used to build a precompiled header (PCH) file
|
||||||
|
named CrystalPoint.pch and a precompiled types file named StdAfx.obj.
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
Other notes:
|
||||||
|
|
||||||
|
AppWizard uses "TODO:" comments to indicate parts of the source code you
|
||||||
|
should add to or customize.
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
@@ -0,0 +1,129 @@
|
|||||||
|
#define _USE_MATH_DEFINES
|
||||||
|
#include <cmath>
|
||||||
|
#include "Vector.h"
|
||||||
|
|
||||||
|
Vec3f::Vec3f(float x, float y, float z)
|
||||||
|
{
|
||||||
|
this->x = x;
|
||||||
|
this->y = y;
|
||||||
|
this->z = z;
|
||||||
|
}
|
||||||
|
/*The length of the vector*/
|
||||||
|
float Vec3f::Length()
|
||||||
|
{
|
||||||
|
return (float)sqrt(x*x+y*y+z*z);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Vec3f::Normalize()
|
||||||
|
{
|
||||||
|
float length = this->Length();
|
||||||
|
|
||||||
|
if (length != 0)
|
||||||
|
{
|
||||||
|
x = x / length;
|
||||||
|
y = y / length;
|
||||||
|
z = z / length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
float Vec3f::Distance(const Vec3f &other)
|
||||||
|
{
|
||||||
|
return (float)sqrt(pow(other.x - x, 2)+pow(other.y - y, 2)+pow(other.z - z, 2));
|
||||||
|
}
|
||||||
|
|
||||||
|
Vec3f::Vec3f()
|
||||||
|
{
|
||||||
|
this->x = 0;
|
||||||
|
this->y = 0;
|
||||||
|
this->z = 0;
|
||||||
|
}
|
||||||
|
Vec3f::Vec3f(const Vec3f &other)
|
||||||
|
{
|
||||||
|
this->x = other.x;
|
||||||
|
this->y = other.y;
|
||||||
|
this->z = other.z;
|
||||||
|
}
|
||||||
|
|
||||||
|
float& Vec3f::operator [](int index)
|
||||||
|
{
|
||||||
|
return v[index];
|
||||||
|
}
|
||||||
|
|
||||||
|
Vec3f Vec3f::operator+(const Vec3f & other)
|
||||||
|
{
|
||||||
|
return Vec3f(x + other.x, y + other.y, z + other.z);
|
||||||
|
}
|
||||||
|
|
||||||
|
Vec3f Vec3f::operator-(const Vec3f & other)
|
||||||
|
{
|
||||||
|
return Vec3f(x - other.x, y - other.y, z - other.z);
|
||||||
|
}
|
||||||
|
|
||||||
|
Vec3f Vec3f::operator/(float value)
|
||||||
|
{
|
||||||
|
return Vec3f(x / value, y / value, z / value);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Vec3f::operator==(const Vec3f & other)
|
||||||
|
{
|
||||||
|
/*bool xb, yb,zb;
|
||||||
|
xb = x == other.x;
|
||||||
|
yb = y == other.y;
|
||||||
|
zb = z == other.z;
|
||||||
|
if (xb & yb & zb)
|
||||||
|
return true;*/
|
||||||
|
return x == other.x & y == other.y & z == other.z;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Vec3f::operator!=(const Vec3f & other)
|
||||||
|
{
|
||||||
|
return x != other.x & y != other.y & z != other.z;
|
||||||
|
}
|
||||||
|
|
||||||
|
Vec3f Vec3f::operator*(const float & other)
|
||||||
|
{
|
||||||
|
return Vec3f(x*other, y*other, z*other);
|
||||||
|
}
|
||||||
|
|
||||||
|
Vec3f Vec3f::cross(const Vec3f & other)
|
||||||
|
{
|
||||||
|
return Vec3f(
|
||||||
|
y*other.z - other.y*z,
|
||||||
|
z*other.x - other.z*x,
|
||||||
|
x*other.y - other.x*y
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Vec2f::Vec2f(float x, float y)
|
||||||
|
{
|
||||||
|
this->x = x;
|
||||||
|
this->y = y;
|
||||||
|
}
|
||||||
|
Vec2f::Vec2f()
|
||||||
|
{
|
||||||
|
this->x = 0;
|
||||||
|
this->y = 0;
|
||||||
|
}
|
||||||
|
Vec2f::Vec2f(const Vec2f &other)
|
||||||
|
{
|
||||||
|
this->x = other.x;
|
||||||
|
this->y = other.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
float& Vec2f::operator [](int index)
|
||||||
|
{
|
||||||
|
return v[index];
|
||||||
|
}
|
||||||
|
|
||||||
|
Vec2f Vec2f::operator+(const Vec2f & other)
|
||||||
|
{
|
||||||
|
return Vec2f(x + other.x, y+other.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
float Vec2f::length()
|
||||||
|
{
|
||||||
|
return (float)sqrt(x*x + y*y);
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
class Vec3f
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
union
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
float x, y, z;
|
||||||
|
};
|
||||||
|
float v[3];
|
||||||
|
};
|
||||||
|
Vec3f();
|
||||||
|
Vec3f(const Vec3f &other);
|
||||||
|
Vec3f(float x, float y, float z);
|
||||||
|
float Length();
|
||||||
|
void Normalize();
|
||||||
|
float Distance(const Vec3f &);
|
||||||
|
float& operator [](int);
|
||||||
|
Vec3f operator + (const Vec3f &other);
|
||||||
|
Vec3f operator -(const Vec3f &other);
|
||||||
|
Vec3f operator / (float value);
|
||||||
|
bool operator ==(const Vec3f &other);
|
||||||
|
bool operator !=(const Vec3f &other);
|
||||||
|
Vec3f operator *(const float &other);
|
||||||
|
|
||||||
|
Vec3f cross(const Vec3f &other);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class Vec2f
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
union
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
float x, y;
|
||||||
|
};
|
||||||
|
float v[2];
|
||||||
|
};
|
||||||
|
Vec2f();
|
||||||
|
Vec2f(float x, float y);
|
||||||
|
Vec2f(const Vec2f &other);
|
||||||
|
float& operator [](int);
|
||||||
|
Vec2f operator + (const Vec2f &other);
|
||||||
|
float length();
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
#include "Vertex.h"
|
||||||
|
|
||||||
|
Vertex::Vertex(float x, float y, float z, float nx, float ny, float nz, float tx, float ty)
|
||||||
|
{
|
||||||
|
this->x = x;
|
||||||
|
this->y = y;
|
||||||
|
this->z = z;
|
||||||
|
|
||||||
|
this->normalX = nx;
|
||||||
|
this->normalY = ny;
|
||||||
|
this->normalZ = nz;
|
||||||
|
|
||||||
|
this->texX = tx;
|
||||||
|
this->texY = ty;
|
||||||
|
}
|
||||||
|
|
||||||
|
Vertex::~Vertex()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
Vertex Vertex::operator/(float &other)
|
||||||
|
{
|
||||||
|
return Vertex(x / other, y / other, z / other, normalX, normalY, normalZ, texX, texY);
|
||||||
|
}
|
||||||
|
|
||||||
|
Vertex Vertex::operator*(Vertex & other)
|
||||||
|
{
|
||||||
|
return Vertex(x*other.x, y*other.y, z*other.z, normalX, normalY, normalZ, texX, texY);
|
||||||
|
}
|
||||||
|
|
||||||
|
Vertex Vertex::operator*(float & other)
|
||||||
|
{
|
||||||
|
return Vertex(x*other, y*other, z*other, normalX, normalY, normalZ, texX, texY);
|
||||||
|
}
|
||||||
|
|
||||||
|
Vertex Vertex::operator+(Vertex & other)
|
||||||
|
{
|
||||||
|
return Vertex(x+other.x, y+other.y, z+other.z, normalX, normalY, normalZ, texX, texY);
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
#pragma once
|
||||||
|
class Vertex
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Vertex(float x, float y, float z, float nx, float ny, float nz, float tx, float ty);
|
||||||
|
~Vertex();
|
||||||
|
|
||||||
|
float x;
|
||||||
|
float y;
|
||||||
|
float z;
|
||||||
|
|
||||||
|
float normalX;
|
||||||
|
float normalY;
|
||||||
|
float normalZ;
|
||||||
|
|
||||||
|
float texX;
|
||||||
|
float texY;
|
||||||
|
|
||||||
|
Vertex operator/(float &other);
|
||||||
|
Vertex operator*(Vertex &other);
|
||||||
|
Vertex operator*(float &other);
|
||||||
|
Vertex operator+(Vertex &other);
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,211 @@
|
|||||||
|
#include "World.h"
|
||||||
|
#include <GL/freeglut.h>
|
||||||
|
#include "Entity.h"
|
||||||
|
#include "json.h"
|
||||||
|
#include "Model.h"
|
||||||
|
#include "CrystalPoint.h"
|
||||||
|
#include <fstream>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
World::World(const std::string &fileName)
|
||||||
|
{
|
||||||
|
//Store player instance
|
||||||
|
player = Player::getInstance();
|
||||||
|
|
||||||
|
//Create the interface
|
||||||
|
interface = new Interface();
|
||||||
|
|
||||||
|
//Open world json file
|
||||||
|
std::ifstream file(fileName);
|
||||||
|
if(!file.is_open())
|
||||||
|
std::cout<<"Error, can't open world file - " << fileName << "\n";
|
||||||
|
|
||||||
|
json::Value v = json::readJson(file);
|
||||||
|
file.close();
|
||||||
|
|
||||||
|
//Check file
|
||||||
|
if(v["world"].isNull() || v["world"]["heightmap"].isNull())
|
||||||
|
std::cout << "Invalid world file: world - " << fileName << "\n";
|
||||||
|
if (v["player"].isNull() || v["player"]["startposition"].isNull())
|
||||||
|
std::cout << "Invalid world file: player - " << fileName << "\n";
|
||||||
|
if (v["objects"].isNull())
|
||||||
|
std::cout << "Invalid world file: objects - " << fileName << "\n";
|
||||||
|
if (v["world"]["object-templates"].isNull())
|
||||||
|
std::cout << "Invalid world file: object templates - " << fileName << "\n";
|
||||||
|
|
||||||
|
//Load object templates
|
||||||
|
for (auto objt : v["world"]["object-templates"])
|
||||||
|
{
|
||||||
|
//collision
|
||||||
|
bool cancollide = true;
|
||||||
|
if (!objt["collision"].isNull())
|
||||||
|
cancollide = objt["collision"].asBool();
|
||||||
|
|
||||||
|
objecttemplates.push_back(std::pair<int, std::pair<std::string, bool>>(objt["color"], std::pair<std::string, bool>(objt["file"], cancollide)));
|
||||||
|
}
|
||||||
|
|
||||||
|
//Generate heightmap for this world
|
||||||
|
heightmap = new HeightMap(v["world"]["heightmap"].asString(), this);
|
||||||
|
|
||||||
|
//Map different texture to heightmap if available
|
||||||
|
if(!v["world"]["texture"].isNull())
|
||||||
|
heightmap->SetTexture(v["world"]["texture"].asString());
|
||||||
|
|
||||||
|
//Set player starting position
|
||||||
|
player->position.x = v["player"]["startposition"][0].asFloat();
|
||||||
|
player->position.y = v["player"]["startposition"][1].asFloat();
|
||||||
|
player->position.z = v["player"]["startposition"][2].asFloat();
|
||||||
|
|
||||||
|
//Load and place objects into world
|
||||||
|
for (auto object : v["objects"])
|
||||||
|
{
|
||||||
|
//Collision
|
||||||
|
bool hasCollision = true;
|
||||||
|
if (!object["collide"].isNull())
|
||||||
|
hasCollision = object["collide"].asBool();
|
||||||
|
|
||||||
|
//Rotation
|
||||||
|
Vec3f rotation(0, 0, 0);
|
||||||
|
if(!object["rot"].isNull())
|
||||||
|
rotation = Vec3f(object["rot"][0].asFloat(), object["rot"][1].asFloat(), object["rot"][2].asFloat());
|
||||||
|
|
||||||
|
//Scale
|
||||||
|
float scale = 1;
|
||||||
|
if (!object["scale"].isNull())
|
||||||
|
scale = object["scale"].asFloat();
|
||||||
|
|
||||||
|
//Position
|
||||||
|
if (object["pos"].isNull())
|
||||||
|
std::cout << "Invalid world file: objects pos - " << fileName << "\n";
|
||||||
|
|
||||||
|
//File
|
||||||
|
if (object["file"].isNull())
|
||||||
|
std::cout << "Invalid world file: objects file - " << fileName << "\n";
|
||||||
|
|
||||||
|
//Create
|
||||||
|
Vec3f position(object["pos"][0].asFloat(), object["pos"][1].asFloat(), object["pos"][2].asFloat());
|
||||||
|
entities.push_back(new LevelObject(object["file"].asString(), position, rotation, scale, hasCollision));
|
||||||
|
}
|
||||||
|
|
||||||
|
//Load and place enemies into world
|
||||||
|
for (auto e : v["enemies"])
|
||||||
|
{
|
||||||
|
//Rotation
|
||||||
|
Vec3f rotation(0, 0, 0);
|
||||||
|
if (!e["rot"].isNull())
|
||||||
|
rotation = Vec3f(e["rot"][0].asFloat(), e["rot"][1].asFloat(), e["rot"][2].asFloat());
|
||||||
|
|
||||||
|
//Scale
|
||||||
|
float scale = 1.0f;
|
||||||
|
if (!e["scale"].isNull())
|
||||||
|
scale = e["scale"].asFloat();
|
||||||
|
|
||||||
|
//Position
|
||||||
|
if (e["pos"].isNull())
|
||||||
|
std::cout << "Invalid world file: enemies pos - " << fileName << "\n";
|
||||||
|
|
||||||
|
//File
|
||||||
|
if (e["file"].isNull())
|
||||||
|
std::cout << "Invalid world file: enemies file - " << fileName << "\n";
|
||||||
|
|
||||||
|
//Create
|
||||||
|
Vec3f position(e["pos"][0].asFloat(), e["pos"][1].asFloat(), e["pos"][2].asFloat());
|
||||||
|
enemies.push_back(new Enemy(e["file"].asString(), position, rotation, scale));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
World::~World()
|
||||||
|
{
|
||||||
|
delete heightmap;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::pair<std::string, bool> World::getObjectFromValue(int val)
|
||||||
|
{
|
||||||
|
for (auto i : objecttemplates)
|
||||||
|
{
|
||||||
|
if (i.first == val)
|
||||||
|
return i.second;
|
||||||
|
}
|
||||||
|
|
||||||
|
return objecttemplates[0].second;
|
||||||
|
}
|
||||||
|
|
||||||
|
float World::getHeight(float x, float y)
|
||||||
|
{
|
||||||
|
return heightmap->GetHeight(x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
void World::draw()
|
||||||
|
{
|
||||||
|
player->setCamera();
|
||||||
|
|
||||||
|
float lightPosition[4] = { 0, 2, 1, 0 };
|
||||||
|
glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);
|
||||||
|
float lightAmbient[4] = { 0.2, 0.2, 0.2, 1 };
|
||||||
|
glLightfv(GL_LIGHT0, GL_AMBIENT, lightAmbient);
|
||||||
|
|
||||||
|
heightmap->Draw();
|
||||||
|
|
||||||
|
for (auto &enemy : enemies)
|
||||||
|
enemy->draw();
|
||||||
|
|
||||||
|
for (auto &entity : entities)
|
||||||
|
entity->draw();
|
||||||
|
|
||||||
|
interface->draw();
|
||||||
|
}
|
||||||
|
|
||||||
|
void World::update(float elapsedTime)
|
||||||
|
{
|
||||||
|
for (auto &entity : entities)
|
||||||
|
entity->update(elapsedTime);
|
||||||
|
|
||||||
|
for (auto &enemy : enemies)
|
||||||
|
{
|
||||||
|
|
||||||
|
//Al deze code zou in enemy moeten staan
|
||||||
|
if (enemy->position.Distance(player->position) <= enemy->radius)
|
||||||
|
{
|
||||||
|
enemy->hasTarget = true;
|
||||||
|
enemy->target.x = player->position.x;
|
||||||
|
enemy->target.z = player->position.z;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
enemy->hasTarget = false;
|
||||||
|
|
||||||
|
Vec3f oldpos = enemy->position;
|
||||||
|
enemy->update(elapsedTime);
|
||||||
|
if (enemy->hasTarget)
|
||||||
|
{
|
||||||
|
for (auto e : entities)
|
||||||
|
{
|
||||||
|
if (e->canCollide && e->inObject(enemy->position))
|
||||||
|
{
|
||||||
|
Vec3f difference = e->position - enemy->position; //zou misschien omgedraait moeten worden
|
||||||
|
difference.Normalize();
|
||||||
|
difference = difference * (e->model->radius + 0.01f);
|
||||||
|
enemy->position = e->position + difference;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//tot hier
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void World::addLevelObject(LevelObject* obj)
|
||||||
|
{
|
||||||
|
entities.push_back(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool World::isPlayerPositionValid()
|
||||||
|
{
|
||||||
|
for (auto e : entities)
|
||||||
|
{
|
||||||
|
if (e->canCollide && e->inObject(player->position))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
#include "HeightMap.h"
|
||||||
|
#include "Player.h"
|
||||||
|
#include "Enemy.h"
|
||||||
|
#include "LevelObject.h"
|
||||||
|
#include "Interface.h"
|
||||||
|
|
||||||
|
class Entity;
|
||||||
|
|
||||||
|
class World
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
std::vector<std::pair<int, std::pair<std::string, bool>>> objecttemplates;
|
||||||
|
|
||||||
|
Player* player;
|
||||||
|
HeightMap* heightmap;
|
||||||
|
Interface* interface;
|
||||||
|
|
||||||
|
std::vector<Entity*> entities;
|
||||||
|
std::vector<Enemy*> enemies;
|
||||||
|
public:
|
||||||
|
World(const std::string &fileName);
|
||||||
|
~World();
|
||||||
|
|
||||||
|
void draw();
|
||||||
|
void update(float elapsedTime);
|
||||||
|
bool isPlayerPositionValid();
|
||||||
|
float getHeight(float x, float y);
|
||||||
|
void addLevelObject(LevelObject* obj);
|
||||||
|
std::pair<std::string, bool> getObjectFromValue(int i);
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,137 @@
|
|||||||
|
#include "WorldHandler.h"
|
||||||
|
#include "World.h"
|
||||||
|
|
||||||
|
#include "json.h"
|
||||||
|
#include <fstream>
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
WorldHandler* WorldHandler::instance = nullptr;
|
||||||
|
|
||||||
|
void WorldHandler::ChangeWorld(int i)
|
||||||
|
{
|
||||||
|
if (i < 0)
|
||||||
|
i = worldfiles.size() - 1;
|
||||||
|
|
||||||
|
else if (i >= worldfiles.size())
|
||||||
|
i = 0;
|
||||||
|
|
||||||
|
if (i != worldIndex)
|
||||||
|
{
|
||||||
|
loadingWorld = true;
|
||||||
|
|
||||||
|
if(worldIndex != -1)
|
||||||
|
delete world;
|
||||||
|
|
||||||
|
world = new World(worldfiles[i]);
|
||||||
|
worldIndex = i;
|
||||||
|
loadingWorld = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
WorldHandler::WorldHandler()
|
||||||
|
{
|
||||||
|
loadingWorld = true;
|
||||||
|
worldIndex = -1;
|
||||||
|
|
||||||
|
//Find worlds.json
|
||||||
|
std::ifstream file("worlds/worlds.json");
|
||||||
|
if (!file.is_open())
|
||||||
|
std::cout << "Error, can't open worlds overview file\n";
|
||||||
|
|
||||||
|
json::Value v = json::readJson(file);
|
||||||
|
file.close();
|
||||||
|
|
||||||
|
//Load file names into vector
|
||||||
|
if (v["worlds"].isNull() || !v["worlds"].isArray())
|
||||||
|
std::cout << "Error, no content in worlds overview file\n";
|
||||||
|
|
||||||
|
for (auto line : v["worlds"])
|
||||||
|
{
|
||||||
|
std::cout << "Found world: " << line << "\n";
|
||||||
|
worldfiles.push_back(line);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (worldfiles.size() > 0)
|
||||||
|
{
|
||||||
|
ChangeWorld(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
WorldHandler::~WorldHandler()
|
||||||
|
{
|
||||||
|
worldIndex = -1;
|
||||||
|
delete world;
|
||||||
|
}
|
||||||
|
|
||||||
|
WorldHandler* WorldHandler::getInstance()
|
||||||
|
{
|
||||||
|
if (instance == nullptr)
|
||||||
|
instance = new WorldHandler();
|
||||||
|
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
void WorldHandler::init()
|
||||||
|
{
|
||||||
|
instance = new WorldHandler();
|
||||||
|
}
|
||||||
|
|
||||||
|
void WorldHandler::draw(void)
|
||||||
|
{
|
||||||
|
if(!loadingWorld)
|
||||||
|
world->draw();
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//Draw Loading screen
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void WorldHandler::update(float deltaTime)
|
||||||
|
{
|
||||||
|
if(!loadingWorld)
|
||||||
|
world->update(deltaTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool WorldHandler::isPlayerPositionValid(void)
|
||||||
|
{
|
||||||
|
if(!loadingWorld)
|
||||||
|
return world->isPlayerPositionValid();
|
||||||
|
}
|
||||||
|
|
||||||
|
float WorldHandler::getHeight(float x, float y)
|
||||||
|
{
|
||||||
|
if (!loadingWorld)
|
||||||
|
return world->getHeight(x, y);
|
||||||
|
else
|
||||||
|
return 0.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void WorldHandler::Navigate(const std::string &fileName)
|
||||||
|
{
|
||||||
|
if (!loadingWorld)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < worldfiles.size(); i++)
|
||||||
|
{
|
||||||
|
if (worldfiles[i] == fileName)
|
||||||
|
ChangeWorld(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void WorldHandler::NextWorld()
|
||||||
|
{
|
||||||
|
if (!loadingWorld)
|
||||||
|
{
|
||||||
|
ChangeWorld(worldIndex + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void WorldHandler::PreviousWorld()
|
||||||
|
{
|
||||||
|
if (!loadingWorld)
|
||||||
|
{
|
||||||
|
ChangeWorld(worldIndex - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
class World;
|
||||||
|
|
||||||
|
class WorldHandler
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
WorldHandler();
|
||||||
|
static WorldHandler* instance;
|
||||||
|
|
||||||
|
bool loadingWorld;
|
||||||
|
World* world;
|
||||||
|
int worldIndex;
|
||||||
|
void ChangeWorld(int i);
|
||||||
|
public:
|
||||||
|
|
||||||
|
~WorldHandler();
|
||||||
|
|
||||||
|
static WorldHandler* getInstance(void);
|
||||||
|
static void init();
|
||||||
|
|
||||||
|
void draw(void);
|
||||||
|
void update(float deltaTime);
|
||||||
|
|
||||||
|
bool isPlayerPositionValid(void);
|
||||||
|
float getHeight(float x, float y);
|
||||||
|
|
||||||
|
void Navigate(const std::string &fileName);
|
||||||
|
void NextWorld();
|
||||||
|
void PreviousWorld();
|
||||||
|
|
||||||
|
std::vector<std::string> worldfiles;
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
|
||||||
|
Freeglut Copyright
|
||||||
|
------------------
|
||||||
|
|
||||||
|
Freeglut code without an explicit copyright is covered by the following
|
||||||
|
copyright:
|
||||||
|
|
||||||
|
Copyright (c) 1999-2000 Pawel W. Olszta. All Rights Reserved.
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
Except as contained in this notice, the name of Pawel W. Olszta shall not be
|
||||||
|
used in advertising or otherwise to promote the sale, use or other dealings
|
||||||
|
in this Software without prior written authorization from Pawel W. Olszta.
|
||||||
@@ -0,0 +1,106 @@
|
|||||||
|
freeglut 3.0.0-1.mp for MSVC
|
||||||
|
|
||||||
|
This package contains freeglut import libraries, headers, and Windows DLLs.
|
||||||
|
These allow 32 and 64 bit GLUT applications to be compiled on Windows using
|
||||||
|
Microsoft Visual C++.
|
||||||
|
|
||||||
|
For more information on freeglut, visit http://freeglut.sourceforge.net/.
|
||||||
|
|
||||||
|
|
||||||
|
Installation
|
||||||
|
|
||||||
|
Create a folder on your PC which is readable by all users, for example
|
||||||
|
“C:\Program Files\Common Files\MSVC\freeglut\” on a typical Windows system. Copy
|
||||||
|
the “lib\” and “include\” folders from this zip archive to that location.
|
||||||
|
|
||||||
|
The appropriate freeglut DLL can either be placed in the same folder as your
|
||||||
|
application, or can be installed in a system-wide folder which appears in your
|
||||||
|
%PATH% environment variable. Be careful not to mix the 32 bit DLL up with the 64
|
||||||
|
bit DLL, as they are not interchangeable.
|
||||||
|
|
||||||
|
|
||||||
|
Compiling 32 bit Applications
|
||||||
|
|
||||||
|
To create a 32 bit freeglut application, create a new Win32 C++ project in MSVC.
|
||||||
|
From the “Win32 Application Wizard”, choose a “Windows application”, check the
|
||||||
|
“Empty project” box, and submit.
|
||||||
|
|
||||||
|
You’ll now need to configure the compiler and linker settings. Open up the
|
||||||
|
project properties, and select “All Configurations” (this is necessary to ensure
|
||||||
|
our changes are applied for both debug and release builds). Open up the
|
||||||
|
“general” section under “C/C++”, and configure the “include\” folder you created
|
||||||
|
above as an “Additional Include Directory”. If you have more than one GLUT
|
||||||
|
package which contains a “glut.h” file, it’s important to ensure that the
|
||||||
|
freeglut include folder appears above all other GLUT include folders.
|
||||||
|
|
||||||
|
Now open up the “general” section under “Linker”, and configure the “lib\”
|
||||||
|
folder you created above as an “Additional Library Directory”. A freeglut
|
||||||
|
application depends on the import libraries “freeglut.lib” and “opengl32.lib”,
|
||||||
|
which can be configured under the “Input” section. However, it shouldn’t be
|
||||||
|
necessary to explicitly state these dependencies, since the freeglut headers
|
||||||
|
handle this for you. Now open the “Advanced” section, and enter “mainCRTStartup”
|
||||||
|
as the “Entry Point” for your application. This is necessary because GLUT
|
||||||
|
applications use “main” as the application entry point, not “WinMain”—without it
|
||||||
|
you’ll get an undefined reference when you try to link your application.
|
||||||
|
|
||||||
|
That’s all of your project properties configured, so you can now add source
|
||||||
|
files to your project and build the application. If you want your application to
|
||||||
|
be compatible with GLUT, you should “#include <GL/glut.h>”. If you want to use
|
||||||
|
freeglut specific extensions, you should “#include <GL/freeglut.h>” instead.
|
||||||
|
|
||||||
|
Don’t forget to either include the freeglut DLL when distributing applications,
|
||||||
|
or provide your users with some method of obtaining it if they don’t already
|
||||||
|
have it!
|
||||||
|
|
||||||
|
|
||||||
|
Compiling 64 bit Applications
|
||||||
|
|
||||||
|
Building 64 bit applications is almost identical to building 32 bit applications.
|
||||||
|
When you use the configuration manager to add the x64 platform, it’s easiest to
|
||||||
|
copy the settings from the Win32 platform. If you do so, it’s then only necessary
|
||||||
|
to change the “Additional Library Directories” configuration so that it
|
||||||
|
references the directory containing the 64 bit import library rather
|
||||||
|
than the 32 bit one.
|
||||||
|
|
||||||
|
|
||||||
|
Problems?
|
||||||
|
|
||||||
|
If you have problems using this package (compiler / linker errors etc.), please
|
||||||
|
check that you have followed all of the steps in this readme file correctly.
|
||||||
|
Almost all of the problems which are reported with these packages are due to
|
||||||
|
missing a step or not doing it correctly, for example trying to build a 32 bit
|
||||||
|
app against the 64 bit import library. If you have followed all of the steps
|
||||||
|
correctly but your application still fails to build, try building a very simple
|
||||||
|
but functional program (the example at
|
||||||
|
http://www.transmissionzero.co.uk/computing/using-glut-with-mingw/ works fine
|
||||||
|
with MSVC). A lot of people try to build very complex applications after
|
||||||
|
installing these packages, and often the error is with the application code or
|
||||||
|
other library dependencies rather than freeglut.
|
||||||
|
|
||||||
|
If you still can’t get it working after trying to compile a simple application,
|
||||||
|
then please get in touch via http://www.transmissionzero.co.uk/contact/,
|
||||||
|
providing as much detail as you can. Please don’t complain to the freeglut guys
|
||||||
|
unless you’re sure it’s a freeglut bug, and have reproduced the issue after
|
||||||
|
compiling freeglut from the latest SVN version—if that’s still the case, I’m
|
||||||
|
sure they would appreciate a bug report or a patch.
|
||||||
|
|
||||||
|
|
||||||
|
Changelog
|
||||||
|
|
||||||
|
2015–07–22: Release 3.0.0-2.mp
|
||||||
|
|
||||||
|
• Modified the freeglut_std.h file so that it doesn’t try to link against the
|
||||||
|
freeglutd.lib import library.
|
||||||
|
|
||||||
|
2015–03–15: Release 3.0.0-1.mp
|
||||||
|
|
||||||
|
• First 3.0.0 MSVC release. I’ve built the package using Visual Studio 2013,
|
||||||
|
and the only change I’ve made is to the DLL version resource—I’ve changed
|
||||||
|
the description so that my MinGW and MSVC builds are distinguishable from
|
||||||
|
each other (and other builds) using Windows Explorer.
|
||||||
|
|
||||||
|
|
||||||
|
Transmission Zero
|
||||||
|
2015–07–22
|
||||||
|
|
||||||
|
http://www.transmissionzero.co.uk/
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
#ifndef __FREEGLUT_H__
|
||||||
|
#define __FREEGLUT_H__
|
||||||
|
|
||||||
|
/*
|
||||||
|
* freeglut.h
|
||||||
|
*
|
||||||
|
* The freeglut library include file
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
|
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "freeglut_std.h"
|
||||||
|
#include "freeglut_ext.h"
|
||||||
|
|
||||||
|
/*** END OF FILE ***/
|
||||||
|
|
||||||
|
#endif /* __FREEGLUT_H__ */
|
||||||
@@ -0,0 +1,271 @@
|
|||||||
|
#ifndef __FREEGLUT_EXT_H__
|
||||||
|
#define __FREEGLUT_EXT_H__
|
||||||
|
|
||||||
|
/*
|
||||||
|
* freeglut_ext.h
|
||||||
|
*
|
||||||
|
* The non-GLUT-compatible extensions to the freeglut library include file
|
||||||
|
*
|
||||||
|
* Copyright (c) 1999-2000 Pawel W. Olszta. All Rights Reserved.
|
||||||
|
* Written by Pawel W. Olszta, <olszta@sourceforge.net>
|
||||||
|
* Creation date: Thu Dec 2 1999
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
* to deal in the Software without restriction, including without limitation
|
||||||
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included
|
||||||
|
* in all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
|
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Additional GLUT Key definitions for the Special key function
|
||||||
|
*/
|
||||||
|
#define GLUT_KEY_NUM_LOCK 0x006D
|
||||||
|
#define GLUT_KEY_BEGIN 0x006E
|
||||||
|
#define GLUT_KEY_DELETE 0x006F
|
||||||
|
#define GLUT_KEY_SHIFT_L 0x0070
|
||||||
|
#define GLUT_KEY_SHIFT_R 0x0071
|
||||||
|
#define GLUT_KEY_CTRL_L 0x0072
|
||||||
|
#define GLUT_KEY_CTRL_R 0x0073
|
||||||
|
#define GLUT_KEY_ALT_L 0x0074
|
||||||
|
#define GLUT_KEY_ALT_R 0x0075
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GLUT API Extension macro definitions -- behaviour when the user clicks on an "x" to close a window
|
||||||
|
*/
|
||||||
|
#define GLUT_ACTION_EXIT 0
|
||||||
|
#define GLUT_ACTION_GLUTMAINLOOP_RETURNS 1
|
||||||
|
#define GLUT_ACTION_CONTINUE_EXECUTION 2
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Create a new rendering context when the user opens a new window?
|
||||||
|
*/
|
||||||
|
#define GLUT_CREATE_NEW_CONTEXT 0
|
||||||
|
#define GLUT_USE_CURRENT_CONTEXT 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Direct/Indirect rendering context options (has meaning only in Unix/X11)
|
||||||
|
*/
|
||||||
|
#define GLUT_FORCE_INDIRECT_CONTEXT 0
|
||||||
|
#define GLUT_ALLOW_DIRECT_CONTEXT 1
|
||||||
|
#define GLUT_TRY_DIRECT_CONTEXT 2
|
||||||
|
#define GLUT_FORCE_DIRECT_CONTEXT 3
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GLUT API Extension macro definitions -- the glutGet parameters
|
||||||
|
*/
|
||||||
|
#define GLUT_INIT_STATE 0x007C
|
||||||
|
|
||||||
|
#define GLUT_ACTION_ON_WINDOW_CLOSE 0x01F9
|
||||||
|
|
||||||
|
#define GLUT_WINDOW_BORDER_WIDTH 0x01FA
|
||||||
|
#define GLUT_WINDOW_BORDER_HEIGHT 0x01FB
|
||||||
|
#define GLUT_WINDOW_HEADER_HEIGHT 0x01FB /* Docs say it should always have been GLUT_WINDOW_BORDER_HEIGHT, keep this for backward compatibility */
|
||||||
|
|
||||||
|
#define GLUT_VERSION 0x01FC
|
||||||
|
|
||||||
|
#define GLUT_RENDERING_CONTEXT 0x01FD
|
||||||
|
#define GLUT_DIRECT_RENDERING 0x01FE
|
||||||
|
|
||||||
|
#define GLUT_FULL_SCREEN 0x01FF
|
||||||
|
|
||||||
|
#define GLUT_SKIP_STALE_MOTION_EVENTS 0x0204
|
||||||
|
|
||||||
|
#define GLUT_GEOMETRY_VISUALIZE_NORMALS 0x0205
|
||||||
|
|
||||||
|
#define GLUT_STROKE_FONT_DRAW_JOIN_DOTS 0x0206 /* Draw dots between line segments of stroke fonts? */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* New tokens for glutInitDisplayMode.
|
||||||
|
* Only one GLUT_AUXn bit may be used at a time.
|
||||||
|
* Value 0x0400 is defined in OpenGLUT.
|
||||||
|
*/
|
||||||
|
#define GLUT_AUX 0x1000
|
||||||
|
|
||||||
|
#define GLUT_AUX1 0x1000
|
||||||
|
#define GLUT_AUX2 0x2000
|
||||||
|
#define GLUT_AUX3 0x4000
|
||||||
|
#define GLUT_AUX4 0x8000
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Context-related flags, see fg_state.c
|
||||||
|
* Set the requested OpenGL version
|
||||||
|
*/
|
||||||
|
#define GLUT_INIT_MAJOR_VERSION 0x0200
|
||||||
|
#define GLUT_INIT_MINOR_VERSION 0x0201
|
||||||
|
#define GLUT_INIT_FLAGS 0x0202
|
||||||
|
#define GLUT_INIT_PROFILE 0x0203
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Flags for glutInitContextFlags, see fg_init.c
|
||||||
|
*/
|
||||||
|
#define GLUT_DEBUG 0x0001
|
||||||
|
#define GLUT_FORWARD_COMPATIBLE 0x0002
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Flags for glutInitContextProfile, see fg_init.c
|
||||||
|
*/
|
||||||
|
#define GLUT_CORE_PROFILE 0x0001
|
||||||
|
#define GLUT_COMPATIBILITY_PROFILE 0x0002
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Process loop function, see fg_main.c
|
||||||
|
*/
|
||||||
|
FGAPI void FGAPIENTRY glutMainLoopEvent( void );
|
||||||
|
FGAPI void FGAPIENTRY glutLeaveMainLoop( void );
|
||||||
|
FGAPI void FGAPIENTRY glutExit ( void );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Window management functions, see fg_window.c
|
||||||
|
*/
|
||||||
|
FGAPI void FGAPIENTRY glutFullScreenToggle( void );
|
||||||
|
FGAPI void FGAPIENTRY glutLeaveFullScreen( void );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Menu functions
|
||||||
|
*/
|
||||||
|
FGAPI void FGAPIENTRY glutSetMenuFont( int menuID, void* font );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Window-specific callback functions, see fg_callbacks.c
|
||||||
|
*/
|
||||||
|
FGAPI void FGAPIENTRY glutMouseWheelFunc( void (* callback)( int, int, int, int ) );
|
||||||
|
FGAPI void FGAPIENTRY glutPositionFunc( void (* callback)( int, int ) );
|
||||||
|
FGAPI void FGAPIENTRY glutCloseFunc( void (* callback)( void ) );
|
||||||
|
FGAPI void FGAPIENTRY glutWMCloseFunc( void (* callback)( void ) );
|
||||||
|
/* And also a destruction callback for menus */
|
||||||
|
FGAPI void FGAPIENTRY glutMenuDestroyFunc( void (* callback)( void ) );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* State setting and retrieval functions, see fg_state.c
|
||||||
|
*/
|
||||||
|
FGAPI void FGAPIENTRY glutSetOption ( GLenum option_flag, int value );
|
||||||
|
FGAPI int * FGAPIENTRY glutGetModeValues(GLenum mode, int * size);
|
||||||
|
/* A.Donev: User-data manipulation */
|
||||||
|
FGAPI void* FGAPIENTRY glutGetWindowData( void );
|
||||||
|
FGAPI void FGAPIENTRY glutSetWindowData(void* data);
|
||||||
|
FGAPI void* FGAPIENTRY glutGetMenuData( void );
|
||||||
|
FGAPI void FGAPIENTRY glutSetMenuData(void* data);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Font stuff, see fg_font.c
|
||||||
|
*/
|
||||||
|
FGAPI int FGAPIENTRY glutBitmapHeight( void* font );
|
||||||
|
FGAPI GLfloat FGAPIENTRY glutStrokeHeight( void* font );
|
||||||
|
FGAPI void FGAPIENTRY glutBitmapString( void* font, const unsigned char *string );
|
||||||
|
FGAPI void FGAPIENTRY glutStrokeString( void* font, const unsigned char *string );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Geometry functions, see fg_geometry.c
|
||||||
|
*/
|
||||||
|
FGAPI void FGAPIENTRY glutWireRhombicDodecahedron( void );
|
||||||
|
FGAPI void FGAPIENTRY glutSolidRhombicDodecahedron( void );
|
||||||
|
FGAPI void FGAPIENTRY glutWireSierpinskiSponge ( int num_levels, double offset[3], double scale );
|
||||||
|
FGAPI void FGAPIENTRY glutSolidSierpinskiSponge ( int num_levels, double offset[3], double scale );
|
||||||
|
FGAPI void FGAPIENTRY glutWireCylinder( double radius, double height, GLint slices, GLint stacks);
|
||||||
|
FGAPI void FGAPIENTRY glutSolidCylinder( double radius, double height, GLint slices, GLint stacks);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Rest of functions for rendering Newell's teaset, found in fg_teapot.c
|
||||||
|
* NB: front facing polygons have clockwise winding, not counter clockwise
|
||||||
|
*/
|
||||||
|
FGAPI void FGAPIENTRY glutWireTeacup( double size );
|
||||||
|
FGAPI void FGAPIENTRY glutSolidTeacup( double size );
|
||||||
|
FGAPI void FGAPIENTRY glutWireTeaspoon( double size );
|
||||||
|
FGAPI void FGAPIENTRY glutSolidTeaspoon( double size );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Extension functions, see fg_ext.c
|
||||||
|
*/
|
||||||
|
typedef void (*GLUTproc)();
|
||||||
|
FGAPI GLUTproc FGAPIENTRY glutGetProcAddress( const char *procName );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Multi-touch/multi-pointer extensions
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define GLUT_HAS_MULTI 1
|
||||||
|
|
||||||
|
/* TODO: add device_id parameter,
|
||||||
|
cf. http://sourceforge.net/mailarchive/forum.php?thread_name=20120518071314.GA28061%40perso.beuc.net&forum_name=freeglut-developer */
|
||||||
|
FGAPI void FGAPIENTRY glutMultiEntryFunc( void (* callback)( int, int ) );
|
||||||
|
FGAPI void FGAPIENTRY glutMultiButtonFunc( void (* callback)( int, int, int, int, int ) );
|
||||||
|
FGAPI void FGAPIENTRY glutMultiMotionFunc( void (* callback)( int, int, int ) );
|
||||||
|
FGAPI void FGAPIENTRY glutMultiPassiveFunc( void (* callback)( int, int, int ) );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Joystick functions, see fg_joystick.c
|
||||||
|
*/
|
||||||
|
/* USE OF THESE FUNCTIONS IS DEPRECATED !!!!! */
|
||||||
|
/* If you have a serious need for these functions in your application, please either
|
||||||
|
* contact the "freeglut" developer community at freeglut-developer@lists.sourceforge.net,
|
||||||
|
* switch to the OpenGLUT library, or else port your joystick functionality over to PLIB's
|
||||||
|
* "js" library.
|
||||||
|
*/
|
||||||
|
int glutJoystickGetNumAxes( int ident );
|
||||||
|
int glutJoystickGetNumButtons( int ident );
|
||||||
|
int glutJoystickNotWorking( int ident );
|
||||||
|
float glutJoystickGetDeadBand( int ident, int axis );
|
||||||
|
void glutJoystickSetDeadBand( int ident, int axis, float db );
|
||||||
|
float glutJoystickGetSaturation( int ident, int axis );
|
||||||
|
void glutJoystickSetSaturation( int ident, int axis, float st );
|
||||||
|
void glutJoystickSetMinRange( int ident, float *axes );
|
||||||
|
void glutJoystickSetMaxRange( int ident, float *axes );
|
||||||
|
void glutJoystickSetCenter( int ident, float *axes );
|
||||||
|
void glutJoystickGetMinRange( int ident, float *axes );
|
||||||
|
void glutJoystickGetMaxRange( int ident, float *axes );
|
||||||
|
void glutJoystickGetCenter( int ident, float *axes );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Initialization functions, see fg_init.c
|
||||||
|
*/
|
||||||
|
/* to get the typedef for va_list */
|
||||||
|
#include <stdarg.h>
|
||||||
|
FGAPI void FGAPIENTRY glutInitContextVersion( int majorVersion, int minorVersion );
|
||||||
|
FGAPI void FGAPIENTRY glutInitContextFlags( int flags );
|
||||||
|
FGAPI void FGAPIENTRY glutInitContextProfile( int profile );
|
||||||
|
FGAPI void FGAPIENTRY glutInitErrorFunc( void (* callback)( const char *fmt, va_list ap ) );
|
||||||
|
FGAPI void FGAPIENTRY glutInitWarningFunc( void (* callback)( const char *fmt, va_list ap ) );
|
||||||
|
|
||||||
|
/* OpenGL >= 2.0 support */
|
||||||
|
FGAPI void FGAPIENTRY glutSetVertexAttribCoord3(GLint attrib);
|
||||||
|
FGAPI void FGAPIENTRY glutSetVertexAttribNormal(GLint attrib);
|
||||||
|
FGAPI void FGAPIENTRY glutSetVertexAttribTexCoord2(GLint attrib);
|
||||||
|
|
||||||
|
/* Mobile platforms lifecycle */
|
||||||
|
FGAPI void FGAPIENTRY glutInitContextFunc(void (* callback)());
|
||||||
|
FGAPI void FGAPIENTRY glutAppStatusFunc(void (* callback)(int));
|
||||||
|
/* state flags that can be passed to callback set by glutAppStatusFunc */
|
||||||
|
#define GLUT_APPSTATUS_PAUSE 0x0001
|
||||||
|
#define GLUT_APPSTATUS_RESUME 0x0002
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GLUT API macro definitions -- the display mode definitions
|
||||||
|
*/
|
||||||
|
#define GLUT_CAPTIONLESS 0x0400
|
||||||
|
#define GLUT_BORDERLESS 0x0800
|
||||||
|
#define GLUT_SRGB 0x1000
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*** END OF FILE ***/
|
||||||
|
|
||||||
|
#endif /* __FREEGLUT_EXT_H__ */
|
||||||
@@ -0,0 +1,638 @@
|
|||||||
|
#ifndef __FREEGLUT_STD_H__
|
||||||
|
#define __FREEGLUT_STD_H__
|
||||||
|
|
||||||
|
/*
|
||||||
|
* freeglut_std.h
|
||||||
|
*
|
||||||
|
* The GLUT-compatible part of the freeglut library include file
|
||||||
|
*
|
||||||
|
* Copyright (c) 1999-2000 Pawel W. Olszta. All Rights Reserved.
|
||||||
|
* Written by Pawel W. Olszta, <olszta@sourceforge.net>
|
||||||
|
* Creation date: Thu Dec 2 1999
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
* to deal in the Software without restriction, including without limitation
|
||||||
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included
|
||||||
|
* in all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
|
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Under windows, we have to differentiate between static and dynamic libraries
|
||||||
|
*/
|
||||||
|
#ifdef _WIN32
|
||||||
|
/* #pragma may not be supported by some compilers.
|
||||||
|
* Discussion by FreeGLUT developers suggests that
|
||||||
|
* Visual C++ specific code involving pragmas may
|
||||||
|
* need to move to a separate header. 24th Dec 2003
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Define FREEGLUT_LIB_PRAGMAS to 1 to include library
|
||||||
|
* pragmas or to 0 to exclude library pragmas.
|
||||||
|
* The default behavior depends on the compiler/platform.
|
||||||
|
*/
|
||||||
|
# ifndef FREEGLUT_LIB_PRAGMAS
|
||||||
|
# if ( defined(_MSC_VER) || defined(__WATCOMC__) ) && !defined(_WIN32_WCE)
|
||||||
|
# define FREEGLUT_LIB_PRAGMAS 1
|
||||||
|
# else
|
||||||
|
# define FREEGLUT_LIB_PRAGMAS 0
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifndef WIN32_LEAN_AND_MEAN
|
||||||
|
# define WIN32_LEAN_AND_MEAN 1
|
||||||
|
# endif
|
||||||
|
# ifndef NOMINMAX
|
||||||
|
# define NOMINMAX
|
||||||
|
# endif
|
||||||
|
# include <windows.h>
|
||||||
|
|
||||||
|
/* Windows static library */
|
||||||
|
# ifdef FREEGLUT_STATIC
|
||||||
|
|
||||||
|
#error Static linking is not supported with this build. Please remove the FREEGLUT_STATIC preprocessor directive, or download the source code from http://freeglut.sf.net/ and build against that.
|
||||||
|
|
||||||
|
/* Windows shared library (DLL) */
|
||||||
|
# else
|
||||||
|
|
||||||
|
# define FGAPIENTRY __stdcall
|
||||||
|
# if defined(FREEGLUT_EXPORTS)
|
||||||
|
# define FGAPI __declspec(dllexport)
|
||||||
|
# else
|
||||||
|
# define FGAPI __declspec(dllimport)
|
||||||
|
|
||||||
|
/* Link with Win32 shared freeglut lib */
|
||||||
|
# if FREEGLUT_LIB_PRAGMAS
|
||||||
|
# pragma comment (lib, "freeglut.lib")
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* Drag in other Windows libraries as required by FreeGLUT */
|
||||||
|
# if FREEGLUT_LIB_PRAGMAS
|
||||||
|
# pragma comment (lib, "glu32.lib") /* link OpenGL Utility lib */
|
||||||
|
# pragma comment (lib, "opengl32.lib") /* link Microsoft OpenGL lib */
|
||||||
|
# pragma comment (lib, "gdi32.lib") /* link Windows GDI lib */
|
||||||
|
# pragma comment (lib, "winmm.lib") /* link Windows MultiMedia lib */
|
||||||
|
# pragma comment (lib, "user32.lib") /* link Windows user lib */
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
/* Non-Windows definition of FGAPI and FGAPIENTRY */
|
||||||
|
# define FGAPI
|
||||||
|
# define FGAPIENTRY
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The freeglut and GLUT API versions
|
||||||
|
*/
|
||||||
|
#define FREEGLUT 1
|
||||||
|
#define GLUT_API_VERSION 4
|
||||||
|
#define GLUT_XLIB_IMPLEMENTATION 13
|
||||||
|
/* Deprecated:
|
||||||
|
cf. http://sourceforge.net/mailarchive/forum.php?thread_name=CABcAi1hw7cr4xtigckaGXB5X8wddLfMcbA_rZ3NAuwMrX_zmsw%40mail.gmail.com&forum_name=freeglut-developer */
|
||||||
|
#define FREEGLUT_VERSION_2_0 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Always include OpenGL and GLU headers
|
||||||
|
*/
|
||||||
|
/* Note: FREEGLUT_GLES is only used to cleanly bootstrap headers
|
||||||
|
inclusion here; use GLES constants directly
|
||||||
|
(e.g. GL_ES_VERSION_2_0) for all other needs */
|
||||||
|
#ifdef FREEGLUT_GLES
|
||||||
|
# include <EGL/egl.h>
|
||||||
|
# include <GLES/gl.h>
|
||||||
|
# include <GLES2/gl2.h>
|
||||||
|
#elif __APPLE__
|
||||||
|
# include <OpenGL/gl.h>
|
||||||
|
# include <OpenGL/glu.h>
|
||||||
|
#else
|
||||||
|
# include <GL/gl.h>
|
||||||
|
# include <GL/glu.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GLUT API macro definitions -- the special key codes:
|
||||||
|
*/
|
||||||
|
#define GLUT_KEY_F1 0x0001
|
||||||
|
#define GLUT_KEY_F2 0x0002
|
||||||
|
#define GLUT_KEY_F3 0x0003
|
||||||
|
#define GLUT_KEY_F4 0x0004
|
||||||
|
#define GLUT_KEY_F5 0x0005
|
||||||
|
#define GLUT_KEY_F6 0x0006
|
||||||
|
#define GLUT_KEY_F7 0x0007
|
||||||
|
#define GLUT_KEY_F8 0x0008
|
||||||
|
#define GLUT_KEY_F9 0x0009
|
||||||
|
#define GLUT_KEY_F10 0x000A
|
||||||
|
#define GLUT_KEY_F11 0x000B
|
||||||
|
#define GLUT_KEY_F12 0x000C
|
||||||
|
#define GLUT_KEY_LEFT 0x0064
|
||||||
|
#define GLUT_KEY_UP 0x0065
|
||||||
|
#define GLUT_KEY_RIGHT 0x0066
|
||||||
|
#define GLUT_KEY_DOWN 0x0067
|
||||||
|
#define GLUT_KEY_PAGE_UP 0x0068
|
||||||
|
#define GLUT_KEY_PAGE_DOWN 0x0069
|
||||||
|
#define GLUT_KEY_HOME 0x006A
|
||||||
|
#define GLUT_KEY_END 0x006B
|
||||||
|
#define GLUT_KEY_INSERT 0x006C
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GLUT API macro definitions -- mouse state definitions
|
||||||
|
*/
|
||||||
|
#define GLUT_LEFT_BUTTON 0x0000
|
||||||
|
#define GLUT_MIDDLE_BUTTON 0x0001
|
||||||
|
#define GLUT_RIGHT_BUTTON 0x0002
|
||||||
|
#define GLUT_DOWN 0x0000
|
||||||
|
#define GLUT_UP 0x0001
|
||||||
|
#define GLUT_LEFT 0x0000
|
||||||
|
#define GLUT_ENTERED 0x0001
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GLUT API macro definitions -- the display mode definitions
|
||||||
|
*/
|
||||||
|
#define GLUT_RGB 0x0000
|
||||||
|
#define GLUT_RGBA 0x0000
|
||||||
|
#define GLUT_INDEX 0x0001
|
||||||
|
#define GLUT_SINGLE 0x0000
|
||||||
|
#define GLUT_DOUBLE 0x0002
|
||||||
|
#define GLUT_ACCUM 0x0004
|
||||||
|
#define GLUT_ALPHA 0x0008
|
||||||
|
#define GLUT_DEPTH 0x0010
|
||||||
|
#define GLUT_STENCIL 0x0020
|
||||||
|
#define GLUT_MULTISAMPLE 0x0080
|
||||||
|
#define GLUT_STEREO 0x0100
|
||||||
|
#define GLUT_LUMINANCE 0x0200
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GLUT API macro definitions -- windows and menu related definitions
|
||||||
|
*/
|
||||||
|
#define GLUT_MENU_NOT_IN_USE 0x0000
|
||||||
|
#define GLUT_MENU_IN_USE 0x0001
|
||||||
|
#define GLUT_NOT_VISIBLE 0x0000
|
||||||
|
#define GLUT_VISIBLE 0x0001
|
||||||
|
#define GLUT_HIDDEN 0x0000
|
||||||
|
#define GLUT_FULLY_RETAINED 0x0001
|
||||||
|
#define GLUT_PARTIALLY_RETAINED 0x0002
|
||||||
|
#define GLUT_FULLY_COVERED 0x0003
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GLUT API macro definitions -- fonts definitions
|
||||||
|
*
|
||||||
|
* Steve Baker suggested to make it binary compatible with GLUT:
|
||||||
|
*/
|
||||||
|
#if defined(_MSC_VER) || defined(__CYGWIN__) || defined(__MINGW32__) || defined(__WATCOMC__)
|
||||||
|
# define GLUT_STROKE_ROMAN ((void *)0x0000)
|
||||||
|
# define GLUT_STROKE_MONO_ROMAN ((void *)0x0001)
|
||||||
|
# define GLUT_BITMAP_9_BY_15 ((void *)0x0002)
|
||||||
|
# define GLUT_BITMAP_8_BY_13 ((void *)0x0003)
|
||||||
|
# define GLUT_BITMAP_TIMES_ROMAN_10 ((void *)0x0004)
|
||||||
|
# define GLUT_BITMAP_TIMES_ROMAN_24 ((void *)0x0005)
|
||||||
|
# define GLUT_BITMAP_HELVETICA_10 ((void *)0x0006)
|
||||||
|
# define GLUT_BITMAP_HELVETICA_12 ((void *)0x0007)
|
||||||
|
# define GLUT_BITMAP_HELVETICA_18 ((void *)0x0008)
|
||||||
|
#else
|
||||||
|
/*
|
||||||
|
* I don't really know if it's a good idea... But here it goes:
|
||||||
|
*/
|
||||||
|
extern void* glutStrokeRoman;
|
||||||
|
extern void* glutStrokeMonoRoman;
|
||||||
|
extern void* glutBitmap9By15;
|
||||||
|
extern void* glutBitmap8By13;
|
||||||
|
extern void* glutBitmapTimesRoman10;
|
||||||
|
extern void* glutBitmapTimesRoman24;
|
||||||
|
extern void* glutBitmapHelvetica10;
|
||||||
|
extern void* glutBitmapHelvetica12;
|
||||||
|
extern void* glutBitmapHelvetica18;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Those pointers will be used by following definitions:
|
||||||
|
*/
|
||||||
|
# define GLUT_STROKE_ROMAN ((void *) &glutStrokeRoman)
|
||||||
|
# define GLUT_STROKE_MONO_ROMAN ((void *) &glutStrokeMonoRoman)
|
||||||
|
# define GLUT_BITMAP_9_BY_15 ((void *) &glutBitmap9By15)
|
||||||
|
# define GLUT_BITMAP_8_BY_13 ((void *) &glutBitmap8By13)
|
||||||
|
# define GLUT_BITMAP_TIMES_ROMAN_10 ((void *) &glutBitmapTimesRoman10)
|
||||||
|
# define GLUT_BITMAP_TIMES_ROMAN_24 ((void *) &glutBitmapTimesRoman24)
|
||||||
|
# define GLUT_BITMAP_HELVETICA_10 ((void *) &glutBitmapHelvetica10)
|
||||||
|
# define GLUT_BITMAP_HELVETICA_12 ((void *) &glutBitmapHelvetica12)
|
||||||
|
# define GLUT_BITMAP_HELVETICA_18 ((void *) &glutBitmapHelvetica18)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GLUT API macro definitions -- the glutGet parameters
|
||||||
|
*/
|
||||||
|
#define GLUT_WINDOW_X 0x0064
|
||||||
|
#define GLUT_WINDOW_Y 0x0065
|
||||||
|
#define GLUT_WINDOW_WIDTH 0x0066
|
||||||
|
#define GLUT_WINDOW_HEIGHT 0x0067
|
||||||
|
#define GLUT_WINDOW_BUFFER_SIZE 0x0068
|
||||||
|
#define GLUT_WINDOW_STENCIL_SIZE 0x0069
|
||||||
|
#define GLUT_WINDOW_DEPTH_SIZE 0x006A
|
||||||
|
#define GLUT_WINDOW_RED_SIZE 0x006B
|
||||||
|
#define GLUT_WINDOW_GREEN_SIZE 0x006C
|
||||||
|
#define GLUT_WINDOW_BLUE_SIZE 0x006D
|
||||||
|
#define GLUT_WINDOW_ALPHA_SIZE 0x006E
|
||||||
|
#define GLUT_WINDOW_ACCUM_RED_SIZE 0x006F
|
||||||
|
#define GLUT_WINDOW_ACCUM_GREEN_SIZE 0x0070
|
||||||
|
#define GLUT_WINDOW_ACCUM_BLUE_SIZE 0x0071
|
||||||
|
#define GLUT_WINDOW_ACCUM_ALPHA_SIZE 0x0072
|
||||||
|
#define GLUT_WINDOW_DOUBLEBUFFER 0x0073
|
||||||
|
#define GLUT_WINDOW_RGBA 0x0074
|
||||||
|
#define GLUT_WINDOW_PARENT 0x0075
|
||||||
|
#define GLUT_WINDOW_NUM_CHILDREN 0x0076
|
||||||
|
#define GLUT_WINDOW_COLORMAP_SIZE 0x0077
|
||||||
|
#define GLUT_WINDOW_NUM_SAMPLES 0x0078
|
||||||
|
#define GLUT_WINDOW_STEREO 0x0079
|
||||||
|
#define GLUT_WINDOW_CURSOR 0x007A
|
||||||
|
|
||||||
|
#define GLUT_SCREEN_WIDTH 0x00C8
|
||||||
|
#define GLUT_SCREEN_HEIGHT 0x00C9
|
||||||
|
#define GLUT_SCREEN_WIDTH_MM 0x00CA
|
||||||
|
#define GLUT_SCREEN_HEIGHT_MM 0x00CB
|
||||||
|
#define GLUT_MENU_NUM_ITEMS 0x012C
|
||||||
|
#define GLUT_DISPLAY_MODE_POSSIBLE 0x0190
|
||||||
|
#define GLUT_INIT_WINDOW_X 0x01F4
|
||||||
|
#define GLUT_INIT_WINDOW_Y 0x01F5
|
||||||
|
#define GLUT_INIT_WINDOW_WIDTH 0x01F6
|
||||||
|
#define GLUT_INIT_WINDOW_HEIGHT 0x01F7
|
||||||
|
#define GLUT_INIT_DISPLAY_MODE 0x01F8
|
||||||
|
#define GLUT_ELAPSED_TIME 0x02BC
|
||||||
|
#define GLUT_WINDOW_FORMAT_ID 0x007B
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GLUT API macro definitions -- the glutDeviceGet parameters
|
||||||
|
*/
|
||||||
|
#define GLUT_HAS_KEYBOARD 0x0258
|
||||||
|
#define GLUT_HAS_MOUSE 0x0259
|
||||||
|
#define GLUT_HAS_SPACEBALL 0x025A
|
||||||
|
#define GLUT_HAS_DIAL_AND_BUTTON_BOX 0x025B
|
||||||
|
#define GLUT_HAS_TABLET 0x025C
|
||||||
|
#define GLUT_NUM_MOUSE_BUTTONS 0x025D
|
||||||
|
#define GLUT_NUM_SPACEBALL_BUTTONS 0x025E
|
||||||
|
#define GLUT_NUM_BUTTON_BOX_BUTTONS 0x025F
|
||||||
|
#define GLUT_NUM_DIALS 0x0260
|
||||||
|
#define GLUT_NUM_TABLET_BUTTONS 0x0261
|
||||||
|
#define GLUT_DEVICE_IGNORE_KEY_REPEAT 0x0262
|
||||||
|
#define GLUT_DEVICE_KEY_REPEAT 0x0263
|
||||||
|
#define GLUT_HAS_JOYSTICK 0x0264
|
||||||
|
#define GLUT_OWNS_JOYSTICK 0x0265
|
||||||
|
#define GLUT_JOYSTICK_BUTTONS 0x0266
|
||||||
|
#define GLUT_JOYSTICK_AXES 0x0267
|
||||||
|
#define GLUT_JOYSTICK_POLL_RATE 0x0268
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GLUT API macro definitions -- the glutLayerGet parameters
|
||||||
|
*/
|
||||||
|
#define GLUT_OVERLAY_POSSIBLE 0x0320
|
||||||
|
#define GLUT_LAYER_IN_USE 0x0321
|
||||||
|
#define GLUT_HAS_OVERLAY 0x0322
|
||||||
|
#define GLUT_TRANSPARENT_INDEX 0x0323
|
||||||
|
#define GLUT_NORMAL_DAMAGED 0x0324
|
||||||
|
#define GLUT_OVERLAY_DAMAGED 0x0325
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GLUT API macro definitions -- the glutVideoResizeGet parameters
|
||||||
|
*/
|
||||||
|
#define GLUT_VIDEO_RESIZE_POSSIBLE 0x0384
|
||||||
|
#define GLUT_VIDEO_RESIZE_IN_USE 0x0385
|
||||||
|
#define GLUT_VIDEO_RESIZE_X_DELTA 0x0386
|
||||||
|
#define GLUT_VIDEO_RESIZE_Y_DELTA 0x0387
|
||||||
|
#define GLUT_VIDEO_RESIZE_WIDTH_DELTA 0x0388
|
||||||
|
#define GLUT_VIDEO_RESIZE_HEIGHT_DELTA 0x0389
|
||||||
|
#define GLUT_VIDEO_RESIZE_X 0x038A
|
||||||
|
#define GLUT_VIDEO_RESIZE_Y 0x038B
|
||||||
|
#define GLUT_VIDEO_RESIZE_WIDTH 0x038C
|
||||||
|
#define GLUT_VIDEO_RESIZE_HEIGHT 0x038D
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GLUT API macro definitions -- the glutUseLayer parameters
|
||||||
|
*/
|
||||||
|
#define GLUT_NORMAL 0x0000
|
||||||
|
#define GLUT_OVERLAY 0x0001
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GLUT API macro definitions -- the glutGetModifiers parameters
|
||||||
|
*/
|
||||||
|
#define GLUT_ACTIVE_SHIFT 0x0001
|
||||||
|
#define GLUT_ACTIVE_CTRL 0x0002
|
||||||
|
#define GLUT_ACTIVE_ALT 0x0004
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GLUT API macro definitions -- the glutSetCursor parameters
|
||||||
|
*/
|
||||||
|
#define GLUT_CURSOR_RIGHT_ARROW 0x0000
|
||||||
|
#define GLUT_CURSOR_LEFT_ARROW 0x0001
|
||||||
|
#define GLUT_CURSOR_INFO 0x0002
|
||||||
|
#define GLUT_CURSOR_DESTROY 0x0003
|
||||||
|
#define GLUT_CURSOR_HELP 0x0004
|
||||||
|
#define GLUT_CURSOR_CYCLE 0x0005
|
||||||
|
#define GLUT_CURSOR_SPRAY 0x0006
|
||||||
|
#define GLUT_CURSOR_WAIT 0x0007
|
||||||
|
#define GLUT_CURSOR_TEXT 0x0008
|
||||||
|
#define GLUT_CURSOR_CROSSHAIR 0x0009
|
||||||
|
#define GLUT_CURSOR_UP_DOWN 0x000A
|
||||||
|
#define GLUT_CURSOR_LEFT_RIGHT 0x000B
|
||||||
|
#define GLUT_CURSOR_TOP_SIDE 0x000C
|
||||||
|
#define GLUT_CURSOR_BOTTOM_SIDE 0x000D
|
||||||
|
#define GLUT_CURSOR_LEFT_SIDE 0x000E
|
||||||
|
#define GLUT_CURSOR_RIGHT_SIDE 0x000F
|
||||||
|
#define GLUT_CURSOR_TOP_LEFT_CORNER 0x0010
|
||||||
|
#define GLUT_CURSOR_TOP_RIGHT_CORNER 0x0011
|
||||||
|
#define GLUT_CURSOR_BOTTOM_RIGHT_CORNER 0x0012
|
||||||
|
#define GLUT_CURSOR_BOTTOM_LEFT_CORNER 0x0013
|
||||||
|
#define GLUT_CURSOR_INHERIT 0x0064
|
||||||
|
#define GLUT_CURSOR_NONE 0x0065
|
||||||
|
#define GLUT_CURSOR_FULL_CROSSHAIR 0x0066
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GLUT API macro definitions -- RGB color component specification definitions
|
||||||
|
*/
|
||||||
|
#define GLUT_RED 0x0000
|
||||||
|
#define GLUT_GREEN 0x0001
|
||||||
|
#define GLUT_BLUE 0x0002
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GLUT API macro definitions -- additional keyboard and joystick definitions
|
||||||
|
*/
|
||||||
|
#define GLUT_KEY_REPEAT_OFF 0x0000
|
||||||
|
#define GLUT_KEY_REPEAT_ON 0x0001
|
||||||
|
#define GLUT_KEY_REPEAT_DEFAULT 0x0002
|
||||||
|
|
||||||
|
#define GLUT_JOYSTICK_BUTTON_A 0x0001
|
||||||
|
#define GLUT_JOYSTICK_BUTTON_B 0x0002
|
||||||
|
#define GLUT_JOYSTICK_BUTTON_C 0x0004
|
||||||
|
#define GLUT_JOYSTICK_BUTTON_D 0x0008
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GLUT API macro definitions -- game mode definitions
|
||||||
|
*/
|
||||||
|
#define GLUT_GAME_MODE_ACTIVE 0x0000
|
||||||
|
#define GLUT_GAME_MODE_POSSIBLE 0x0001
|
||||||
|
#define GLUT_GAME_MODE_WIDTH 0x0002
|
||||||
|
#define GLUT_GAME_MODE_HEIGHT 0x0003
|
||||||
|
#define GLUT_GAME_MODE_PIXEL_DEPTH 0x0004
|
||||||
|
#define GLUT_GAME_MODE_REFRESH_RATE 0x0005
|
||||||
|
#define GLUT_GAME_MODE_DISPLAY_CHANGED 0x0006
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Initialization functions, see fglut_init.c
|
||||||
|
*/
|
||||||
|
FGAPI void FGAPIENTRY glutInit( int* pargc, char** argv );
|
||||||
|
FGAPI void FGAPIENTRY glutInitWindowPosition( int x, int y );
|
||||||
|
FGAPI void FGAPIENTRY glutInitWindowSize( int width, int height );
|
||||||
|
FGAPI void FGAPIENTRY glutInitDisplayMode( unsigned int displayMode );
|
||||||
|
FGAPI void FGAPIENTRY glutInitDisplayString( const char* displayMode );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Process loop function, see fg_main.c
|
||||||
|
*/
|
||||||
|
FGAPI void FGAPIENTRY glutMainLoop( void );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Window management functions, see fg_window.c
|
||||||
|
*/
|
||||||
|
FGAPI int FGAPIENTRY glutCreateWindow( const char* title );
|
||||||
|
FGAPI int FGAPIENTRY glutCreateSubWindow( int window, int x, int y, int width, int height );
|
||||||
|
FGAPI void FGAPIENTRY glutDestroyWindow( int window );
|
||||||
|
FGAPI void FGAPIENTRY glutSetWindow( int window );
|
||||||
|
FGAPI int FGAPIENTRY glutGetWindow( void );
|
||||||
|
FGAPI void FGAPIENTRY glutSetWindowTitle( const char* title );
|
||||||
|
FGAPI void FGAPIENTRY glutSetIconTitle( const char* title );
|
||||||
|
FGAPI void FGAPIENTRY glutReshapeWindow( int width, int height );
|
||||||
|
FGAPI void FGAPIENTRY glutPositionWindow( int x, int y );
|
||||||
|
FGAPI void FGAPIENTRY glutShowWindow( void );
|
||||||
|
FGAPI void FGAPIENTRY glutHideWindow( void );
|
||||||
|
FGAPI void FGAPIENTRY glutIconifyWindow( void );
|
||||||
|
FGAPI void FGAPIENTRY glutPushWindow( void );
|
||||||
|
FGAPI void FGAPIENTRY glutPopWindow( void );
|
||||||
|
FGAPI void FGAPIENTRY glutFullScreen( void );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Display-related functions, see fg_display.c
|
||||||
|
*/
|
||||||
|
FGAPI void FGAPIENTRY glutPostWindowRedisplay( int window );
|
||||||
|
FGAPI void FGAPIENTRY glutPostRedisplay( void );
|
||||||
|
FGAPI void FGAPIENTRY glutSwapBuffers( void );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Mouse cursor functions, see fg_cursor.c
|
||||||
|
*/
|
||||||
|
FGAPI void FGAPIENTRY glutWarpPointer( int x, int y );
|
||||||
|
FGAPI void FGAPIENTRY glutSetCursor( int cursor );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Overlay stuff, see fg_overlay.c
|
||||||
|
*/
|
||||||
|
FGAPI void FGAPIENTRY glutEstablishOverlay( void );
|
||||||
|
FGAPI void FGAPIENTRY glutRemoveOverlay( void );
|
||||||
|
FGAPI void FGAPIENTRY glutUseLayer( GLenum layer );
|
||||||
|
FGAPI void FGAPIENTRY glutPostOverlayRedisplay( void );
|
||||||
|
FGAPI void FGAPIENTRY glutPostWindowOverlayRedisplay( int window );
|
||||||
|
FGAPI void FGAPIENTRY glutShowOverlay( void );
|
||||||
|
FGAPI void FGAPIENTRY glutHideOverlay( void );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Menu stuff, see fg_menu.c
|
||||||
|
*/
|
||||||
|
FGAPI int FGAPIENTRY glutCreateMenu( void (* callback)( int menu ) );
|
||||||
|
FGAPI void FGAPIENTRY glutDestroyMenu( int menu );
|
||||||
|
FGAPI int FGAPIENTRY glutGetMenu( void );
|
||||||
|
FGAPI void FGAPIENTRY glutSetMenu( int menu );
|
||||||
|
FGAPI void FGAPIENTRY glutAddMenuEntry( const char* label, int value );
|
||||||
|
FGAPI void FGAPIENTRY glutAddSubMenu( const char* label, int subMenu );
|
||||||
|
FGAPI void FGAPIENTRY glutChangeToMenuEntry( int item, const char* label, int value );
|
||||||
|
FGAPI void FGAPIENTRY glutChangeToSubMenu( int item, const char* label, int value );
|
||||||
|
FGAPI void FGAPIENTRY glutRemoveMenuItem( int item );
|
||||||
|
FGAPI void FGAPIENTRY glutAttachMenu( int button );
|
||||||
|
FGAPI void FGAPIENTRY glutDetachMenu( int button );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Global callback functions, see fg_callbacks.c
|
||||||
|
*/
|
||||||
|
FGAPI void FGAPIENTRY glutTimerFunc( unsigned int time, void (* callback)( int ), int value );
|
||||||
|
FGAPI void FGAPIENTRY glutIdleFunc( void (* callback)( void ) );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Window-specific callback functions, see fg_callbacks.c
|
||||||
|
*/
|
||||||
|
FGAPI void FGAPIENTRY glutKeyboardFunc( void (* callback)( unsigned char, int, int ) );
|
||||||
|
FGAPI void FGAPIENTRY glutSpecialFunc( void (* callback)( int, int, int ) );
|
||||||
|
FGAPI void FGAPIENTRY glutReshapeFunc( void (* callback)( int, int ) );
|
||||||
|
FGAPI void FGAPIENTRY glutVisibilityFunc( void (* callback)( int ) );
|
||||||
|
FGAPI void FGAPIENTRY glutDisplayFunc( void (* callback)( void ) );
|
||||||
|
FGAPI void FGAPIENTRY glutMouseFunc( void (* callback)( int, int, int, int ) );
|
||||||
|
FGAPI void FGAPIENTRY glutMotionFunc( void (* callback)( int, int ) );
|
||||||
|
FGAPI void FGAPIENTRY glutPassiveMotionFunc( void (* callback)( int, int ) );
|
||||||
|
FGAPI void FGAPIENTRY glutEntryFunc( void (* callback)( int ) );
|
||||||
|
|
||||||
|
FGAPI void FGAPIENTRY glutKeyboardUpFunc( void (* callback)( unsigned char, int, int ) );
|
||||||
|
FGAPI void FGAPIENTRY glutSpecialUpFunc( void (* callback)( int, int, int ) );
|
||||||
|
FGAPI void FGAPIENTRY glutJoystickFunc( void (* callback)( unsigned int, int, int, int ), int pollInterval );
|
||||||
|
FGAPI void FGAPIENTRY glutMenuStateFunc( void (* callback)( int ) );
|
||||||
|
FGAPI void FGAPIENTRY glutMenuStatusFunc( void (* callback)( int, int, int ) );
|
||||||
|
FGAPI void FGAPIENTRY glutOverlayDisplayFunc( void (* callback)( void ) );
|
||||||
|
FGAPI void FGAPIENTRY glutWindowStatusFunc( void (* callback)( int ) );
|
||||||
|
|
||||||
|
FGAPI void FGAPIENTRY glutSpaceballMotionFunc( void (* callback)( int, int, int ) );
|
||||||
|
FGAPI void FGAPIENTRY glutSpaceballRotateFunc( void (* callback)( int, int, int ) );
|
||||||
|
FGAPI void FGAPIENTRY glutSpaceballButtonFunc( void (* callback)( int, int ) );
|
||||||
|
FGAPI void FGAPIENTRY glutButtonBoxFunc( void (* callback)( int, int ) );
|
||||||
|
FGAPI void FGAPIENTRY glutDialsFunc( void (* callback)( int, int ) );
|
||||||
|
FGAPI void FGAPIENTRY glutTabletMotionFunc( void (* callback)( int, int ) );
|
||||||
|
FGAPI void FGAPIENTRY glutTabletButtonFunc( void (* callback)( int, int, int, int ) );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* State setting and retrieval functions, see fg_state.c
|
||||||
|
*/
|
||||||
|
FGAPI int FGAPIENTRY glutGet( GLenum query );
|
||||||
|
FGAPI int FGAPIENTRY glutDeviceGet( GLenum query );
|
||||||
|
FGAPI int FGAPIENTRY glutGetModifiers( void );
|
||||||
|
FGAPI int FGAPIENTRY glutLayerGet( GLenum query );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Font stuff, see fg_font.c
|
||||||
|
*/
|
||||||
|
FGAPI void FGAPIENTRY glutBitmapCharacter( void* font, int character );
|
||||||
|
FGAPI int FGAPIENTRY glutBitmapWidth( void* font, int character );
|
||||||
|
FGAPI void FGAPIENTRY glutStrokeCharacter( void* font, int character );
|
||||||
|
FGAPI int FGAPIENTRY glutStrokeWidth( void* font, int character );
|
||||||
|
FGAPI GLfloat FGAPIENTRY glutStrokeWidthf( void* font, int character ); /* GLUT 3.8 */
|
||||||
|
FGAPI int FGAPIENTRY glutBitmapLength( void* font, const unsigned char* string );
|
||||||
|
FGAPI int FGAPIENTRY glutStrokeLength( void* font, const unsigned char* string );
|
||||||
|
FGAPI GLfloat FGAPIENTRY glutStrokeLengthf( void* font, const unsigned char *string ); /* GLUT 3.8 */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Geometry functions, see fg_geometry.c
|
||||||
|
*/
|
||||||
|
|
||||||
|
FGAPI void FGAPIENTRY glutWireCube( double size );
|
||||||
|
FGAPI void FGAPIENTRY glutSolidCube( double size );
|
||||||
|
FGAPI void FGAPIENTRY glutWireSphere( double radius, GLint slices, GLint stacks );
|
||||||
|
FGAPI void FGAPIENTRY glutSolidSphere( double radius, GLint slices, GLint stacks );
|
||||||
|
FGAPI void FGAPIENTRY glutWireCone( double base, double height, GLint slices, GLint stacks );
|
||||||
|
FGAPI void FGAPIENTRY glutSolidCone( double base, double height, GLint slices, GLint stacks );
|
||||||
|
FGAPI void FGAPIENTRY glutWireTorus( double innerRadius, double outerRadius, GLint sides, GLint rings );
|
||||||
|
FGAPI void FGAPIENTRY glutSolidTorus( double innerRadius, double outerRadius, GLint sides, GLint rings );
|
||||||
|
FGAPI void FGAPIENTRY glutWireDodecahedron( void );
|
||||||
|
FGAPI void FGAPIENTRY glutSolidDodecahedron( void );
|
||||||
|
FGAPI void FGAPIENTRY glutWireOctahedron( void );
|
||||||
|
FGAPI void FGAPIENTRY glutSolidOctahedron( void );
|
||||||
|
FGAPI void FGAPIENTRY glutWireTetrahedron( void );
|
||||||
|
FGAPI void FGAPIENTRY glutSolidTetrahedron( void );
|
||||||
|
FGAPI void FGAPIENTRY glutWireIcosahedron( void );
|
||||||
|
FGAPI void FGAPIENTRY glutSolidIcosahedron( void );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Teapot rendering functions, found in fg_teapot.c
|
||||||
|
* NB: front facing polygons have clockwise winding, not counter clockwise
|
||||||
|
*/
|
||||||
|
FGAPI void FGAPIENTRY glutWireTeapot( double size );
|
||||||
|
FGAPI void FGAPIENTRY glutSolidTeapot( double size );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Game mode functions, see fg_gamemode.c
|
||||||
|
*/
|
||||||
|
FGAPI void FGAPIENTRY glutGameModeString( const char* string );
|
||||||
|
FGAPI int FGAPIENTRY glutEnterGameMode( void );
|
||||||
|
FGAPI void FGAPIENTRY glutLeaveGameMode( void );
|
||||||
|
FGAPI int FGAPIENTRY glutGameModeGet( GLenum query );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Video resize functions, see fg_videoresize.c
|
||||||
|
*/
|
||||||
|
FGAPI int FGAPIENTRY glutVideoResizeGet( GLenum query );
|
||||||
|
FGAPI void FGAPIENTRY glutSetupVideoResizing( void );
|
||||||
|
FGAPI void FGAPIENTRY glutStopVideoResizing( void );
|
||||||
|
FGAPI void FGAPIENTRY glutVideoResize( int x, int y, int width, int height );
|
||||||
|
FGAPI void FGAPIENTRY glutVideoPan( int x, int y, int width, int height );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Colormap functions, see fg_misc.c
|
||||||
|
*/
|
||||||
|
FGAPI void FGAPIENTRY glutSetColor( int color, GLfloat red, GLfloat green, GLfloat blue );
|
||||||
|
FGAPI GLfloat FGAPIENTRY glutGetColor( int color, int component );
|
||||||
|
FGAPI void FGAPIENTRY glutCopyColormap( int window );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Misc keyboard and joystick functions, see fg_misc.c
|
||||||
|
*/
|
||||||
|
FGAPI void FGAPIENTRY glutIgnoreKeyRepeat( int ignore );
|
||||||
|
FGAPI void FGAPIENTRY glutSetKeyRepeat( int repeatMode );
|
||||||
|
FGAPI void FGAPIENTRY glutForceJoystickFunc( void );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Misc functions, see fg_misc.c
|
||||||
|
*/
|
||||||
|
FGAPI int FGAPIENTRY glutExtensionSupported( const char* extension );
|
||||||
|
FGAPI void FGAPIENTRY glutReportErrors( void );
|
||||||
|
|
||||||
|
/* Comment from glut.h of classic GLUT:
|
||||||
|
|
||||||
|
Win32 has an annoying issue where there are multiple C run-time
|
||||||
|
libraries (CRTs). If the executable is linked with a different CRT
|
||||||
|
from the GLUT DLL, the GLUT DLL will not share the same CRT static
|
||||||
|
data seen by the executable. In particular, atexit callbacks registered
|
||||||
|
in the executable will not be called if GLUT calls its (different)
|
||||||
|
exit routine). GLUT is typically built with the
|
||||||
|
"/MD" option (the CRT with multithreading DLL support), but the Visual
|
||||||
|
C++ linker default is "/ML" (the single threaded CRT).
|
||||||
|
|
||||||
|
One workaround to this issue is requiring users to always link with
|
||||||
|
the same CRT as GLUT is compiled with. That requires users supply a
|
||||||
|
non-standard option. GLUT 3.7 has its own built-in workaround where
|
||||||
|
the executable's "exit" function pointer is covertly passed to GLUT.
|
||||||
|
GLUT then calls the executable's exit function pointer to ensure that
|
||||||
|
any "atexit" calls registered by the application are called if GLUT
|
||||||
|
needs to exit.
|
||||||
|
|
||||||
|
Note that the __glut*WithExit routines should NEVER be called directly.
|
||||||
|
To avoid the atexit workaround, #define GLUT_DISABLE_ATEXIT_HACK. */
|
||||||
|
|
||||||
|
/* to get the prototype for exit() */
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK) && !defined(__WATCOMC__)
|
||||||
|
FGAPI void FGAPIENTRY __glutInitWithExit(int *argcp, char **argv, void (__cdecl *exitfunc)(int));
|
||||||
|
FGAPI int FGAPIENTRY __glutCreateWindowWithExit(const char *title, void (__cdecl *exitfunc)(int));
|
||||||
|
FGAPI int FGAPIENTRY __glutCreateMenuWithExit(void (* func)(int), void (__cdecl *exitfunc)(int));
|
||||||
|
#ifndef FREEGLUT_BUILDING_LIB
|
||||||
|
#if defined(__GNUC__)
|
||||||
|
#define FGUNUSED __attribute__((unused))
|
||||||
|
#else
|
||||||
|
#define FGUNUSED
|
||||||
|
#endif
|
||||||
|
static void FGAPIENTRY FGUNUSED glutInit_ATEXIT_HACK(int *argcp, char **argv) { __glutInitWithExit(argcp, argv, exit); }
|
||||||
|
#define glutInit glutInit_ATEXIT_HACK
|
||||||
|
static int FGAPIENTRY FGUNUSED glutCreateWindow_ATEXIT_HACK(const char *title) { return __glutCreateWindowWithExit(title, exit); }
|
||||||
|
#define glutCreateWindow glutCreateWindow_ATEXIT_HACK
|
||||||
|
static int FGAPIENTRY FGUNUSED glutCreateMenu_ATEXIT_HACK(void (* func)(int)) { return __glutCreateMenuWithExit(func, exit); }
|
||||||
|
#define glutCreateMenu glutCreateMenu_ATEXIT_HACK
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*** END OF FILE ***/
|
||||||
|
|
||||||
|
#endif /* __FREEGLUT_STD_H__ */
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
#ifndef __GLUT_H__
|
||||||
|
#define __GLUT_H__
|
||||||
|
|
||||||
|
/*
|
||||||
|
* glut.h
|
||||||
|
*
|
||||||
|
* The freeglut library include file
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
|
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "freeglut_std.h"
|
||||||
|
|
||||||
|
/*** END OF FILE ***/
|
||||||
|
|
||||||
|
#endif /* __GLUT_H__ */
|
||||||
@@ -0,0 +1,730 @@
|
|||||||
|
#include "json.h"
|
||||||
|
#include <iomanip>
|
||||||
|
#include <sstream>
|
||||||
|
#include <iostream>
|
||||||
|
#include <cmath>
|
||||||
|
#include <cfloat>
|
||||||
|
#include <set>
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <math.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
namespace json
|
||||||
|
{
|
||||||
|
|
||||||
|
Value Value::null;
|
||||||
|
//constructors
|
||||||
|
Value::Value()
|
||||||
|
{
|
||||||
|
type = Type::nullValue;
|
||||||
|
value.objectValue = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
Value::Value(Type type)
|
||||||
|
{
|
||||||
|
this->type = type;
|
||||||
|
if (type == Type::stringValue)
|
||||||
|
value.stringValue = new std::string();
|
||||||
|
if (type == Type::arrayValue)
|
||||||
|
value.arrayValue = new std::vector<Value>();
|
||||||
|
if (type == Type::objectValue)
|
||||||
|
value.objectValue = new std::map<std::string, Value>();
|
||||||
|
}
|
||||||
|
|
||||||
|
Value::Value(int value)
|
||||||
|
{
|
||||||
|
type = Type::intValue;
|
||||||
|
this->value.intValue = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
Value::Value(float value)
|
||||||
|
{
|
||||||
|
type = Type::floatValue;
|
||||||
|
this->value.floatValue = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
Value::Value(bool value)
|
||||||
|
{
|
||||||
|
type = Type::boolValue;
|
||||||
|
this->value.boolValue = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
Value::Value(const std::string &value)
|
||||||
|
{
|
||||||
|
type = Type::stringValue;
|
||||||
|
this->value.stringValue = new std::string();
|
||||||
|
this->value.stringValue->assign(value);
|
||||||
|
}
|
||||||
|
Value::Value(const char* value)
|
||||||
|
{
|
||||||
|
type = Type::stringValue;
|
||||||
|
this->value.stringValue = new std::string();
|
||||||
|
this->value.stringValue->assign(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
Value::Value(const Value& other) : Value(other.type)
|
||||||
|
{
|
||||||
|
if (type == Type::objectValue)
|
||||||
|
*this->value.objectValue = *other.value.objectValue;
|
||||||
|
else if (type == Type::arrayValue)
|
||||||
|
*this->value.arrayValue = *other.value.arrayValue;
|
||||||
|
else if (type == Type::stringValue)
|
||||||
|
this->value.stringValue->assign(*other.value.stringValue);
|
||||||
|
else
|
||||||
|
this->value = other.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Value::operator=(const Value& other)
|
||||||
|
{
|
||||||
|
if (type != other.type)
|
||||||
|
{
|
||||||
|
if (type == Type::stringValue)
|
||||||
|
delete value.stringValue;
|
||||||
|
if (type == Type::arrayValue)
|
||||||
|
delete value.arrayValue;
|
||||||
|
if (type == Type::objectValue)
|
||||||
|
delete value.objectValue;
|
||||||
|
this->type = other.type;
|
||||||
|
if (type == Type::stringValue)
|
||||||
|
value.stringValue = new std::string();
|
||||||
|
if (type == Type::arrayValue)
|
||||||
|
value.arrayValue = new std::vector<Value>();
|
||||||
|
if (type == Type::objectValue)
|
||||||
|
value.objectValue = new std::map<std::string, Value>();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type == Type::objectValue)
|
||||||
|
*this->value.objectValue = *other.value.objectValue;
|
||||||
|
else if (type == Type::arrayValue)
|
||||||
|
*this->value.arrayValue = *other.value.arrayValue;
|
||||||
|
else if (type == Type::stringValue)
|
||||||
|
this->value.stringValue->assign(*other.value.stringValue);
|
||||||
|
else
|
||||||
|
this->value = other.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
Value::~Value()
|
||||||
|
{
|
||||||
|
if (type == Type::stringValue)
|
||||||
|
delete value.stringValue;
|
||||||
|
else if (type == Type::arrayValue)
|
||||||
|
delete value.arrayValue;
|
||||||
|
else if (type == Type::objectValue)
|
||||||
|
delete value.objectValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t Value::size() const
|
||||||
|
{
|
||||||
|
assert(type == Type::arrayValue || type == Type::objectValue);
|
||||||
|
if (type == Type::arrayValue)
|
||||||
|
return value.arrayValue->size();
|
||||||
|
else if (type == Type::objectValue)
|
||||||
|
return value.objectValue->size();
|
||||||
|
throw "Unsupported";
|
||||||
|
}
|
||||||
|
|
||||||
|
void Value::push_back(const Value& value)
|
||||||
|
{
|
||||||
|
assert(type == Type::arrayValue || type == Type::nullValue);
|
||||||
|
if (type == Type::nullValue)
|
||||||
|
{
|
||||||
|
type = Type::arrayValue;
|
||||||
|
this->value.arrayValue = new std::vector<Value>();
|
||||||
|
}
|
||||||
|
this->value.arrayValue->push_back(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Value& Value::operator[](const std::string &key)
|
||||||
|
{
|
||||||
|
assert(type == Type::objectValue);
|
||||||
|
return (*value.objectValue)[key];
|
||||||
|
}
|
||||||
|
Value& Value::operator[](const std::string &key) const
|
||||||
|
{
|
||||||
|
assert(type == Type::objectValue);
|
||||||
|
return (*value.objectValue)[key];
|
||||||
|
}
|
||||||
|
|
||||||
|
Value& Value::operator[](const char* key)
|
||||||
|
{
|
||||||
|
assert(type == Type::objectValue || type == Type::nullValue);
|
||||||
|
if (type == Type::nullValue)
|
||||||
|
{
|
||||||
|
type = Type::objectValue;
|
||||||
|
value.objectValue = new std::map<std::string, Value>();
|
||||||
|
}
|
||||||
|
return (*value.objectValue)[std::string(key)];
|
||||||
|
}
|
||||||
|
|
||||||
|
Value& Value::operator[](const char* key) const
|
||||||
|
{
|
||||||
|
assert(type == Type::objectValue);
|
||||||
|
return (*value.objectValue)[std::string(key)];
|
||||||
|
}
|
||||||
|
|
||||||
|
Value& Value::operator[](size_t index)
|
||||||
|
{
|
||||||
|
assert(type == Type::arrayValue);
|
||||||
|
return (*value.arrayValue)[index];
|
||||||
|
}
|
||||||
|
Value& Value::operator[](size_t index) const
|
||||||
|
{
|
||||||
|
assert(type == Type::arrayValue);
|
||||||
|
return (*value.arrayValue)[index];
|
||||||
|
}
|
||||||
|
Value& Value::operator[](int index)
|
||||||
|
{
|
||||||
|
assert(type == Type::arrayValue);
|
||||||
|
return (*value.arrayValue)[index];
|
||||||
|
}
|
||||||
|
Value& Value::operator[](int index) const
|
||||||
|
{
|
||||||
|
assert(type == Type::arrayValue);
|
||||||
|
return (*value.arrayValue)[index];
|
||||||
|
}
|
||||||
|
|
||||||
|
void Value::erase(size_t index)
|
||||||
|
{
|
||||||
|
throw "Cannot cast";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Value::Iterator Value::end() const
|
||||||
|
{
|
||||||
|
if (type == Type::objectValue)
|
||||||
|
return Iterator(value.objectValue->end());
|
||||||
|
else if (type == Type::arrayValue)
|
||||||
|
return Iterator(value.arrayValue->end());
|
||||||
|
throw "oops";
|
||||||
|
}
|
||||||
|
|
||||||
|
Value::Iterator Value::begin() const
|
||||||
|
{
|
||||||
|
if (type == Type::objectValue)
|
||||||
|
return Iterator(value.objectValue->begin());
|
||||||
|
else if (type == Type::arrayValue)
|
||||||
|
return Iterator(value.arrayValue->begin());
|
||||||
|
throw "oops";
|
||||||
|
}
|
||||||
|
|
||||||
|
///iterator stuff
|
||||||
|
|
||||||
|
Value Value::Iterator::operator*()
|
||||||
|
{
|
||||||
|
if (type == Type::objectValue)
|
||||||
|
return this->objectIterator->second;
|
||||||
|
else if (type == Type::arrayValue)
|
||||||
|
return *arrayIterator;
|
||||||
|
throw "Oops";
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Value::Iterator::operator!=(const Iterator &other)
|
||||||
|
{
|
||||||
|
if (type == Type::objectValue)
|
||||||
|
return this->objectIterator != other.objectIterator;
|
||||||
|
else if (type == Type::arrayValue)
|
||||||
|
return this->arrayIterator != other.arrayIterator;
|
||||||
|
throw "Oops";
|
||||||
|
}
|
||||||
|
|
||||||
|
void Value::Iterator::operator++()
|
||||||
|
{
|
||||||
|
if (type == Type::objectValue)
|
||||||
|
this->objectIterator++;
|
||||||
|
else if (type == Type::arrayValue)
|
||||||
|
this->arrayIterator++;
|
||||||
|
}
|
||||||
|
void Value::Iterator::operator++(int)
|
||||||
|
{
|
||||||
|
if (type == Type::objectValue)
|
||||||
|
this->objectIterator++;
|
||||||
|
else if (type == Type::arrayValue)
|
||||||
|
this->arrayIterator++;
|
||||||
|
}
|
||||||
|
|
||||||
|
Value::Iterator::Iterator(const std::vector<Value>::iterator& arrayIterator)
|
||||||
|
{
|
||||||
|
type = Type::arrayValue;
|
||||||
|
this->arrayIterator = arrayIterator;
|
||||||
|
}
|
||||||
|
|
||||||
|
Value::Iterator::Iterator(const std::map<std::string, Value>::iterator& objectIterator)
|
||||||
|
{
|
||||||
|
type = Type::objectValue;
|
||||||
|
this->objectIterator = objectIterator;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string Value::Iterator::key()
|
||||||
|
{
|
||||||
|
assert(type == Type::objectValue);
|
||||||
|
return this->objectIterator->first;
|
||||||
|
}
|
||||||
|
Value& Value::Iterator::value()
|
||||||
|
{
|
||||||
|
assert(type == Type::objectValue);
|
||||||
|
return this->objectIterator->second;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static void ltrim(std::istream& stream);
|
||||||
|
static void eatComment(std::istream& stream);
|
||||||
|
static Value eatString(std::istream& stream);
|
||||||
|
static Value eatObject(std::istream& stream);
|
||||||
|
static Value eatArray(std::istream& stream);
|
||||||
|
static Value eatNumeric(std::istream& stream, char firstChar);
|
||||||
|
static Value eatBool(std::istream& stream);
|
||||||
|
static Value eatNull(std::istream& stream);
|
||||||
|
static Value eatValue(std::istream& stream);
|
||||||
|
|
||||||
|
//reading
|
||||||
|
static void ltrim(std::istream& stream)
|
||||||
|
{
|
||||||
|
char c = stream.peek();
|
||||||
|
while (c == ' ' || c == '\t' || c == '\n' || c == '\r')
|
||||||
|
{
|
||||||
|
stream.get();
|
||||||
|
c = stream.peek();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static Value eatString(std::istream& stream)
|
||||||
|
{
|
||||||
|
std::string value = "";
|
||||||
|
bool escaped = false;
|
||||||
|
while (!stream.eof())
|
||||||
|
{
|
||||||
|
char c = stream.get();
|
||||||
|
if (c == '\\' && !escaped)
|
||||||
|
escaped = !escaped;
|
||||||
|
else if (c == '\"' && !escaped)
|
||||||
|
return Value(value);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
value += c;
|
||||||
|
escaped = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Value(value);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static Value eatObject(std::istream& stream)
|
||||||
|
{
|
||||||
|
Value obj(Type::objectValue);
|
||||||
|
while (!stream.eof())
|
||||||
|
{
|
||||||
|
ltrim(stream);
|
||||||
|
char token = stream.get();
|
||||||
|
if (token == '}')
|
||||||
|
break; //empty object
|
||||||
|
if (token == '/')
|
||||||
|
{
|
||||||
|
eatComment(stream);
|
||||||
|
token = stream.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
assert(token == '"');
|
||||||
|
Value key = eatString(stream);
|
||||||
|
ltrim(stream);
|
||||||
|
token = stream.get();
|
||||||
|
assert(token == ':');
|
||||||
|
ltrim(stream);
|
||||||
|
Value val = eatValue(stream);
|
||||||
|
obj[key.asString()] = val;
|
||||||
|
ltrim(stream);
|
||||||
|
|
||||||
|
token = stream.get();
|
||||||
|
if (token == '}')
|
||||||
|
break;
|
||||||
|
assert(token == ',');
|
||||||
|
}
|
||||||
|
return obj;
|
||||||
|
};
|
||||||
|
static Value eatArray(std::istream& stream)
|
||||||
|
{
|
||||||
|
Value obj(Type::arrayValue);
|
||||||
|
while (!stream.eof())
|
||||||
|
{
|
||||||
|
ltrim(stream);
|
||||||
|
if (stream.peek() == ']')
|
||||||
|
{
|
||||||
|
stream.get();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
obj.push_back(eatValue(stream));
|
||||||
|
ltrim(stream);
|
||||||
|
char token = stream.get();
|
||||||
|
if (token == '/')
|
||||||
|
{
|
||||||
|
eatComment(stream);
|
||||||
|
token = stream.get();
|
||||||
|
}
|
||||||
|
if (token == ']')
|
||||||
|
break;
|
||||||
|
assert(token == ',');
|
||||||
|
}
|
||||||
|
return obj;
|
||||||
|
};
|
||||||
|
static Value eatNumeric(std::istream& stream, char firstChar)
|
||||||
|
{
|
||||||
|
std::string numeric(1, firstChar);
|
||||||
|
while (!stream.eof())
|
||||||
|
{
|
||||||
|
char token = stream.peek();
|
||||||
|
if ((token >= '0' && token <= '9') || token == '.' || token == '-')
|
||||||
|
numeric += stream.get();
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (numeric.find('.') == std::string::npos)
|
||||||
|
return Value(atoi(numeric.c_str()));
|
||||||
|
else
|
||||||
|
return Value((float)atof(numeric.c_str()));
|
||||||
|
};
|
||||||
|
|
||||||
|
static Value eatBool(std::istream& stream)
|
||||||
|
{
|
||||||
|
char token = stream.get();
|
||||||
|
if (token == 'a') //fAlse
|
||||||
|
{
|
||||||
|
stream.get(); //l
|
||||||
|
stream.get(); //s
|
||||||
|
stream.get(); //e
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if (token == 'r') //tRue
|
||||||
|
{
|
||||||
|
stream.get(); // u
|
||||||
|
stream.get(); // e
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return Value(Type::nullValue);
|
||||||
|
};
|
||||||
|
static Value eatNull(std::istream& stream)
|
||||||
|
{
|
||||||
|
return Value(Type::nullValue);
|
||||||
|
};
|
||||||
|
|
||||||
|
//precondition: / is already eaten
|
||||||
|
static void eatComment(std::istream& stream)
|
||||||
|
{
|
||||||
|
char token = stream.get();
|
||||||
|
assert(token == '/' || token == '*');
|
||||||
|
if (token == '*')
|
||||||
|
{
|
||||||
|
char last = token;
|
||||||
|
while ((last != '*' || token != '/') && !stream.eof())
|
||||||
|
{
|
||||||
|
last = token;
|
||||||
|
token = stream.get();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (token == '/')
|
||||||
|
while (token != '\n' && !stream.eof())
|
||||||
|
token = stream.get();
|
||||||
|
ltrim(stream);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static Value eatValue(std::istream& stream)
|
||||||
|
{
|
||||||
|
ltrim(stream);
|
||||||
|
char token = stream.get();
|
||||||
|
if (token == '{')
|
||||||
|
return eatObject(stream);
|
||||||
|
if (token == '[')
|
||||||
|
return eatArray(stream);
|
||||||
|
if ((token >= '0' && token <= '9') || token == '.' || token == '-')
|
||||||
|
return eatNumeric(stream, token);
|
||||||
|
if (token == '"')
|
||||||
|
return eatString(stream);
|
||||||
|
if (token == 't' || token == 'f')
|
||||||
|
return eatBool(stream);
|
||||||
|
if (token == 'n')
|
||||||
|
return eatNull(stream);
|
||||||
|
if (token == '/')
|
||||||
|
{
|
||||||
|
eatComment(stream);
|
||||||
|
return eatValue(stream);
|
||||||
|
}
|
||||||
|
throw "Unable to parse json";
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Value readJson(const std::string &data)
|
||||||
|
{
|
||||||
|
std::stringstream stream;
|
||||||
|
stream << data;
|
||||||
|
printf("%s", "test");
|
||||||
|
|
||||||
|
return eatValue(stream);
|
||||||
|
}
|
||||||
|
|
||||||
|
Value readJson(std::istream &stream)
|
||||||
|
{
|
||||||
|
return eatValue(stream);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
std::ostream& indent(std::ostream& stream, int level)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < level; i++)
|
||||||
|
stream << '\t';
|
||||||
|
return stream;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::ostream& Value::prettyPrint(std::ostream& stream, json::Value& printConfig, int level) const
|
||||||
|
{
|
||||||
|
stream << std::fixed << std::setprecision(6);
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case Type::intValue:
|
||||||
|
stream << value.intValue;
|
||||||
|
break;
|
||||||
|
case Type::floatValue:
|
||||||
|
assert(!isnan(value.floatValue));
|
||||||
|
//assert(isnormal(value.floatValue));
|
||||||
|
if (value.floatValue >= 0)
|
||||||
|
stream << " ";
|
||||||
|
stream << value.floatValue;
|
||||||
|
break;
|
||||||
|
case Type::boolValue:
|
||||||
|
stream << (value.boolValue ? "true" : "false");
|
||||||
|
break;
|
||||||
|
case Type::stringValue:
|
||||||
|
stream << "\"" << *value.stringValue << "\""; //TODO: escape \'s
|
||||||
|
break;
|
||||||
|
case Type::arrayValue:
|
||||||
|
{
|
||||||
|
stream << "[";
|
||||||
|
int wrap = 99999;
|
||||||
|
if (value.arrayValue->size() > 10)
|
||||||
|
wrap = 1;
|
||||||
|
if (value.arrayValue->at(0).isArray() || value.arrayValue->at(0).isObject())
|
||||||
|
wrap = 1;
|
||||||
|
else
|
||||||
|
wrap = 3;
|
||||||
|
|
||||||
|
std::string seperator = " ";
|
||||||
|
|
||||||
|
if (!printConfig.isNull() && printConfig.isMember("wrap"))
|
||||||
|
wrap = printConfig["wrap"];
|
||||||
|
if (!printConfig.isNull() && printConfig.isMember("seperator"))
|
||||||
|
seperator = printConfig["seperator"].asString();
|
||||||
|
|
||||||
|
|
||||||
|
int index = 0;
|
||||||
|
|
||||||
|
if ((long)size() > wrap)
|
||||||
|
{
|
||||||
|
stream << "\n";
|
||||||
|
indent(stream, level + 1);
|
||||||
|
}
|
||||||
|
for (auto v : *this)
|
||||||
|
{
|
||||||
|
if (index > 0)
|
||||||
|
{
|
||||||
|
stream << "," << seperator;
|
||||||
|
if (index % wrap == 0)
|
||||||
|
{
|
||||||
|
stream << "\n";
|
||||||
|
indent(stream, level + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
json::Value childPrintConfig = json::Value::null;
|
||||||
|
if (!printConfig.isNull())
|
||||||
|
{
|
||||||
|
if (printConfig.isMember("elements"))
|
||||||
|
childPrintConfig = printConfig["elements"];
|
||||||
|
else if (printConfig.isMember("recursive") && printConfig["recursive"].asBool() == true)
|
||||||
|
childPrintConfig = printConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
v.prettyPrint(stream, childPrintConfig, level + 1);
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
if ((long)size() > wrap)
|
||||||
|
{
|
||||||
|
stream << "\n";
|
||||||
|
indent(stream, level);
|
||||||
|
}
|
||||||
|
stream << "]";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case Type::objectValue:
|
||||||
|
{
|
||||||
|
stream << "{\n";
|
||||||
|
int wrap = 99999;
|
||||||
|
if (value.arrayValue->size() > 10)
|
||||||
|
wrap = 1;
|
||||||
|
if (value.arrayValue->at(0).isArray() || value.arrayValue->at(0).isObject())
|
||||||
|
wrap = 1;
|
||||||
|
else
|
||||||
|
wrap = 3;
|
||||||
|
|
||||||
|
std::string seperator = " ";
|
||||||
|
|
||||||
|
if (!printConfig.isNull() && printConfig.isMember("wrap"))
|
||||||
|
wrap = printConfig["wrap"];
|
||||||
|
if (!printConfig.isNull() && printConfig.isMember("seperator"))
|
||||||
|
seperator = printConfig["seperator"].asString();
|
||||||
|
|
||||||
|
|
||||||
|
int index = 0;
|
||||||
|
indent(stream, level + 1);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//for (auto v : *value.objectValue)
|
||||||
|
auto printEl = [&](const std::pair<const std::string&, const Value&> v)
|
||||||
|
{
|
||||||
|
if (index > 0)
|
||||||
|
{
|
||||||
|
stream << "," << seperator;
|
||||||
|
if (index % wrap == 0)
|
||||||
|
{
|
||||||
|
stream << "\n";
|
||||||
|
indent(stream, level + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stream << "\"" << v.first << "\" : ";
|
||||||
|
if (
|
||||||
|
(v.second.isArray() || v.second.isObject()) &&
|
||||||
|
(printConfig.isNull() ||
|
||||||
|
(
|
||||||
|
printConfig.isMember(v.first) &&
|
||||||
|
printConfig[v.first].isObject() &&
|
||||||
|
printConfig[v.first].isMember("wrap") &&
|
||||||
|
printConfig[v.first]["wrap"].asInt() < (int)v.second.size())
|
||||||
|
)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
stream << "\n";
|
||||||
|
indent(stream, level + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
json::Value childPrintConfig = json::Value::null;
|
||||||
|
if (!printConfig.isNull())
|
||||||
|
{
|
||||||
|
if (printConfig.isMember(v.first))
|
||||||
|
childPrintConfig = printConfig[v.first];
|
||||||
|
else if (printConfig.isMember("recursive") && printConfig["recursive"].asBool() == true)
|
||||||
|
childPrintConfig = printConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
v.second.prettyPrint(stream, childPrintConfig, level + 1);;
|
||||||
|
index++;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
std::set<std::string> printed;
|
||||||
|
if (!printConfig.isNull())
|
||||||
|
{
|
||||||
|
if (printConfig.isMember("sort"))
|
||||||
|
{
|
||||||
|
for (std::string el : printConfig["sort"])
|
||||||
|
{
|
||||||
|
if (isMember(el))
|
||||||
|
{
|
||||||
|
printEl(std::pair<const std::string&, const Value&>(el, (*value.objectValue)[el]));
|
||||||
|
printed.insert(el);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (auto v : *value.objectValue)
|
||||||
|
if (printed.find(v.first) == printed.end())
|
||||||
|
printEl(v);
|
||||||
|
|
||||||
|
stream << "\n";
|
||||||
|
indent(stream, level);
|
||||||
|
stream << "}";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case Type::nullValue:
|
||||||
|
stream << "null";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return stream;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::ostream & operator<<(std::ostream &stream, const Value& value)
|
||||||
|
{
|
||||||
|
stream << std::fixed<< std::setprecision(6);
|
||||||
|
switch (value.type)
|
||||||
|
{
|
||||||
|
case Type::intValue:
|
||||||
|
stream << value.value.intValue;
|
||||||
|
break;
|
||||||
|
case Type::floatValue:
|
||||||
|
assert(!isnan(value.value.floatValue));
|
||||||
|
//assert(isnormal(value.value.floatValue));
|
||||||
|
stream << value.value.floatValue;
|
||||||
|
break;
|
||||||
|
case Type::boolValue:
|
||||||
|
stream << (value.value.boolValue ? "true" : "false");
|
||||||
|
break;
|
||||||
|
case Type::stringValue:
|
||||||
|
stream << "\"" << *value.value.stringValue << "\""; //TODO: escape \'s
|
||||||
|
break;
|
||||||
|
case Type::arrayValue:
|
||||||
|
{
|
||||||
|
stream << "[";
|
||||||
|
bool first = true;
|
||||||
|
for (auto v : value)
|
||||||
|
{
|
||||||
|
if (!first)
|
||||||
|
stream << ", ";
|
||||||
|
stream << v;
|
||||||
|
first = false;
|
||||||
|
}
|
||||||
|
stream << "]";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case Type::objectValue:
|
||||||
|
{
|
||||||
|
stream << "{";
|
||||||
|
bool first = true;
|
||||||
|
for (auto v : *value.value.objectValue)
|
||||||
|
{
|
||||||
|
if (!first)
|
||||||
|
stream << ", ";
|
||||||
|
stream << "\"" << v.first << "\" : " << v.second << std::endl;
|
||||||
|
first = false;
|
||||||
|
}
|
||||||
|
stream << "}";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case Type::nullValue:
|
||||||
|
stream << "null";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return stream;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,124 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <map>
|
||||||
|
#include <vector>
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
|
namespace json
|
||||||
|
{
|
||||||
|
enum class Type
|
||||||
|
{
|
||||||
|
intValue,
|
||||||
|
floatValue,
|
||||||
|
boolValue,
|
||||||
|
stringValue,
|
||||||
|
arrayValue,
|
||||||
|
objectValue,
|
||||||
|
nullValue
|
||||||
|
};
|
||||||
|
|
||||||
|
class Value
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Type type;
|
||||||
|
union ValueHolder
|
||||||
|
{
|
||||||
|
int intValue;
|
||||||
|
float floatValue;
|
||||||
|
bool boolValue;
|
||||||
|
std::string* stringValue;
|
||||||
|
std::vector<Value>* arrayValue;
|
||||||
|
std::map<std::string, Value>* objectValue;
|
||||||
|
} value;
|
||||||
|
|
||||||
|
static Value null;
|
||||||
|
|
||||||
|
Value();
|
||||||
|
Value(Type type);
|
||||||
|
Value(int value);
|
||||||
|
Value(float value);
|
||||||
|
Value(bool value);
|
||||||
|
Value(const std::string &value);
|
||||||
|
Value(const char* value);
|
||||||
|
Value(const Value& other);
|
||||||
|
virtual ~Value();
|
||||||
|
|
||||||
|
void operator = (const Value& other);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
inline operator int() const { return asInt(); }
|
||||||
|
inline operator float() const { return asFloat(); }
|
||||||
|
inline operator bool() const { return asBool(); }
|
||||||
|
inline operator const std::string&() const { return asString(); }
|
||||||
|
|
||||||
|
|
||||||
|
inline int asInt() const { assert(type == Type::intValue); return value.intValue; }
|
||||||
|
inline float asFloat() const { assert(type == Type::floatValue || type == Type::intValue); return type == Type::floatValue ? value.floatValue : value.intValue; }
|
||||||
|
inline bool asBool() const { assert(type == Type::boolValue); return value.boolValue; }
|
||||||
|
inline const std::string& asString() const { assert(type == Type::stringValue); return *value.stringValue; }
|
||||||
|
inline bool isNull() const { return type == Type::nullValue; }
|
||||||
|
inline bool isString() const { return type == Type::stringValue; }
|
||||||
|
inline bool isInt() const { return type == Type::intValue; }
|
||||||
|
inline bool isBool() const { return type == Type::boolValue; }
|
||||||
|
inline bool isFloat() const { return type == Type::floatValue; }
|
||||||
|
inline bool isObject() const { return type == Type::objectValue; }
|
||||||
|
inline bool isArray() const { return type == Type::arrayValue; }
|
||||||
|
inline bool isMember(const std::string &name) const { assert(type == Type::objectValue); return value.objectValue->find(name) != value.objectValue->end(); }
|
||||||
|
//array/object
|
||||||
|
virtual size_t size() const;
|
||||||
|
//array
|
||||||
|
virtual void push_back(const Value& value);
|
||||||
|
virtual void erase(size_t index);
|
||||||
|
virtual Value& operator [] (size_t index);
|
||||||
|
virtual Value& operator [] (int index);
|
||||||
|
virtual Value& operator [] (size_t index) const;
|
||||||
|
virtual Value& operator [] (int index) const;
|
||||||
|
|
||||||
|
virtual Value& operator [] (const std::string &key);
|
||||||
|
virtual Value& operator [] (const char* key);
|
||||||
|
virtual Value& operator [] (const std::string &key) const;
|
||||||
|
virtual Value& operator [] (const char* key) const;
|
||||||
|
|
||||||
|
virtual bool operator == (const std::string &other) { return asString() == other; }
|
||||||
|
virtual bool operator == (const int other) { return asInt() == other; }
|
||||||
|
virtual bool operator == (const float other) { return asFloat() == other; }
|
||||||
|
|
||||||
|
|
||||||
|
std::ostream& prettyPrint(std::ostream& stream, json::Value& printConfig = null, int level = 0) const;
|
||||||
|
|
||||||
|
class Iterator;
|
||||||
|
Iterator begin() const;
|
||||||
|
Iterator end() const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class Value::Iterator
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
Type type;
|
||||||
|
std::map<std::string, Value>::iterator objectIterator;
|
||||||
|
std::vector<Value>::iterator arrayIterator;
|
||||||
|
public:
|
||||||
|
Iterator(const std::map<std::string, Value>::iterator& objectIterator);
|
||||||
|
Iterator(const std::vector<Value>::iterator& arrayIterator);
|
||||||
|
|
||||||
|
void operator ++();
|
||||||
|
void operator ++(int);
|
||||||
|
bool operator != (const Iterator &other);
|
||||||
|
Value operator*();
|
||||||
|
|
||||||
|
std::string key();
|
||||||
|
Value& value();
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Value readJson(const std::string &data);
|
||||||
|
Value readJson(std::istream &stream);
|
||||||
|
std::ostream &operator << (std::ostream &stream, const Value& value); //serializes json data
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,100 @@
|
|||||||
|
newmtl SpringIsComing:Material_007
|
||||||
|
illum 4
|
||||||
|
Kd 0.75 0.80 0.80
|
||||||
|
Ka 1.00 1.00 1.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.50 0.50 0.50
|
||||||
|
Ns 96.08
|
||||||
|
newmtl Tree01:Material_001
|
||||||
|
illum 4
|
||||||
|
Kd 0.01 0.00 0.00
|
||||||
|
Ka 1.00 1.00 1.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.50 0.50 0.50
|
||||||
|
Ns 96.08
|
||||||
|
newmtl Tree01:Material_004
|
||||||
|
illum 4
|
||||||
|
Kd 0.60 0.20 0.30
|
||||||
|
Ka 1.00 1.00 1.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.50 0.50 0.50
|
||||||
|
Ns 96.08
|
||||||
|
newmtl Tree02:Material_001
|
||||||
|
illum 4
|
||||||
|
Kd 0.01 0.00 0.00
|
||||||
|
Ka 1.00 1.00 1.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.50 0.50 0.50
|
||||||
|
Ns 96.08
|
||||||
|
newmtl Tree02:Material_004
|
||||||
|
illum 4
|
||||||
|
Kd 0.60 0.20 0.30
|
||||||
|
Ka 1.00 1.00 1.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.50 0.50 0.50
|
||||||
|
Ns 96.08
|
||||||
|
newmtl Tree03:Material_001
|
||||||
|
illum 4
|
||||||
|
Kd 0.01 0.00 0.00
|
||||||
|
Ka 1.00 1.00 1.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.50 0.50 0.50
|
||||||
|
Ns 96.08
|
||||||
|
newmtl Tree03:Material_004
|
||||||
|
illum 4
|
||||||
|
Kd 0.60 0.20 0.30
|
||||||
|
Ka 1.00 1.00 1.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.50 0.50 0.50
|
||||||
|
Ns 96.08
|
||||||
|
newmtl Tree04:Material_001
|
||||||
|
illum 4
|
||||||
|
Kd 0.01 0.00 0.00
|
||||||
|
Ka 1.00 1.00 1.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.50 0.50 0.50
|
||||||
|
Ns 96.08
|
||||||
|
newmtl Tree04:Material_004
|
||||||
|
illum 4
|
||||||
|
Kd 0.60 0.20 0.30
|
||||||
|
Ka 1.00 1.00 1.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.50 0.50 0.50
|
||||||
|
Ns 96.08
|
||||||
|
newmtl initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.34 0.34 0.34
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl rock1:Material_001
|
||||||
|
illum 4
|
||||||
|
Kd 0.64 0.64 0.64
|
||||||
|
Ka 1.00 1.00 1.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.50 0.50 0.50
|
||||||
|
Ns 96.08
|
||||||
|
newmtl rock3:Material_016
|
||||||
|
illum 4
|
||||||
|
Kd 0.64 0.64 0.64
|
||||||
|
Ka 1.00 1.00 1.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.50 0.50 0.50
|
||||||
|
Ns 96.08
|
||||||
@@ -0,0 +1,113 @@
|
|||||||
|
newmtl bob1:initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.50 0.50
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.67 0.67 0.67
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.20 0.32 0.50
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert6SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert7SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert8SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert10SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert12SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.58 0.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert13SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 1.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert14SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 1.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert15SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd TheThing2.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert16SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd SkateboardwielThing.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert17SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.25 0.25 0.25
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.50 0.50 0.50
|
||||||
|
newmtl lambert18SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Bobhelemaal2.png
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.50 0.50 0.50
|
||||||
|
newmtl pasted__lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
After Width: | Height: | Size: 232 KiB |
@@ -0,0 +1,61 @@
|
|||||||
|
newmtl Engine_Thomas:Eyes
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Eye_01.png
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.37 0.37 0.37
|
||||||
|
Ns 96.08
|
||||||
|
newmtl Engine_Thomas:Page_01
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd engine_thomas_page1.png
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.37 0.37 0.37
|
||||||
|
Ns 96.08
|
||||||
|
newmtl Engine_Thomas:Page_02
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd engine_thomas_page2.png
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.37 0.37 0.37
|
||||||
|
Ns 96.08
|
||||||
|
newmtl Engine_Thomas:Page_05
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 0.00 0.00 0.00
|
||||||
|
map_Kd Engine_Thomas_Page3.png
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.37 0.37 0.37
|
||||||
|
Ns 96.08
|
||||||
|
newmtl Engine_Thomas:Shadow
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 0.00 0.00 0.00
|
||||||
|
map_Kd Thomas_Shadow.png
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.37 0.37 0.37
|
||||||
|
Ns 96.08
|
||||||
|
newmtl initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd tex_wendy.jpg
|
||||||
|
Ni 1.00
|
||||||
|
newmtl wooper:wooper
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.20 0.20 0.20
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd wooper.png
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.00 0.00 0.00
|
||||||
|
Ns 0.00
|
||||||
@@ -0,0 +1,113 @@
|
|||||||
|
newmtl bob1:initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.50 0.50
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.67 0.67 0.67
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.20 0.32 0.50
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert6SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert7SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert8SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert10SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert12SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.58 0.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert13SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 1.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert14SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 1.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert15SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd TheThing2.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert16SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd SkateboardwielThing.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert17SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.25 0.25 0.25
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.50 0.50 0.50
|
||||||
|
newmtl lambert18SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Bobhelemaal2.png
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.50 0.50 0.50
|
||||||
|
newmtl pasted__lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
After Width: | Height: | Size: 580 KiB |
|
After Width: | Height: | Size: 599 KiB |
@@ -0,0 +1,116 @@
|
|||||||
|
newmtl bob1:initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.50 0.50
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.67 0.67 0.67
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.20 0.32 0.50
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert6SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert7SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Screenshot_1.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert8SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Screenshot_1.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert10SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert12SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.58 0.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert13SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 1.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert14SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 1.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert15SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd TheThing2.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert16SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd SkateboardwielThing.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert17SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.25 0.25 0.25
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.50 0.50 0.50
|
||||||
|
newmtl lambert18SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Bobhelemaal2.png
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.50 0.50 0.50
|
||||||
|
newmtl pasted__lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Screenshot_1.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
After Width: | Height: | Size: 66 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,6 @@
|
|||||||
|
newmtl Cave1:pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.13 0.14 0.16
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
newmtl lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
newmtl Cave1:pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.13 0.14 0.16
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd DragonWallAwesome.png
|
||||||
|
Ni 1.00
|
||||||
|
After Width: | Height: | Size: 26 KiB |
@@ -0,0 +1,12 @@
|
|||||||
|
newmtl Cave1:pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.13 0.14 0.16
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.50 0.50
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 0.00 0.00 0.00
|
||||||
|
Ni 1.00
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
newmtl initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.50 0.50
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.11 0.07 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert3SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.35 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.13 0.14 0.16
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Naamloos.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.13 0.14 0.16
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
newmtl Rock1:pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl Rock2:pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl Rock3:pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl Rock4:pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.50 0.50
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.11 0.07 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert3SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.35 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.13 0.14 0.16
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Naamloos.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert6SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.89 0.89 0.89
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.13 0.14 0.16
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
newmtl initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.50 0.50
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.11 0.07 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert3SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.35 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.13 0.14 0.16
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Naamloos.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.13 0.14 0.16
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
newmtl initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.50 0.50
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.11 0.07 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert3SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.35 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.13 0.14 0.16
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Naamloos.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.13 0.14 0.16
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
newmtl initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.50 0.50
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.11 0.07 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert3SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.35 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.13 0.14 0.16
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Naamloos.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.13 0.14 0.16
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
newmtl Rock1:pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl Rock2:pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl Rock3:pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl Rock4:pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.50 0.50
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.11 0.07 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert3SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.35 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.13 0.14 0.16
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Naamloos.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.13 0.14 0.16
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
newmtl Rock1:pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl Rock2:pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl Rock3:pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl Rock4:pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.50 0.50
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.11 0.07 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert3SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.35 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.13 0.14 0.16
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Naamloos.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.13 0.14 0.16
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
newmtl Rock1:pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl Rock2:pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl Rock3:pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl Rock4:pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.50 0.50
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.11 0.07 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert3SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.35 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.13 0.14 0.16
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Naamloos.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.13 0.14 0.16
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
newmtl Rock1:pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl Rock2:pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl Rock3:pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl Rock4:pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.50 0.50
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.11 0.07 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert3SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.35 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.13 0.14 0.16
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Naamloos.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert6SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.89 0.89 0.89
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.13 0.14 0.16
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
newmtl Rock1:pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl Rock2:pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl Rock3:pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl Rock4:pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.50 0.50
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.11 0.07 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert3SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.35 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.13 0.14 0.16
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Naamloos.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert6SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.89 0.89 0.89
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.13 0.14 0.16
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
@@ -0,0 +1,122 @@
|
|||||||
|
newmtl SpikeRock1:lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl bob1:initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.50 0.50
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.67 0.67 0.67
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.20 0.32 0.50
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert6SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert7SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Screenshot_1.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert8SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Screenshot_1.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert10SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert12SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.58 0.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert13SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 1.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert14SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 1.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert15SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd TheThing2.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert16SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd SkateboardwielThing.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert17SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.25 0.25 0.25
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.50 0.50 0.50
|
||||||
|
newmtl lambert18SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Bobhelemaal2.png
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.50 0.50 0.50
|
||||||
|
newmtl pasted__lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Screenshot_1.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
@@ -0,0 +1,122 @@
|
|||||||
|
newmtl SpikeRock2:lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl bob1:initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.50 0.50
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.67 0.67 0.67
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.20 0.32 0.50
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert6SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert7SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Screenshot_1.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert8SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Screenshot_1.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert10SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert12SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.58 0.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert13SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 1.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert14SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 1.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert15SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd TheThing2.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert16SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd SkateboardwielThing.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert17SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.25 0.25 0.25
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.50 0.50 0.50
|
||||||
|
newmtl lambert18SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Bobhelemaal2.png
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.50 0.50 0.50
|
||||||
|
newmtl pasted__lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Screenshot_1.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
@@ -0,0 +1,122 @@
|
|||||||
|
newmtl SpikeRock3:lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl bob1:initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.50 0.50
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.67 0.67 0.67
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.20 0.32 0.50
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert6SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert7SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Screenshot_1.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert8SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Screenshot_1.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert10SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert12SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.58 0.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert13SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 1.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert14SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 1.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert15SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd TheThing2.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert16SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd SkateboardwielThing.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert17SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.25 0.25 0.25
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.50 0.50 0.50
|
||||||
|
newmtl lambert18SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Bobhelemaal2.png
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.50 0.50 0.50
|
||||||
|
newmtl pasted__lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Screenshot_1.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
@@ -0,0 +1,122 @@
|
|||||||
|
newmtl SpikeRock4:lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl bob1:initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.50 0.50
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.67 0.67 0.67
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.20 0.32 0.50
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert6SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert7SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Screenshot_1.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert8SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Screenshot_1.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert10SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert12SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.58 0.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert13SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 1.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert14SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 1.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert15SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd TheThing2.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert16SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd SkateboardwielThing.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert17SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.25 0.25 0.25
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.50 0.50 0.50
|
||||||
|
newmtl lambert18SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Bobhelemaal2.png
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.50 0.50 0.50
|
||||||
|
newmtl pasted__lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Screenshot_1.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
@@ -0,0 +1,122 @@
|
|||||||
|
newmtl SpikeRock5:lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl bob1:initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.50 0.50
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.67 0.67 0.67
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.20 0.32 0.50
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert6SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert7SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Screenshot_1.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert8SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Screenshot_1.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert10SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert12SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.58 0.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert13SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 1.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert14SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 1.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert15SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd TheThing2.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert16SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd SkateboardwielThing.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert17SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.25 0.25 0.25
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.50 0.50 0.50
|
||||||
|
newmtl lambert18SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Bobhelemaal2.png
|
||||||
|
Ni 1.00
|
||||||
|
Ks 0.50 0.50 0.50
|
||||||
|
newmtl pasted__lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd Screenshot_1.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
newmtl CylinderSG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd ^D70CEF585F0EAF59BA1D4FC14B4011137E15ED44D07FA7B93F^pimgpsh_fullsize_distr.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl Oil_TankSG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.80
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl Oil_TankSG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.43 0.63 0.80
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
After Width: | Height: | Size: 121 KiB |
@@ -0,0 +1,134 @@
|
|||||||
|
newmtl initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.22 0.22 0.22
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.32 0.25
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert3SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.12 0.12 0.12
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.10 0.05 0.02
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert3SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.12 0.12 0.12
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.12 0.12 0.12
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG2
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd ZWAARD.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.10 0.05 0.02
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert5SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.10 0.05 0.02
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert5SG2
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd HANDVAT.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.12 0.12 0.12
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert4SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.12 0.12 0.12
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert4SG2
|
||||||
|
illum 4
|
||||||
|
Kd 0.12 0.12 0.12
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert4SG3
|
||||||
|
illum 4
|
||||||
|
Kd 0.12 0.12 0.12
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.10 0.05 0.02
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert5SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.10 0.05 0.02
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert5SG2
|
||||||
|
illum 4
|
||||||
|
Kd 0.10 0.05 0.02
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert5SG3
|
||||||
|
illum 4
|
||||||
|
Kd 0.10 0.05 0.02
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.12 0.12 0.12
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__pasted__lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.10 0.05 0.02
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
@@ -0,0 +1,436 @@
|
|||||||
|
# This file uses centimeters as units for non-parametric coordinates.
|
||||||
|
|
||||||
|
mtllib TextureZwaard.mtl
|
||||||
|
g default
|
||||||
|
v -2.214711 4.435681 -1.922955
|
||||||
|
v -2.214711 4.829163 -1.922955
|
||||||
|
v -2.214711 4.829163 -2.316437
|
||||||
|
v -2.214711 4.435681 -2.316437
|
||||||
|
v -1.821229 4.435681 -2.316437
|
||||||
|
v -1.821229 4.829163 -2.316437
|
||||||
|
v -1.821229 4.829163 -1.922955
|
||||||
|
v -1.821229 4.435681 -1.922955
|
||||||
|
v -1.908670 5.978167 -2.010395
|
||||||
|
v -2.127271 5.978167 -2.010395
|
||||||
|
v -1.908670 5.978167 -2.228996
|
||||||
|
v -2.127271 5.978167 -2.228996
|
||||||
|
v -2.127271 4.523121 -3.000496
|
||||||
|
v -1.908670 4.523121 -3.000496
|
||||||
|
v -2.127271 4.741723 -2.990724
|
||||||
|
v -1.908670 4.741723 -2.990724
|
||||||
|
v -1.908670 4.523121 -1.238895
|
||||||
|
v -2.127271 4.523121 -1.238895
|
||||||
|
v -1.908670 4.741723 -1.248667
|
||||||
|
v -2.127271 4.741723 -1.248667
|
||||||
|
v -2.017970 5.567809 -1.922955
|
||||||
|
v -1.870414 5.567809 -1.972140
|
||||||
|
v -2.017970 6.121793 -1.972140
|
||||||
|
v -2.165526 5.567809 -1.972140
|
||||||
|
v -2.017970 4.829163 -1.922955
|
||||||
|
v -1.821229 5.567809 -2.119696
|
||||||
|
v -1.870414 5.567809 -2.267251
|
||||||
|
v -1.870414 6.121793 -2.119696
|
||||||
|
v -1.821229 4.829163 -2.119696
|
||||||
|
v -2.017970 6.306454 -2.119696
|
||||||
|
v -2.017970 6.121793 -2.267251
|
||||||
|
v -2.165526 6.121793 -2.119696
|
||||||
|
v -2.214711 5.567809 -2.119696
|
||||||
|
v -2.165526 5.567809 -2.267251
|
||||||
|
v -2.214711 4.829163 -2.119696
|
||||||
|
v -2.017970 5.567809 -2.316437
|
||||||
|
v -2.017970 4.829163 -2.316437
|
||||||
|
v -2.017970 4.435681 -2.756189
|
||||||
|
v -2.017970 4.484866 -3.086004
|
||||||
|
v -1.870414 4.484866 -2.756189
|
||||||
|
v -2.017970 4.435681 -2.316437
|
||||||
|
v -2.165526 4.484866 -2.756189
|
||||||
|
v -2.214711 4.632422 -2.756189
|
||||||
|
v -2.165526 4.632422 -3.086004
|
||||||
|
v -2.214711 4.632422 -2.316437
|
||||||
|
v -2.165526 4.779978 -2.734202
|
||||||
|
v -2.017970 4.632422 -3.195942
|
||||||
|
v -2.017970 4.779978 -3.064016
|
||||||
|
v -1.870414 4.632422 -3.086004
|
||||||
|
v -1.821229 4.632422 -2.756189
|
||||||
|
v -1.870414 4.779978 -2.734202
|
||||||
|
v -1.821229 4.632422 -2.316437
|
||||||
|
v -2.017970 4.829163 -2.668239
|
||||||
|
v -2.116341 4.829163 -2.316437
|
||||||
|
v -1.919600 4.829163 -2.316437
|
||||||
|
v -2.017970 4.435681 -1.483202
|
||||||
|
v -1.870414 4.484866 -1.483202
|
||||||
|
v -2.017970 4.484866 -1.153388
|
||||||
|
v -2.165526 4.484866 -1.483202
|
||||||
|
v -2.017970 4.435681 -1.922955
|
||||||
|
v -1.821229 4.632422 -1.483202
|
||||||
|
v -1.870414 4.779978 -1.505190
|
||||||
|
v -1.870414 4.632422 -1.153388
|
||||||
|
v -1.821229 4.632422 -1.922955
|
||||||
|
v -2.017970 4.632422 -1.043449
|
||||||
|
v -2.017970 4.779978 -1.175375
|
||||||
|
v -2.165526 4.632422 -1.153388
|
||||||
|
v -2.214711 4.632422 -1.483202
|
||||||
|
v -2.165526 4.779978 -1.505190
|
||||||
|
v -2.214711 4.632422 -1.922955
|
||||||
|
v -2.017970 4.829163 -1.571153
|
||||||
|
v -1.919600 4.829163 -1.922955
|
||||||
|
v -2.116341 4.829163 -1.922955
|
||||||
|
v -2.145140 1.194092 -2.004379
|
||||||
|
v -1.894884 1.194092 -2.004379
|
||||||
|
v -2.145140 4.476328 -2.004379
|
||||||
|
v -1.894884 4.476328 -2.004379
|
||||||
|
v -2.145140 4.476328 -2.254635
|
||||||
|
v -1.894884 4.476328 -2.254635
|
||||||
|
v -2.145140 1.194092 -2.254635
|
||||||
|
v -1.894884 1.194092 -2.254635
|
||||||
|
v -2.020800 1.194092 -1.837458
|
||||||
|
v -2.020800 1.194092 -2.421667
|
||||||
|
v -2.020800 4.476328 -2.421667
|
||||||
|
v -2.020800 4.476328 -1.837458
|
||||||
|
v -2.020800 0.395449 -2.130295
|
||||||
|
v -2.020012 0.395449 -2.129507
|
||||||
|
v -2.020800 0.395449 -2.128719
|
||||||
|
vt 0.375000 0.175791
|
||||||
|
vt 0.375000 0.183595
|
||||||
|
vt 0.375000 0.191400
|
||||||
|
vt 0.250000 0.191400
|
||||||
|
vt 0.125000 0.191400
|
||||||
|
vt 0.125000 0.183595
|
||||||
|
vt 0.125000 0.175791
|
||||||
|
vt 0.875000 0.175791
|
||||||
|
vt 0.875000 0.183595
|
||||||
|
vt 0.875000 0.191400
|
||||||
|
vt 0.750000 0.191400
|
||||||
|
vt 0.625000 0.191400
|
||||||
|
vt 0.625000 0.183595
|
||||||
|
vt 0.625000 0.175791
|
||||||
|
vt 0.500000 0.191400
|
||||||
|
vt 0.562500 0.191400
|
||||||
|
vt 0.625000 0.220700
|
||||||
|
vt 0.500000 0.220700
|
||||||
|
vt 0.875000 0.220700
|
||||||
|
vt 0.750000 0.220700
|
||||||
|
vt 0.375000 0.375000
|
||||||
|
vt 0.375000 0.250000
|
||||||
|
vt 0.500000 0.273925
|
||||||
|
vt 0.500000 0.375000
|
||||||
|
vt 0.375000 0.220700
|
||||||
|
vt 0.250000 0.220700
|
||||||
|
vt 0.375000 0.529300
|
||||||
|
vt 0.375000 0.500000
|
||||||
|
vt 0.500000 0.476075
|
||||||
|
vt 0.500000 0.529300
|
||||||
|
vt -1.#IND00 -1.#IND00
|
||||||
|
vt 0.375000 0.000000
|
||||||
|
vt 0.500000 0.000000
|
||||||
|
vt 0.500000 0.051075
|
||||||
|
vt -1.#IND00 -1.#IND00
|
||||||
|
vt 0.125000 0.000000
|
||||||
|
vt 0.250000 0.000000
|
||||||
|
vt -1.#IND00 -1.#IND00
|
||||||
|
vt 0.375000 0.875000
|
||||||
|
vt 0.375000 0.750000
|
||||||
|
vt 0.500000 0.765928
|
||||||
|
vt 0.500000 0.875000
|
||||||
|
vt -1.#IND00 -1.#IND00
|
||||||
|
vt 0.625000 0.000000
|
||||||
|
vt 0.750000 0.000000
|
||||||
|
vt -1.#IND00 -1.#IND00
|
||||||
|
vt 0.562500 0.647850
|
||||||
|
vt 0.625000 0.647850
|
||||||
|
vt 0.625000 0.698925
|
||||||
|
vt 0.500000 0.688710
|
||||||
|
vt 0.500000 0.147850
|
||||||
|
vt 0.625000 0.147850
|
||||||
|
vt -1.#IND00 -1.#IND00
|
||||||
|
vt 0.500000 0.198925
|
||||||
|
vt -1.#IND00 -1.#IND00
|
||||||
|
vt -1.#IND00 -1.#IND00
|
||||||
|
vt -1.#IND00 -1.#IND00
|
||||||
|
vt -1.#IND00 -1.#IND00
|
||||||
|
vt 0.375000 0.375000
|
||||||
|
vt 0.375000 0.250000
|
||||||
|
vt 0.500000 0.268481
|
||||||
|
vt 0.500000 0.375000
|
||||||
|
vt -1.#IND00 -1.#IND00
|
||||||
|
vt 0.375000 0.147850
|
||||||
|
vt -1.#IND00 -1.#IND00
|
||||||
|
vt -1.#IND00 -1.#IND00
|
||||||
|
vt 0.375000 0.551075
|
||||||
|
vt 0.375000 0.500000
|
||||||
|
vt 0.500000 0.484072
|
||||||
|
vt 0.500000 0.561290
|
||||||
|
vt 0.375000 0.102150
|
||||||
|
vt 0.625000 0.138970
|
||||||
|
vt 0.500000 0.161821
|
||||||
|
vt 0.625000 0.250000
|
||||||
|
vt 0.437500 0.191400
|
||||||
|
vt 0.875000 0.250000
|
||||||
|
vt 0.750000 0.250000
|
||||||
|
vt 0.625000 0.375000
|
||||||
|
vt 0.625000 0.500000
|
||||||
|
vt 0.250000 0.250000
|
||||||
|
vt 0.125000 0.250000
|
||||||
|
vt 0.125000 0.220700
|
||||||
|
vt 0.625000 0.529300
|
||||||
|
vt 0.625000 0.558600
|
||||||
|
vt 0.562500 0.558600
|
||||||
|
vt 0.500000 0.558600
|
||||||
|
vt 0.437500 0.558600
|
||||||
|
vt 0.375000 0.558600
|
||||||
|
vt 0.625000 0.102150
|
||||||
|
vt 0.500000 0.102150
|
||||||
|
vt -1.#IND00 -1.#IND00
|
||||||
|
vt -1.#IND00 -1.#IND00
|
||||||
|
vt 0.625000 0.750000
|
||||||
|
vt 0.625000 0.875000
|
||||||
|
vt 0.625000 1.000000
|
||||||
|
vt 0.500000 1.000000
|
||||||
|
vt 0.375000 1.000000
|
||||||
|
vt 0.875000 0.000000
|
||||||
|
vt -1.#IND00 -1.#IND00
|
||||||
|
vt -1.#IND00 -1.#IND00
|
||||||
|
vt -1.#IND00 -1.#IND00
|
||||||
|
vt 0.375000 0.698925
|
||||||
|
vt 0.375000 0.647850
|
||||||
|
vt 0.437500 0.647850
|
||||||
|
vt 0.500000 0.647850
|
||||||
|
vt 0.625000 0.250000
|
||||||
|
vt 0.875000 0.250000
|
||||||
|
vt 0.750000 0.250000
|
||||||
|
vt 0.625000 0.375000
|
||||||
|
vt 0.625000 0.500000
|
||||||
|
vt 0.250000 0.250000
|
||||||
|
vt 0.125000 0.250000
|
||||||
|
vt -1.#IND00 -1.#IND00
|
||||||
|
vt -1.#IND00 -1.#IND00
|
||||||
|
vt 0.625000 0.551075
|
||||||
|
vt 0.625000 0.602150
|
||||||
|
vt 0.562500 0.602150
|
||||||
|
vt 0.500000 0.602150
|
||||||
|
vt 0.437500 0.602150
|
||||||
|
vt 0.375000 0.602150
|
||||||
|
vt 0.499213 0.250000
|
||||||
|
vt 0.499213 0.000000
|
||||||
|
vt 0.625000 0.000000
|
||||||
|
vt 0.625000 0.250000
|
||||||
|
vt 0.499213 0.500000
|
||||||
|
vt 0.625000 0.500000
|
||||||
|
vt 0.499213 0.750000
|
||||||
|
vt 0.625000 0.750000
|
||||||
|
vt 0.500000 0.875471
|
||||||
|
vt 0.499213 0.875361
|
||||||
|
vt 0.499213 0.874686
|
||||||
|
vt 0.875000 0.000000
|
||||||
|
vt 0.875000 0.250000
|
||||||
|
vt 0.125000 0.000000
|
||||||
|
vt 0.375000 0.000000
|
||||||
|
vt 0.375000 0.250000
|
||||||
|
vt 0.125000 0.250000
|
||||||
|
vt 0.375000 0.750000
|
||||||
|
vt 0.375000 1.000000
|
||||||
|
vt 0.375000 0.500000
|
||||||
|
vt 0.625000 1.000000
|
||||||
|
vt 0.499213 1.000000
|
||||||
|
vn -0.706849 -0.706849 0.027027
|
||||||
|
vn -0.999778 -0.000000 0.021082
|
||||||
|
vn -0.916167 0.161747 0.366710
|
||||||
|
vn -0.999853 0.017156 0.000000
|
||||||
|
vn -0.916167 0.161747 -0.366710
|
||||||
|
vn -0.999778 0.000000 -0.021082
|
||||||
|
vn -0.706848 -0.706849 -0.027027
|
||||||
|
vn 0.706849 -0.706848 -0.027027
|
||||||
|
vn 0.999778 -0.000000 -0.021082
|
||||||
|
vn 0.916167 0.161747 -0.366710
|
||||||
|
vn 0.999853 0.017156 0.000000
|
||||||
|
vn 0.916167 0.161747 0.366710
|
||||||
|
vn 0.999778 0.000000 0.021082
|
||||||
|
vn 0.706849 -0.706848 0.027027
|
||||||
|
vn 0.000000 0.296282 0.955101
|
||||||
|
vn 0.165279 0.343682 0.924427
|
||||||
|
vn 0.705454 0.068331 0.705454
|
||||||
|
vn -0.000000 0.059769 0.998212
|
||||||
|
vn 0.705454 0.068331 -0.705454
|
||||||
|
vn 0.998212 0.059770 0.000000
|
||||||
|
vn -0.926131 0.377203 0.000000
|
||||||
|
vn -0.699145 0.149633 0.699147
|
||||||
|
vn -0.000000 0.377204 0.926130
|
||||||
|
vn -0.000000 1.000000 -0.000000
|
||||||
|
vn -0.705454 0.068331 0.705454
|
||||||
|
vn -0.998212 0.059770 0.000000
|
||||||
|
vn -0.705454 0.068331 -0.705454
|
||||||
|
vn -0.699146 0.149633 -0.699146
|
||||||
|
vn 0.000000 0.377204 -0.926130
|
||||||
|
vn -0.000000 0.059769 -0.998212
|
||||||
|
vn -0.702552 -0.702552 -0.113318
|
||||||
|
vn -0.680278 -0.680278 -0.272843
|
||||||
|
vn -0.000000 -0.871334 -0.490690
|
||||||
|
vn 0.000000 -0.995011 -0.099770
|
||||||
|
vn -0.764530 0.632514 -0.124178
|
||||||
|
vn -0.647141 0.717488 -0.257720
|
||||||
|
vn -0.867188 0.029145 -0.497127
|
||||||
|
vn -0.994694 0.006104 -0.102697
|
||||||
|
vn -0.000000 0.901897 -0.431952
|
||||||
|
vn 0.000000 0.041614 -0.999134
|
||||||
|
vn 0.702553 -0.702552 -0.113318
|
||||||
|
vn 0.680279 -0.680278 -0.272842
|
||||||
|
vn 0.867188 0.029145 -0.497127
|
||||||
|
vn 0.994694 0.006104 -0.102697
|
||||||
|
vn 0.165279 0.343682 -0.924427
|
||||||
|
vn 0.764531 0.632513 -0.124177
|
||||||
|
vn -0.000000 0.994023 -0.109172
|
||||||
|
vn 0.000000 -0.999780 0.020984
|
||||||
|
vn 0.702552 -0.702552 0.113318
|
||||||
|
vn 0.000000 -0.995011 0.099770
|
||||||
|
vn 0.764531 0.632513 0.124177
|
||||||
|
vn 0.994694 0.006104 0.102697
|
||||||
|
vn -0.867188 0.029145 0.497128
|
||||||
|
vn -0.680278 -0.680278 0.272843
|
||||||
|
vn -0.000000 -0.871334 0.490690
|
||||||
|
vn -0.000000 0.041614 0.999134
|
||||||
|
vn -0.702552 -0.702552 0.113318
|
||||||
|
vn -0.994694 0.006104 0.102697
|
||||||
|
vn -0.764530 0.632514 0.124178
|
||||||
|
vn -0.647140 0.717488 0.257721
|
||||||
|
vn -0.000000 0.901897 0.431952
|
||||||
|
vn 0.000000 0.994023 0.109172
|
||||||
|
vn 0.000000 -0.999780 -0.020984
|
||||||
|
vn 0.699145 0.149633 0.699147
|
||||||
|
vn -0.165279 0.343682 0.924427
|
||||||
|
vn 0.699146 0.149633 -0.699145
|
||||||
|
vn 0.926130 0.377204 -0.000000
|
||||||
|
vn -0.000000 0.296282 -0.955101
|
||||||
|
vn -0.165279 0.343682 -0.924427
|
||||||
|
vn 0.647141 0.717488 -0.257720
|
||||||
|
vn 0.680279 -0.680278 0.272842
|
||||||
|
vn 0.647141 0.717488 0.257720
|
||||||
|
vn 0.867188 0.029145 0.497128
|
||||||
|
vn 0.000000 0.000000 1.000000
|
||||||
|
vn 0.000000 0.000000 1.000000
|
||||||
|
vn 0.798332 0.000000 0.602218
|
||||||
|
vn 0.798332 0.000000 0.602218
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
vn -0.000000 0.000000 -1.000000
|
||||||
|
vn -0.000000 0.000000 -1.000000
|
||||||
|
vn 0.798524 0.000000 -0.601963
|
||||||
|
vn 0.798524 0.000000 -0.601963
|
||||||
|
vn 0.967785 -0.251777 0.000042
|
||||||
|
vn -0.485721 -0.462486 0.741742
|
||||||
|
vn -0.485344 -0.462668 -0.741875
|
||||||
|
vn 1.000000 0.000000 0.000000
|
||||||
|
vn 1.000000 0.000000 0.000000
|
||||||
|
vn 1.000000 0.000000 0.000000
|
||||||
|
vn 1.000000 0.000000 0.000000
|
||||||
|
vn -1.000000 0.000000 0.000000
|
||||||
|
vn -1.000000 0.000000 0.000000
|
||||||
|
vn -1.000000 0.000000 0.000000
|
||||||
|
vn -1.000000 0.000000 0.000000
|
||||||
|
vn -0.935019 -0.191988 -0.298128
|
||||||
|
vn -0.934995 -0.191995 0.298198
|
||||||
|
vn -0.802147 0.000000 -0.597126
|
||||||
|
vn -0.802147 0.000000 -0.597126
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
vn -0.801957 0.000000 0.597382
|
||||||
|
vn -0.801957 0.000000 0.597382
|
||||||
|
vn 0.003575 -0.342600 -0.939475
|
||||||
|
vn 0.932888 -0.193820 -0.303570
|
||||||
|
vn 0.932863 -0.193827 0.303641
|
||||||
|
vn 0.003576 -0.342485 0.939516
|
||||||
|
s 1
|
||||||
|
g polySurface10
|
||||||
|
usemtl pasted__lambert5SG2
|
||||||
|
f 1/1/1 70/2/2 2/3/3 35/4/4 3/5/5 45/6/6 4/7/7
|
||||||
|
f 5/8/8 52/9/9 6/10/10 29/11/11 7/12/12 64/13/13 8/14/14
|
||||||
|
f 25/15/15 72/16/16 7/12/12 22/17/17 21/18/18
|
||||||
|
f 29/11/11 6/10/10 27/19/19 26/20/20
|
||||||
|
f 32/21/21 10/22/22 23/23/23 30/24/24
|
||||||
|
f 35/4/4 2/3/3 24/25/25 33/26/26
|
||||||
|
f 34/27/27 12/28/28 31/29/29 36/30/30
|
||||||
|
f 42/31/31 13/32/32 39/33/33 38/34/34
|
||||||
|
f 46/35/35 15/36/36 44/37/37 43/38/38
|
||||||
|
f 44/39/37 15/40/36 48/41/39 47/42/40
|
||||||
|
f 40/43/41 14/44/42 49/45/43 50/46/44
|
||||||
|
f 55/47/45 6/48/10 51/49/46 53/50/47
|
||||||
|
f 60/51/48 8/52/14 57/53/49 56/54/50
|
||||||
|
f 64/55/13 7/56/12 62/57/51 61/58/52
|
||||||
|
f 67/59/53 18/60/54 58/61/55 65/62/56
|
||||||
|
f 70/63/2 1/64/1 59/65/57 68/66/58
|
||||||
|
f 69/67/59 20/68/60 66/69/61 71/70/62
|
||||||
|
f 1/1/1 4/71/7 41/72/63 5/8/8 8/52/14 60/73/48
|
||||||
|
f 22/17/17 9/74/64 23/23/23 21/18/18
|
||||||
|
f 23/23/23 10/22/22 24/25/25 21/18/18
|
||||||
|
f 24/25/25 2/3/3 73/75/65 25/15/15 21/18/18
|
||||||
|
f 27/19/19 11/76/66 28/77/67 26/20/20
|
||||||
|
f 28/77/67 9/74/64 22/17/17 26/20/20
|
||||||
|
f 22/17/17 7/12/12 29/11/11 26/20/20
|
||||||
|
f 23/23/23 9/74/64 28/78/67 30/24/24
|
||||||
|
f 28/78/67 11/79/66 31/29/29 30/24/24
|
||||||
|
f 31/29/29 12/28/28 32/21/21 30/24/24
|
||||||
|
f 24/25/25 10/22/22 32/80/21 33/26/26
|
||||||
|
f 32/80/21 12/81/28 34/82/27 33/26/26
|
||||||
|
f 34/82/27 3/5/5 35/4/4 33/26/26
|
||||||
|
f 31/29/29 11/79/66 27/83/19 36/30/30
|
||||||
|
f 27/83/19 6/84/10 55/85/45 37/86/68 36/30/30
|
||||||
|
f 37/86/68 54/87/69 3/88/5 34/27/27 36/30/30
|
||||||
|
f 39/33/33 14/44/42 40/43/41 38/34/34
|
||||||
|
f 40/43/41 5/89/8 41/90/63 38/34/34
|
||||||
|
f 41/90/63 4/71/7 42/31/31 38/34/34
|
||||||
|
f 44/37/37 13/32/32 42/31/31 43/38/38
|
||||||
|
f 42/31/31 4/71/7 45/91/6 43/38/38
|
||||||
|
f 45/91/6 3/92/5 46/35/35 43/38/38
|
||||||
|
f 48/41/39 16/93/70 49/94/43 47/42/40
|
||||||
|
f 49/94/43 14/95/42 39/96/33 47/42/40
|
||||||
|
f 39/96/33 13/97/32 44/39/37 47/42/40
|
||||||
|
f 49/45/43 16/98/70 51/99/46 50/46/44
|
||||||
|
f 51/99/46 6/100/10 52/101/9 50/46/44
|
||||||
|
f 52/101/9 5/89/8 40/43/41 50/46/44
|
||||||
|
f 51/49/46 16/93/70 48/41/39 53/50/47
|
||||||
|
f 48/41/39 15/40/36 46/102/35 53/50/47
|
||||||
|
f 46/102/35 3/103/5 54/104/69 53/50/47
|
||||||
|
f 54/104/69 37/105/68 55/47/45 53/50/47
|
||||||
|
f 57/53/49 17/106/71 58/61/55 56/54/50
|
||||||
|
f 58/61/55 18/60/54 59/65/57 56/54/50
|
||||||
|
f 59/65/57 1/64/1 60/51/48 56/54/50
|
||||||
|
f 62/57/51 19/107/72 63/108/73 61/58/52
|
||||||
|
f 63/108/73 17/106/71 57/53/49 61/58/52
|
||||||
|
f 57/53/49 8/52/14 64/55/13 61/58/52
|
||||||
|
f 58/61/55 17/106/71 63/109/73 65/62/56
|
||||||
|
f 63/109/73 19/110/72 66/69/61 65/62/56
|
||||||
|
f 66/69/61 20/68/60 67/59/53 65/62/56
|
||||||
|
f 59/65/57 18/60/54 67/111/53 68/66/58
|
||||||
|
f 67/111/53 20/112/60 69/113/59 68/66/58
|
||||||
|
f 69/113/59 2/114/3 70/63/2 68/66/58
|
||||||
|
f 66/69/61 19/110/72 62/115/51 71/70/62
|
||||||
|
f 62/115/51 7/116/12 72/117/16 71/70/62
|
||||||
|
f 72/117/16 25/118/15 73/119/65 71/70/62
|
||||||
|
f 73/119/65 2/120/3 69/67/59 71/70/62
|
||||||
|
s 10
|
||||||
|
usemtl pasted__lambert4SG2
|
||||||
|
f 85/121/74 82/122/75 75/123/76 77/124/77
|
||||||
|
s 11
|
||||||
|
f 84/125/78 85/121/79 77/124/80 79/126/81
|
||||||
|
s 12
|
||||||
|
f 83/127/82 84/125/83 79/126/84 81/128/85
|
||||||
|
s 13
|
||||||
|
f 87/129/86 88/130/87 86/131/88
|
||||||
|
s off
|
||||||
|
f 75/123/89 81/132/90 79/133/91 77/124/92
|
||||||
|
f 80/134/93 74/135/94 76/136/95 78/137/96
|
||||||
|
s 13
|
||||||
|
f 80/138/97 86/131/88 88/130/87 74/139/98
|
||||||
|
s 12
|
||||||
|
f 78/140/99 84/125/83 83/127/82 80/138/100
|
||||||
|
s 11
|
||||||
|
f 76/136/101 85/121/79 84/125/78 78/140/102
|
||||||
|
s 10
|
||||||
|
f 74/135/103 82/122/75 85/121/74 76/136/104
|
||||||
|
s 13
|
||||||
|
f 80/138/97 83/127/105 86/131/88
|
||||||
|
f 81/128/106 87/129/86 86/131/88 83/127/105
|
||||||
|
f 75/141/107 87/129/86 81/128/106
|
||||||
|
f 82/142/108 88/130/87 87/129/86 75/141/107
|
||||||
|
f 74/139/98 88/130/87 82/142/108
|
||||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,192 @@
|
|||||||
|
newmtl initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.21 0.09 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 1.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert3SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.21 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.21 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.16 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert6SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.16 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert8SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.16 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert9SG
|
||||||
|
illum 4
|
||||||
|
Kd 1.00 1.00 1.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert10SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.12 0.28 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert11SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.21 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 1.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert2SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 1.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert2SG2
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 1.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert2SG3
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 1.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert2SG4
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 1.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert3SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.21 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert3SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.21 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert3SG2
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.21 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert3SG3
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.21 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert3SG4
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.21 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.21 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.21 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG2
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.21 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.16 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert5SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.16 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert5SG2
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.16 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert6SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.16 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert6SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.16 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert6SG2
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.16 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert8SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.16 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert8SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.16 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert8SG2
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.16 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
@@ -0,0 +1,243 @@
|
|||||||
|
# This file uses centimeters as units for non-parametric coordinates.
|
||||||
|
|
||||||
|
mtllib Boom.mtl
|
||||||
|
g default
|
||||||
|
v 8.891173 1.289464 2.183208
|
||||||
|
v 6.060002 1.289464 2.982580
|
||||||
|
v 5.945371 1.289464 5.922204
|
||||||
|
v 8.705695 1.289464 6.939618
|
||||||
|
v 10.526301 1.289464 4.628792
|
||||||
|
v 8.025709 4.070336 4.531281
|
||||||
|
v 8.546361 2.777066 2.928877
|
||||||
|
v 6.662623 2.777066 3.540941
|
||||||
|
v 6.662623 2.777066 5.521620
|
||||||
|
v 8.546361 2.777066 6.133684
|
||||||
|
v 9.710575 2.777066 4.531281
|
||||||
|
v 8.025709 4.889092 4.531281
|
||||||
|
v 8.358277 3.919804 3.507741
|
||||||
|
v 7.155033 3.919804 3.898698
|
||||||
|
v 7.155033 3.919804 5.163863
|
||||||
|
v 8.358277 3.919804 5.554821
|
||||||
|
v 9.101922 3.919804 4.531281
|
||||||
|
v 8.025709 5.919804 4.531281
|
||||||
|
v 8.135743 -0.024354 4.192630
|
||||||
|
v 7.737635 -0.024354 4.321983
|
||||||
|
v 7.737635 -0.024354 4.740578
|
||||||
|
v 8.135743 -0.024354 4.869931
|
||||||
|
v 8.381787 -0.024354 4.531281
|
||||||
|
v 8.135743 2.286371 4.192630
|
||||||
|
v 7.737635 2.286371 4.321983
|
||||||
|
v 7.737635 2.286371 4.740578
|
||||||
|
v 8.135743 2.286371 4.869931
|
||||||
|
v 8.381787 2.286371 4.531281
|
||||||
|
v 8.025709 -0.024354 4.531281
|
||||||
|
v 8.025709 2.286371 4.531281
|
||||||
|
vt 0.577254 0.012236
|
||||||
|
vt 0.297746 0.103054
|
||||||
|
vt 0.297746 0.396946
|
||||||
|
vt 0.577254 0.487764
|
||||||
|
vt 0.750000 0.250000
|
||||||
|
vt 0.250000 0.500000
|
||||||
|
vt 0.350000 0.500000
|
||||||
|
vt 0.450000 0.500000
|
||||||
|
vt 0.550000 0.500000
|
||||||
|
vt 0.650000 0.500000
|
||||||
|
vt 0.750000 0.500000
|
||||||
|
vt 0.500000 1.000000
|
||||||
|
vt 0.577254 0.012236
|
||||||
|
vt 0.750000 0.250000
|
||||||
|
vt 0.577254 0.487764
|
||||||
|
vt 0.297746 0.396946
|
||||||
|
vt 0.297746 0.103054
|
||||||
|
vt 0.250000 0.500000
|
||||||
|
vt 0.350000 0.500000
|
||||||
|
vt 0.500000 1.000000
|
||||||
|
vt 0.450000 0.500000
|
||||||
|
vt 0.550000 0.500000
|
||||||
|
vt 0.650000 0.500000
|
||||||
|
vt 0.750000 0.500000
|
||||||
|
vt 0.577254 0.012236
|
||||||
|
vt 0.750000 0.250000
|
||||||
|
vt 0.577254 0.487764
|
||||||
|
vt 0.297746 0.396946
|
||||||
|
vt 0.297746 0.103054
|
||||||
|
vt 0.250000 0.500000
|
||||||
|
vt 0.350000 0.500000
|
||||||
|
vt 0.500000 1.000000
|
||||||
|
vt 0.450000 0.500000
|
||||||
|
vt 0.550000 0.500000
|
||||||
|
vt 0.650000 0.500000
|
||||||
|
vt 0.750000 0.500000
|
||||||
|
vt 0.375000 0.312500
|
||||||
|
vt 0.425000 0.312500
|
||||||
|
vt 0.425000 0.688440
|
||||||
|
vt 0.375000 0.688440
|
||||||
|
vt 0.475000 0.312500
|
||||||
|
vt 0.475000 0.688440
|
||||||
|
vt 0.525000 0.312500
|
||||||
|
vt 0.525000 0.688440
|
||||||
|
vt 0.575000 0.312500
|
||||||
|
vt 0.575000 0.688440
|
||||||
|
vt 0.625000 0.312500
|
||||||
|
vt 0.625000 0.688440
|
||||||
|
vt 0.373591 0.064409
|
||||||
|
vt 0.548284 0.007647
|
||||||
|
vt 0.500000 0.150000
|
||||||
|
vt 0.373591 0.248091
|
||||||
|
vt 0.548284 0.304853
|
||||||
|
vt 0.656250 0.156250
|
||||||
|
vt 0.548284 0.992353
|
||||||
|
vt 0.373591 0.935591
|
||||||
|
vt 0.500000 0.837500
|
||||||
|
vt 0.373591 0.751909
|
||||||
|
vt 0.548284 0.695147
|
||||||
|
vt 0.656250 0.843750
|
||||||
|
vn 0.000000 -1.000000 -0.000000
|
||||||
|
vn 0.000000 -1.000000 -0.000000
|
||||||
|
vn 0.000000 -1.000000 -0.000000
|
||||||
|
vn 0.000000 -1.000000 -0.000000
|
||||||
|
vn 0.000000 -1.000000 -0.000000
|
||||||
|
vn -0.219674 0.588572 -0.778027
|
||||||
|
vn -0.219674 0.588572 -0.778027
|
||||||
|
vn -0.219674 0.588572 -0.778027
|
||||||
|
vn -0.807831 0.588572 -0.031502
|
||||||
|
vn -0.807831 0.588572 -0.031502
|
||||||
|
vn -0.807831 0.588572 -0.031502
|
||||||
|
vn -0.279593 0.588572 0.758558
|
||||||
|
vn -0.279593 0.588572 0.758558
|
||||||
|
vn -0.279593 0.588572 0.758558
|
||||||
|
vn 0.635033 0.588572 0.500316
|
||||||
|
vn 0.635033 0.588572 0.500316
|
||||||
|
vn 0.635033 0.588572 0.500316
|
||||||
|
vn 0.672065 0.588572 -0.449346
|
||||||
|
vn 0.672065 0.588572 -0.449346
|
||||||
|
vn 0.672065 0.588572 -0.449345
|
||||||
|
vn 0.000000 -1.000000 -0.000000
|
||||||
|
vn 0.000000 -1.000000 -0.000000
|
||||||
|
vn 0.000000 -1.000000 -0.000000
|
||||||
|
vn 0.000000 -1.000000 -0.000000
|
||||||
|
vn 0.000000 -1.000000 -0.000000
|
||||||
|
vn -0.259639 0.542264 -0.799085
|
||||||
|
vn -0.259639 0.542264 -0.799085
|
||||||
|
vn -0.259639 0.542264 -0.799085
|
||||||
|
vn -0.840208 0.542264 0.000000
|
||||||
|
vn -0.840208 0.542264 0.000000
|
||||||
|
vn -0.840208 0.542264 0.000000
|
||||||
|
vn -0.259639 0.542264 0.799085
|
||||||
|
vn -0.259639 0.542264 0.799085
|
||||||
|
vn -0.259639 0.542264 0.799085
|
||||||
|
vn 0.679743 0.542264 0.493862
|
||||||
|
vn 0.679743 0.542264 0.493862
|
||||||
|
vn 0.679743 0.542264 0.493862
|
||||||
|
vn 0.679743 0.542264 -0.493862
|
||||||
|
vn 0.679743 0.542264 -0.493862
|
||||||
|
vn 0.679743 0.542264 -0.493862
|
||||||
|
vn 0.000000 -1.000000 0.000000
|
||||||
|
vn 0.000000 -1.000000 0.000000
|
||||||
|
vn 0.000000 -1.000000 0.000000
|
||||||
|
vn 0.000000 -1.000000 0.000000
|
||||||
|
vn 0.000000 -1.000000 0.000000
|
||||||
|
vn -0.283333 0.399154 -0.872008
|
||||||
|
vn -0.283333 0.399154 -0.872008
|
||||||
|
vn -0.283333 0.399154 -0.872008
|
||||||
|
vn -0.916884 0.399154 -0.000000
|
||||||
|
vn -0.916884 0.399154 -0.000000
|
||||||
|
vn -0.916884 0.399154 -0.000000
|
||||||
|
vn -0.283333 0.399154 0.872008
|
||||||
|
vn -0.283333 0.399154 0.872008
|
||||||
|
vn -0.283333 0.399154 0.872008
|
||||||
|
vn 0.741775 0.399154 0.538931
|
||||||
|
vn 0.741775 0.399154 0.538931
|
||||||
|
vn 0.741775 0.399154 0.538931
|
||||||
|
vn 0.741775 0.399154 -0.538931
|
||||||
|
vn 0.741775 0.399154 -0.538931
|
||||||
|
vn 0.741775 0.399154 -0.538931
|
||||||
|
vn -0.309017 0.000000 -0.951057
|
||||||
|
vn -0.309017 0.000000 -0.951057
|
||||||
|
vn -0.309017 0.000000 -0.951057
|
||||||
|
vn -0.309017 0.000000 -0.951057
|
||||||
|
vn -1.000000 0.000000 -0.000000
|
||||||
|
vn -1.000000 0.000000 -0.000000
|
||||||
|
vn -1.000000 0.000000 -0.000000
|
||||||
|
vn -1.000000 0.000000 -0.000000
|
||||||
|
vn -0.309017 0.000000 0.951057
|
||||||
|
vn -0.309017 0.000000 0.951057
|
||||||
|
vn -0.309017 0.000000 0.951057
|
||||||
|
vn -0.309017 0.000000 0.951057
|
||||||
|
vn 0.809017 0.000000 0.587785
|
||||||
|
vn 0.809017 0.000000 0.587785
|
||||||
|
vn 0.809017 0.000000 0.587785
|
||||||
|
vn 0.809017 0.000000 0.587785
|
||||||
|
vn 0.809017 0.000000 -0.587785
|
||||||
|
vn 0.809017 0.000000 -0.587785
|
||||||
|
vn 0.809017 0.000000 -0.587785
|
||||||
|
vn 0.809017 0.000000 -0.587785
|
||||||
|
vn 0.000000 -1.000000 0.000000
|
||||||
|
vn 0.000000 -1.000000 0.000000
|
||||||
|
vn 0.000000 -1.000000 0.000000
|
||||||
|
vn 0.000000 -1.000000 0.000000
|
||||||
|
vn 0.000000 -1.000000 0.000000
|
||||||
|
vn 0.000000 -1.000000 0.000000
|
||||||
|
vn 0.000000 -1.000000 0.000000
|
||||||
|
vn 0.000000 -1.000000 0.000000
|
||||||
|
vn 0.000000 -1.000000 0.000000
|
||||||
|
vn 0.000000 -1.000000 0.000000
|
||||||
|
vn 0.000000 -1.000000 0.000000
|
||||||
|
vn 0.000000 -1.000000 0.000000
|
||||||
|
vn 0.000000 -1.000000 -0.000000
|
||||||
|
vn 0.000000 -1.000000 -0.000000
|
||||||
|
vn 0.000000 -1.000000 -0.000000
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 1.000000 -0.000001
|
||||||
|
vn 0.000000 1.000000 -0.000001
|
||||||
|
vn 0.000000 1.000000 -0.000001
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
s off
|
||||||
|
g PineConeTree
|
||||||
|
usemtl lambert5SG
|
||||||
|
f 1/1/1 5/5/2 4/4/3 3/3/4 2/2/5
|
||||||
|
f 1/6/6 2/7/7 6/12/8
|
||||||
|
f 2/7/9 3/8/10 6/12/11
|
||||||
|
f 3/8/12 4/9/13 6/12/14
|
||||||
|
f 4/9/15 5/10/16 6/12/17
|
||||||
|
f 5/10/18 1/11/19 6/12/20
|
||||||
|
usemtl lambert6SG
|
||||||
|
f 7/13/21 11/14/22 10/15/23 9/16/24 8/17/25
|
||||||
|
f 7/18/26 8/19/27 12/20/28
|
||||||
|
f 8/19/29 9/21/30 12/20/31
|
||||||
|
f 9/21/32 10/22/33 12/20/34
|
||||||
|
f 10/22/35 11/23/36 12/20/37
|
||||||
|
f 11/23/38 7/24/39 12/20/40
|
||||||
|
usemtl lambert8SG
|
||||||
|
f 13/25/41 17/26/42 16/27/43 15/28/44 14/29/45
|
||||||
|
f 13/30/46 14/31/47 18/32/48
|
||||||
|
f 14/31/49 15/33/50 18/32/51
|
||||||
|
f 15/33/52 16/34/53 18/32/54
|
||||||
|
f 16/34/55 17/35/56 18/32/57
|
||||||
|
f 17/35/58 13/36/59 18/32/60
|
||||||
|
usemtl lambert4SG
|
||||||
|
f 19/37/61 20/38/62 25/39/63 24/40/64
|
||||||
|
f 20/38/65 21/41/66 26/42/67 25/39/68
|
||||||
|
f 21/41/69 22/43/70 27/44/71 26/42/72
|
||||||
|
f 22/43/73 23/45/74 28/46/75 27/44/76
|
||||||
|
f 23/45/77 19/47/78 24/48/79 28/46/80
|
||||||
|
f 20/49/81 19/50/82 29/51/83
|
||||||
|
f 21/52/84 20/49/85 29/51/86
|
||||||
|
f 22/53/87 21/52/88 29/51/89
|
||||||
|
f 23/54/90 22/53/91 29/51/92
|
||||||
|
f 19/50/93 23/54/94 29/51/95
|
||||||
|
f 24/55/96 25/56/97 30/57/98
|
||||||
|
f 25/56/99 26/58/100 30/57/101
|
||||||
|
f 26/58/102 27/59/103 30/57/104
|
||||||
|
f 27/59/105 28/60/106 30/57/107
|
||||||
|
f 28/60/108 24/55/109 30/57/110
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# WaveFront *.mtl file (generated by CINEMA 4D)
|
||||||
|
|
||||||
|
newmtl Mat
|
||||||
|
Kd 0.00000000000000 0.76666665077209 1.00000000000000
|
||||||
|
d 0
|
||||||
|
Tf 1.00000000000000 1.00000000000000 1.00000000000000
|
||||||
|
illum 7
|
||||||
|
|
||||||
|
newmtl Mat.2
|
||||||
|
Kd 0.43200001120567 0.62826669216156 0.80000001192093
|
||||||
|
illum 7
|
||||||
|
|
||||||
|
newmtl Mat.1
|
||||||
|
Kd 0.00000000000000 0.00000000000000 0.80000001192093
|
||||||
|
illum 7
|
||||||
|
|
||||||
@@ -0,0 +1,676 @@
|
|||||||
|
# WaveFront *.obj file (generated by CINEMA 4D)
|
||||||
|
|
||||||
|
mtllib ./portal_blue.mtl
|
||||||
|
|
||||||
|
v 0.00000000000000 -171.96217544392707 0.00000000000000
|
||||||
|
v 0.00000000000000 171.96217544392707 0.00000000000000
|
||||||
|
v 85.98108772196353 -171.96217544392707 0.00000000000000
|
||||||
|
v 85.98108772196353 7.33235190308497 0.00000000000000
|
||||||
|
v 85.98108772196353 171.96217544392707 0.00000000000000
|
||||||
|
v 65.86533446273555 -171.96217544392707 55.26757785504959
|
||||||
|
v 65.86533446273555 7.33235190308497 55.26757785504959
|
||||||
|
v 65.86533446273555 171.96217544392707 55.26757785504959
|
||||||
|
v 14.93045919673945 -171.96217544392707 84.67484180101245
|
||||||
|
v 14.93045919673945 7.33235190308497 84.67484180101245
|
||||||
|
v 14.93045919673945 171.96217544392707 84.67484180101245
|
||||||
|
v -42.99054386098175 -171.96217544392707 74.46180621223871
|
||||||
|
v -42.99054386098175 7.33235190308497 74.46180621223871
|
||||||
|
v -42.99054386098175 171.96217544392707 74.46180621223871
|
||||||
|
v -80.79579365947500 -171.96217544392707 29.40726394596288
|
||||||
|
v -80.79579365947500 7.33235190308497 29.40726394596288
|
||||||
|
v -80.79579365947500 171.96217544392707 29.40726394596288
|
||||||
|
v -80.79579365947501 -171.96217544392707 -29.40726394596286
|
||||||
|
v -80.79579365947501 7.33235190308497 -29.40726394596286
|
||||||
|
v -80.79579365947501 171.96217544392707 -29.40726394596286
|
||||||
|
v -42.99054386098180 -171.96217544392707 -74.46180621223869
|
||||||
|
v -42.99054386098180 7.33235190308497 -74.46180621223869
|
||||||
|
v -42.99054386098180 171.96217544392707 -74.46180621223869
|
||||||
|
v 14.93045919673942 -171.96217544392707 -84.67484180101246
|
||||||
|
v 14.93045919673942 7.33235190308497 -84.67484180101246
|
||||||
|
v 14.93045919673942 171.96217544392707 -84.67484180101246
|
||||||
|
v 65.86533446273553 -171.96217544392707 -55.26757785504962
|
||||||
|
v 65.86533446273553 7.33235190308497 -55.26757785504962
|
||||||
|
v 65.86533446273553 171.96217544392707 -55.26757785504962
|
||||||
|
# 29 vertices
|
||||||
|
|
||||||
|
vn -0.76604445295859 0.00000000000000 0.64278759796015
|
||||||
|
vn 0.93969261684974 0.00000000000000 0.34202015414020
|
||||||
|
vn 0.50000002562450 0.00000000000000 -0.86602538899013
|
||||||
|
vn -1.00000000000000 0.00000000000000 0.00000000000000
|
||||||
|
vn 0.50000002562450 0.00000000000000 0.86602538899013
|
||||||
|
vn -0.17364817233999 0.00000000000000 -0.98480775395149
|
||||||
|
vn -0.76604445295859 0.00000000000000 -0.64278759796015
|
||||||
|
vn -0.17364817233999 0.00000000000000 0.98480775395149
|
||||||
|
vn 0.93969261684974 0.00000000000000 -0.34202015414020
|
||||||
|
# 9 normals
|
||||||
|
|
||||||
|
vt 0.33333334326744 -1.00000000000000 0.00000000000000
|
||||||
|
vt 0.33333334326744 -0.00000000000000 0.00000000000000
|
||||||
|
vt 0.44444444775581 -0.00000000000000 0.00000000000000
|
||||||
|
vt 0.44444444775581 -1.00000000000000 0.00000000000000
|
||||||
|
vt 0.00000000000000 -1.00000000000000 0.00000000000000
|
||||||
|
vt 0.00000000000000 -0.00000000000000 0.00000000000000
|
||||||
|
vt 0.11111111193895 -0.00000000000000 0.00000000000000
|
||||||
|
vt 0.11111111193895 -1.00000000000000 0.00000000000000
|
||||||
|
vt 0.77777779102325 -1.00000000000000 0.00000000000000
|
||||||
|
vt 0.77777779102325 -0.00000000000000 0.00000000000000
|
||||||
|
vt 0.88888889551163 -0.00000000000000 0.00000000000000
|
||||||
|
vt 0.88888889551163 -1.00000000000000 0.00000000000000
|
||||||
|
vt 0.55555558204651 -0.00000000000000 0.00000000000000
|
||||||
|
vt 0.55555558204651 -1.00000000000000 0.00000000000000
|
||||||
|
vt 0.22222222387791 -0.00000000000000 0.00000000000000
|
||||||
|
vt 0.22222222387791 -1.00000000000000 0.00000000000000
|
||||||
|
vt 0.66666668653488 -1.00000000000000 0.00000000000000
|
||||||
|
vt 0.66666668653488 -0.00000000000000 0.00000000000000
|
||||||
|
vt 1.00000000000000 -0.00000000000000 0.00000000000000
|
||||||
|
vt 1.00000000000000 -1.00000000000000 0.00000000000000
|
||||||
|
# 20 texture coordinates
|
||||||
|
|
||||||
|
o Cylinder
|
||||||
|
usemtl Mat
|
||||||
|
f 13/1/1 14/2/1 17/3/1 16/4/1
|
||||||
|
f 4/5/2 5/6/2 8/7/2 7/8/2
|
||||||
|
f 25/9/3 26/10/3 29/11/3 28/12/3
|
||||||
|
f 16/4/4 17/3/4 20/13/4 19/14/4
|
||||||
|
f 7/8/5 8/7/5 11/15/5 10/16/5
|
||||||
|
f 22/17/6 23/18/6 26/10/6 25/9/6
|
||||||
|
f 19/14/7 20/13/7 23/18/7 22/17/7
|
||||||
|
f 10/16/8 11/15/8 14/2/8 13/1/8
|
||||||
|
f 28/12/9 29/11/9 5/19/9 4/20/9
|
||||||
|
|
||||||
|
v -93.96926207859083 10.00000000000000 34.20201433256689
|
||||||
|
v 0.01217485718138 11.00001403290715 -0.01021591817053
|
||||||
|
v 76.60444431189778 0.00000000000000 -64.27876096865396
|
||||||
|
v 76.60444431189778 2.50000000000000 -64.27876096865396
|
||||||
|
v 76.60444431189778 5.00000000000000 -64.27876096865396
|
||||||
|
v -50.00000000000004 0.00000000000000 -86.60254037844383
|
||||||
|
v -50.00000000000004 2.50000000000000 -86.60254037844383
|
||||||
|
v -50.00000000000004 5.00000000000000 -86.60254037844383
|
||||||
|
v -82.30250693287560 12.34005811377603 29.95566272905449
|
||||||
|
v -50.00000000000004 7.50000000000000 -86.60254037844383
|
||||||
|
v -50.00000000000004 10.00000000000000 -86.60254037844383
|
||||||
|
v -43.79224924850548 12.34005811377603 -75.85040067613139
|
||||||
|
v 100.00000000000000 0.00000000000000 0.00000000000000
|
||||||
|
v 100.00000000000000 2.50000000000000 0.00000000000000
|
||||||
|
v 100.00000000000000 5.00000000000000 0.00000000000000
|
||||||
|
v 100.00000000000000 7.50000000000000 0.00000000000000
|
||||||
|
v 100.00000000000000 10.00000000000000 0.00000000000000
|
||||||
|
v 87.58449849701088 12.34005811377603 0.00000000000000
|
||||||
|
v 75.13523150260404 14.36993599551963 0.00000000000000
|
||||||
|
v 62.65699844618840 16.08885108866691 0.00000000000000
|
||||||
|
v 49.25862759706679 8.53560575575546 0.00000000000000
|
||||||
|
v 36.96020780186315 9.61341698032146 -0.00000000000000
|
||||||
|
v 24.64786635501281 10.38345526352774 0.00000000000000
|
||||||
|
v 12.28883806870444 10.84628486838432 -0.01362332794681
|
||||||
|
v 76.60444431189778 7.50000000000000 -64.27876096865396
|
||||||
|
v 76.60444431189778 10.00000000000000 -64.27876096865396
|
||||||
|
v -93.96926207859085 0.00000000000000 -34.20201433256687
|
||||||
|
v -37.56761575130206 14.36993599551963 -65.06901920047991
|
||||||
|
v -31.32849922309423 16.08885108866691 -54.26255237928124
|
||||||
|
v -24.62931379853342 8.53560575575546 -42.65922285461705
|
||||||
|
v -70.60402260403794 14.36993599551963 25.69776264732795
|
||||||
|
v -18.48010390093159 9.61341698032146 -32.00847888556528
|
||||||
|
v -12.32393317750641 10.38345526352774 -21.34567841252484
|
||||||
|
v -6.15621718243825 10.84628486838432 -10.63563428651794
|
||||||
|
v -93.96926207859085 2.50000000000000 -34.20201433256687
|
||||||
|
v 76.60444431189781 0.00000000000000 64.27876096865393
|
||||||
|
v 76.60444431189781 2.50000000000000 64.27876096865393
|
||||||
|
v 76.60444431189781 5.00000000000000 64.27876096865393
|
||||||
|
v 76.60444431189781 7.50000000000000 64.27876096865393
|
||||||
|
v 76.60444431189781 10.00000000000000 64.27876096865393
|
||||||
|
v 67.09361837699767 12.34005811377603 56.29823043448791
|
||||||
|
v 57.55692657502781 14.36993599551963 48.29599586080362
|
||||||
|
v 47.99804548221707 16.08885108866691 40.27514226135865
|
||||||
|
v 37.73429794640015 8.53560575575546 31.66283548955796
|
||||||
|
v 28.31316180313996 9.61341698032146 23.75756362647740
|
||||||
|
v 18.88136105599678 10.38345526352774 15.84334309821196
|
||||||
|
v 9.40503920851309 10.84628486838432 7.90954892267792
|
||||||
|
v -93.96926207859085 5.00000000000000 -34.20201433256687
|
||||||
|
v -93.96926207859085 7.50000000000000 -34.20201433256687
|
||||||
|
v -93.96926207859085 10.00000000000000 -34.20201433256687
|
||||||
|
v -82.30250693287562 12.34005811377603 -29.95566272905447
|
||||||
|
v -70.60402260403794 14.36993599551963 -25.69776264732793
|
||||||
|
v -58.87831908047738 16.08885108866691 -21.42995558892156
|
||||||
|
v -58.87831908047737 16.08885108866691 21.42995558892157
|
||||||
|
v -46.28796886300476 8.53560575575546 16.84744287077453
|
||||||
|
v 17.36481776669300 0.00000000000000 -98.48077530122082
|
||||||
|
v 17.36481776669300 2.50000000000000 -98.48077530122082
|
||||||
|
v 17.36481776669300 5.00000000000000 -98.48077530122082
|
||||||
|
v 17.36481776669304 0.00000000000000 98.48077530122080
|
||||||
|
v 17.36481776669304 2.50000000000000 98.48077530122080
|
||||||
|
v 17.36481776669304 5.00000000000000 98.48077530122080
|
||||||
|
v 17.36481776669304 7.50000000000000 98.48077530122080
|
||||||
|
v 17.36481776669304 10.00000000000000 98.48077530122080
|
||||||
|
v 15.20888855587795 12.34005811377603 86.25389316354240
|
||||||
|
v 13.04709602901014 14.36993599551963 73.99375850813155
|
||||||
|
v 10.88027359826031 16.08885108866691 61.70509785028021
|
||||||
|
v 8.55367091660462 8.53560575575546 48.51027836033248
|
||||||
|
v 6.41807273098460 9.61341698032146 36.39869919621713
|
||||||
|
v 4.28005707592602 10.38345526352774 24.27340988162536
|
||||||
|
v 2.12051797729068 10.84628486838432 12.10450867164343
|
||||||
|
v -46.28796886300477 8.53560575575546 -16.84744287077452
|
||||||
|
v -34.73123453412457 9.61341698032146 -12.64113556973973
|
||||||
|
v -23.16141813192280 10.38345526352774 -8.43006678341341
|
||||||
|
v -11.54307099861758 10.84628486838432 -4.21583189830639
|
||||||
|
v 17.36481776669300 7.50000000000000 -98.48077530122082
|
||||||
|
v 17.36481776669300 10.00000000000000 -98.48077530122082
|
||||||
|
v -34.73123453412456 9.61341698032146 12.64113556973974
|
||||||
|
v 15.20888855587791 12.34005811377603 -86.25389316354242
|
||||||
|
v 13.04709602901010 14.36993599551963 -73.99375850813156
|
||||||
|
v 10.88027359826028 16.08885108866691 -61.70509785028022
|
||||||
|
v 8.55367091660459 8.53560575575546 -48.51027836033249
|
||||||
|
v -49.99999999999998 0.00000000000000 86.60254037844388
|
||||||
|
v -49.99999999999998 2.50000000000000 86.60254037844388
|
||||||
|
v -49.99999999999998 5.00000000000000 86.60254037844388
|
||||||
|
v -49.99999999999998 7.50000000000000 86.60254037844388
|
||||||
|
v -49.99999999999998 10.00000000000000 86.60254037844388
|
||||||
|
v -43.79224924850542 12.34005811377603 75.85040067613141
|
||||||
|
v -37.56761575130201 14.36993599551963 65.06901920047994
|
||||||
|
v -31.32849922309419 16.08885108866691 54.26255237928126
|
||||||
|
v -24.62931379853339 8.53560575575546 42.65922285461706
|
||||||
|
v -18.48010390093157 9.61341698032146 32.00847888556530
|
||||||
|
v -12.32393317750640 10.38345526352774 21.34567841252484
|
||||||
|
v -6.15621718243824 10.84628486838432 10.63563428651794
|
||||||
|
v 67.09361837699765 12.34005811377603 -56.29823043448795
|
||||||
|
v 57.55692657502779 14.36993599551963 -48.29599586080364
|
||||||
|
v 47.99804548221705 16.08885108866691 -40.27514226135867
|
||||||
|
v -23.16141813192279 10.38345526352774 8.43006678341341
|
||||||
|
v 6.41807273098458 9.61341698032146 -36.39869919621714
|
||||||
|
v 4.28005707592601 10.38345526352774 -24.27340988162536
|
||||||
|
v 2.14735069525837 10.84628486838432 -12.09977733949999
|
||||||
|
v -11.54307099861758 10.84628486838432 4.21583189830639
|
||||||
|
v 37.73429794640014 8.53560575575546 -31.66283548955798
|
||||||
|
v 28.31316180313996 9.61341698032146 -23.75756362647741
|
||||||
|
v 18.88136105599677 10.38345526352774 -15.84334309821196
|
||||||
|
v 9.40503920851308 10.84628486838432 -7.90954892267792
|
||||||
|
v -93.96926207859083 0.00000000000000 34.20201433256689
|
||||||
|
v -93.96926207859083 2.50000000000000 34.20201433256689
|
||||||
|
v -93.96926207859083 5.00000000000000 34.20201433256689
|
||||||
|
v -93.96926207859083 7.50000000000000 34.20201433256689
|
||||||
|
v -80.93917847801794 3.44213696955998 29.45945175195817
|
||||||
|
v -43.06683732938375 3.44213696955998 -74.59395037579651
|
||||||
|
v 86.13367465876743 3.44213696955998 0.00000000000000
|
||||||
|
v 73.68440766436059 5.47201485130358 0.00000000000000
|
||||||
|
v -36.84220383218033 5.47201485130358 -63.81256890014504
|
||||||
|
v -69.24069414918027 5.47201485130358 25.20155167023162
|
||||||
|
v 65.98222283776673 3.44213696955998 55.36565884742716
|
||||||
|
v 56.44553103579686 5.47201485130358 47.36342427374285
|
||||||
|
v -80.93917847801795 3.44213696955998 -29.45945175195815
|
||||||
|
v -69.24069414918027 5.47201485130358 -25.20155167023161
|
||||||
|
v 14.95695564025123 3.44213696955998 84.82511059938531
|
||||||
|
v 12.79516311338342 5.47201485130358 72.56497594397446
|
||||||
|
v 14.95695564025119 3.44213696955998 -84.82511059938533
|
||||||
|
v 12.79516311338339 5.47201485130358 -72.56497594397447
|
||||||
|
v -43.06683732938370 3.44213696955998 74.59395037579654
|
||||||
|
v -36.84220383218028 5.47201485130358 63.81256890014507
|
||||||
|
v 65.98222283776671 3.44213696955998 -55.36565884742719
|
||||||
|
v 56.44553103579685 5.47201485130358 -47.36342427374289
|
||||||
|
v 61.64946696987336 7.13792180161393 0.00000000000000
|
||||||
|
v -30.82473348493671 7.13792180161393 -53.39000452567997
|
||||||
|
v 47.22623159351846 7.13792180161393 39.62751351201415
|
||||||
|
v -57.93154918697460 7.13792180161393 -21.08535952898716
|
||||||
|
v -57.93154918697459 7.13792180161393 21.08535952898718
|
||||||
|
v 10.70531759345613 7.13792180161393 60.71287304100132
|
||||||
|
v 10.70531759345610 7.13792180161393 -60.71287304100133
|
||||||
|
v -30.82473348493667 7.13792180161393 53.39000452567999
|
||||||
|
v 47.22623159351845 7.13792180161393 -39.62751351201417
|
||||||
|
v 3.62814454378410 0.07000000000000 114.53939352316701
|
||||||
|
v 3.62814454378410 3.28500000000000 114.53939352316701
|
||||||
|
v 3.62814454378410 5.00000000000000 114.53939352316701
|
||||||
|
v 3.62814454378410 6.71500000000000 114.53939352316701
|
||||||
|
v 3.62814454378410 6.93000000000000 114.53939352316701
|
||||||
|
v -42.58412044416730 0.07000000000000 106.39092436614204
|
||||||
|
v -42.58412044416730 3.28500000000000 106.39092436614204
|
||||||
|
v -42.58412044416730 5.00000000000000 106.39092436614204
|
||||||
|
v -42.58412044416730 6.71500000000000 106.39092436614204
|
||||||
|
v -42.58412044416730 6.93000000000000 106.39092436614204
|
||||||
|
v -70.53739817655406 0.00000000000000 -90.44119596785730
|
||||||
|
v -70.53739817655406 3.25000000000000 -90.44119596785730
|
||||||
|
v -70.53739817655406 5.00000000000000 -90.44119596785730
|
||||||
|
v -70.53739817655406 6.75000000000000 -90.44119596785730
|
||||||
|
v -70.53739817655406 7.00000000000000 -90.44119596785730
|
||||||
|
v -101.31588163156762 0.00000000000000 -53.76082773574343
|
||||||
|
v -101.31588163156762 3.25000000000000 -53.76082773574343
|
||||||
|
v -101.31588163156762 5.00000000000000 -53.76082773574343
|
||||||
|
v -101.31588163156762 6.75000000000000 -53.76082773574343
|
||||||
|
v -101.31588163156762 7.00000000000000 -53.76082773574343
|
||||||
|
v 97.21618336341665 0.00000000000000 -60.86171343188304
|
||||||
|
v 97.21618336341665 3.25000000000000 -60.86171343188304
|
||||||
|
v 97.21618336341665 5.00000000000000 -60.86171343188304
|
||||||
|
v 113.59307234508819 0.00000000000000 -15.86658075382527
|
||||||
|
v 113.59307234508819 3.25000000000000 -15.86658075382527
|
||||||
|
v 113.59307234508819 5.00000000000000 -15.86658075382527
|
||||||
|
v 113.59307234508819 6.75000000000000 -15.86658075382527
|
||||||
|
v 113.59307234508819 7.00000000000000 -15.86658075382527
|
||||||
|
v 97.21618336341665 6.75000000000000 -60.86171343188304
|
||||||
|
v 97.21618336341665 7.00000000000000 -60.86171343188304
|
||||||
|
# 166 vertices
|
||||||
|
|
||||||
|
vn -0.19665808619539 0.98047212970791 0.00000000000000
|
||||||
|
vn -0.17096171580051 0.98527767240030 0.00000000000000
|
||||||
|
vn -0.14504370205155 0.98942524957431 0.00000000000000
|
||||||
|
vn -0.11918337919454 0.99287225871396 0.00000000000000
|
||||||
|
vn 0.93969262382216 0.00000000000000 0.34202013498363
|
||||||
|
vn 0.18479816258070 0.98047212849648 0.06726101655775
|
||||||
|
vn 0.16065150684356 0.98527766408730 0.05847236953959
|
||||||
|
vn 0.13629644509239 0.98942525800021 0.04960784097704
|
||||||
|
vn 0.11199575940161 0.99287225631785 0.04076312684726
|
||||||
|
vn 0.08725951913662 0.99567920870674 0.03175987514404
|
||||||
|
vn 0.06240394405703 0.99779249304688 0.02271318087430
|
||||||
|
vn 0.03740401526039 0.99920748596035 0.01361395031560
|
||||||
|
vn 0.01252223852369 0.99991120640625 0.00455772372410
|
||||||
|
vn 0.00000000000000 0.00000000000000 0.00000000000000
|
||||||
|
vn -0.09285966373172 0.99567920679887 0.00000000000000
|
||||||
|
vn -0.06640890306397 0.99779249225169 0.00000000000000
|
||||||
|
vn -0.03980452152388 0.99920748599390 0.00000000000000
|
||||||
|
vn -0.01330268900060 0.99991151531791 0.00000000000000
|
||||||
|
vn -0.03414931804942 0.98047212208198 -0.19367044662728
|
||||||
|
vn -0.02968721123287 0.98527766099421 -0.16836448626413
|
||||||
|
vn -0.02518657098508 0.98942525288617 -0.14284013999273
|
||||||
|
vn -0.02069597978439 0.99287225679984 -0.11737273149223
|
||||||
|
vn -0.01612491261274 0.99567920643049 -0.09144892057968
|
||||||
|
vn -0.01153178339161 0.99779249308424 -0.06539999018760
|
||||||
|
vn -0.00691198270819 0.99920748594613 -0.03919980260488
|
||||||
|
vn -0.00231401612509 0.99991120639602 -0.01312343906989
|
||||||
|
vn 0.49999995856928 0.00000000000000 0.86602542770448
|
||||||
|
vn 0.09832902812412 0.98047212898587 0.17031091130661
|
||||||
|
vn 0.08548088694937 0.98527766371861 0.14805722996041
|
||||||
|
vn 0.07252181751881 0.98942525863608 0.12561147860243
|
||||||
|
vn 0.05959168951892 0.99287225740849 0.10321584669447
|
||||||
|
vn 0.04642982540080 0.99567920764963 0.08041882097783
|
||||||
|
vn 0.03320445329494 0.99779249288809 0.05751178503193
|
||||||
|
vn 0.01989513607874 0.99920652902614 0.03450356375710
|
||||||
|
vn 0.00664128799372 0.99991144280459 0.01153255575468
|
||||||
|
vn 0.18479816258070 0.98047212849648 -0.06726101655775
|
||||||
|
vn 0.16065149236198 0.98527766666057 -0.05847236596702
|
||||||
|
vn 0.13629645313039 0.98942525674626 -0.04960784390263
|
||||||
|
vn 0.11199575940161 0.99287225631785 -0.04076312684726
|
||||||
|
vn 0.08725951915726 0.99567920894235 -0.03175986770098
|
||||||
|
vn 0.06240394034624 0.99779249327884 -0.02271318087958
|
||||||
|
vn 0.03740395492580 0.99920716843738 -0.01363740075164
|
||||||
|
vn 0.01251970487735 0.99991117055467 -0.00457252553575
|
||||||
|
vn 0.49999995856928 0.00000000000000 -0.86602542770448
|
||||||
|
vn -0.17364815788816 0.00000000000000 0.98480775649974
|
||||||
|
vn -0.17364814343632 0.00000000000000 0.98480775904799
|
||||||
|
vn -0.03414931442702 0.98047212503627 0.19367043230968
|
||||||
|
vn -0.02968721309388 0.98527766093973 0.16836448625482
|
||||||
|
vn -0.02518657109230 0.98942525709813 0.14284011079847
|
||||||
|
vn -0.02069597794064 0.99287225770638 0.11737272414882
|
||||||
|
vn -0.01612491261274 0.99567920643049 0.09144892057968
|
||||||
|
vn -0.01153178525401 0.99779249306281 0.06539999018620
|
||||||
|
vn -0.00693790511801 0.99920652903996 0.03921960984633
|
||||||
|
vn -0.00232356852067 0.99991158690294 0.01309272342093
|
||||||
|
vn 0.09832904263167 0.98047212506099 -0.17031092552601
|
||||||
|
vn 0.08548088694937 0.98527766371861 -0.14805722996041
|
||||||
|
vn 0.07252181751881 0.98942525863608 -0.12561147860243
|
||||||
|
vn 0.05959168951892 0.99287225740849 -0.10321584669447
|
||||||
|
vn 0.04642982540080 0.99567920764963 -0.08041882097783
|
||||||
|
vn 0.03320444958798 0.99779249343906 -0.05751177761311
|
||||||
|
vn 0.01991821206097 0.99920621453817 -0.03449935733593
|
||||||
|
vn 0.00666159899357 0.99991124226914 -0.01153822701473
|
||||||
|
vn -0.76604442833138 0.00000000000000 0.64278762730971
|
||||||
|
vn -0.15064887256782 0.98047211845827 0.12640942259180
|
||||||
|
vn -0.13096431712387 0.98527766152995 0.10989211677986
|
||||||
|
vn -0.11110991348716 0.98942525166848 0.09323228242209
|
||||||
|
vn -0.09129977602114 0.99287225761365 0.07660960096268
|
||||||
|
vn -0.07113462739735 0.99567920714147 0.05968903794818
|
||||||
|
vn -0.05087216252574 0.99779249299289 0.04268681303383
|
||||||
|
vn -0.03051647074462 0.99920621459625 0.02560636103619
|
||||||
|
vn -0.01017896945524 0.99991171461749 0.00854116804275
|
||||||
|
vn -0.15064887285159 0.98047212030514 -0.12640940792875
|
||||||
|
vn -0.13096431744556 0.98527766395006 -0.10989209469805
|
||||||
|
vn -0.11110989884714 0.98942525399393 -0.09323227519063
|
||||||
|
vn -0.09129976858055 0.99287225772232 -0.07660960842164
|
||||||
|
vn -0.07113462000028 0.99567920789057 -0.05968903426779
|
||||||
|
vn -0.05087216252574 0.99779249299289 -0.04268681303383
|
||||||
|
vn -0.03051647078805 0.99920621463405 -0.02560635950969
|
||||||
|
vn -0.01019053593323 0.99991151385348 -0.00855087367662
|
||||||
|
vn 0.93969264297872 0.00000000000000 -0.34202008235141
|
||||||
|
vn 0.93969265255700 0.00000000000000 -0.34202005603530
|
||||||
|
vn 0.00000000000000 -1.00000000000000 0.00000000000000
|
||||||
|
vn 0.98846473802528 0.15145118580127 0.00000000000000
|
||||||
|
vn -0.98846473665810 -0.15145119472433 0.00000000000000
|
||||||
|
vn -0.92885302594117 0.15145119877413 -0.33807482986731
|
||||||
|
vn 0.92885298744057 -0.15145135122680 0.33807486735087
|
||||||
|
vn 0.17164509815197 0.15145141782323 0.97344770189247
|
||||||
|
vn -0.17164517289927 -0.15145094119918 -0.97344776286674
|
||||||
|
vn -0.49423234715525 0.15145125697307 -0.85603557390256
|
||||||
|
vn 0.49423238039546 -0.15145145174166 0.85603552025251
|
||||||
|
vn -0.92885303412084 0.15145119038919 0.33807481115015
|
||||||
|
vn 0.92885298835789 -0.15145132675655 -0.33807487579276
|
||||||
|
vn 0.17164509776460 0.15145143238260 -0.97344769969559
|
||||||
|
vn -0.17164518619931 -0.15145098448992 0.97344775378632
|
||||||
|
vn -0.49423234938602 0.15145122785434 0.85603557776636
|
||||||
|
vn 0.49423238374161 -0.15145140806357 -0.85603552604822
|
||||||
|
vn 0.75720786045583 0.15145155586903 -0.63537286870684
|
||||||
|
vn -0.75720792689815 -0.15145119960879 0.63537287444434
|
||||||
|
vn 0.75720787412678 0.15145143939411 0.63537288017813
|
||||||
|
vn -0.75720795782858 -0.15145089585037 -0.63537290998845
|
||||||
|
vn 0.99445250530214 0.10518657090281 0.00000000000000
|
||||||
|
vn -0.93447968959132 0.10518661618010 -0.34012275066201
|
||||||
|
vn 0.17268482835063 0.10518680949942 0.97934451811650
|
||||||
|
vn -0.49722621438918 0.10518658401438 -0.86122115293785
|
||||||
|
vn -0.93447968592956 0.10518665302082 0.34012274932923
|
||||||
|
vn 0.17268481470582 0.10518676556122 -0.97934452524165
|
||||||
|
vn -0.49722625026737 0.10518681626770 0.86122110385691
|
||||||
|
vn 0.76179478336745 0.10518668286006 -0.63922176885885
|
||||||
|
vn 0.76179481716844 0.10518662792257 0.63922173761660
|
||||||
|
vn -0.00066787260224 -0.99999260363101 0.00378769447847
|
||||||
|
vn -0.93640329589009 0.00000000000000 0.35092572924507
|
||||||
|
vn -0.93640328609681 0.00000000000000 0.35092575537727
|
||||||
|
vn -0.02888317292269 0.98606987879052 0.16380462894547
|
||||||
|
vn 0.75990752558337 0.00000000000000 0.65003119352978
|
||||||
|
vn 0.18372862996709 0.00000000000000 -0.98297700406999
|
||||||
|
vn -0.12458981649409 0.98668540184593 -0.10454327051564
|
||||||
|
vn -0.93613918929888 0.00000000000000 0.35162966066421
|
||||||
|
vn 0.75941870623911 0.00000000000000 0.65060220458750
|
||||||
|
vn 0.15283203796476 0.98668540199390 -0.05562630370322
|
||||||
|
vn 0.16354942482305 0.00000000000000 -0.98653514161435
|
||||||
|
vn 0.16354948283336 0.00000000000000 -0.98653513199731
|
||||||
|
vn 0.16354939581789 0.00000000000000 -0.98653514642288
|
||||||
|
# 122 normals
|
||||||
|
|
||||||
|
vt 0.44444444775581 -0.50000000000000 0.00000000000000
|
||||||
|
vt 0.44444444775581 -0.37500000000000 0.00000000000000
|
||||||
|
vt 0.55555558204651 -0.37500000000000 0.00000000000000
|
||||||
|
vt 0.55555558204651 -0.50000000000000 0.00000000000000
|
||||||
|
vt 0.44444444775581 -0.25000000000000 0.00000000000000
|
||||||
|
vt 0.55555558204651 -0.25000000000000 0.00000000000000
|
||||||
|
vt 0.44444444775581 -0.12500000000000 0.00000000000000
|
||||||
|
vt 0.55555558204651 -0.12500000000000 0.00000000000000
|
||||||
|
vt 0.44444444775581 -0.87448954582214 0.00000000000000
|
||||||
|
vt 0.55555558204651 -0.87448954582214 0.00000000000000
|
||||||
|
vt 0.44444444775581 -0.74918210506439 0.00000000000000
|
||||||
|
vt 0.55555558204651 -0.74918210506439 0.00000000000000
|
||||||
|
vt 0.44444444775581 -0.62404942512512 0.00000000000000
|
||||||
|
vt 0.55555558204651 -0.62404942512512 0.00000000000000
|
||||||
|
vt 0.44444444775581 -0.49906313419342 0.00000000000000
|
||||||
|
vt 0.55555558204651 -0.49906313419342 0.00000000000000
|
||||||
|
vt 0.66666668653488 -0.50000000000000 0.00000000000000
|
||||||
|
vt 0.66666668653488 -0.37500000000000 0.00000000000000
|
||||||
|
vt 0.77777779102325 -0.37500000000000 0.00000000000000
|
||||||
|
vt 0.77777779102325 -0.50000000000000 0.00000000000000
|
||||||
|
vt 0.66666668653488 -0.25000000000000 0.00000000000000
|
||||||
|
vt 0.77777779102325 -0.25000000000000 0.00000000000000
|
||||||
|
vt 0.66666668653488 -0.12500000000000 0.00000000000000
|
||||||
|
vt 0.77777779102325 -0.12500000000000 0.00000000000000
|
||||||
|
vt 0.00000000000000 -0.50000000000000 0.00000000000000
|
||||||
|
vt 0.00000000000000 -0.37500000000000 0.00000000000000
|
||||||
|
vt 0.11111111193895 -0.37500000000000 0.00000000000000
|
||||||
|
vt 0.11111111193895 -0.50000000000000 0.00000000000000
|
||||||
|
vt 0.00000000000000 -0.25000000000000 0.00000000000000
|
||||||
|
vt 0.11111111193895 -0.25000000000000 0.00000000000000
|
||||||
|
vt 0.00000000000000 -0.12500000000000 0.00000000000000
|
||||||
|
vt 0.11111111193895 -0.12500000000000 0.00000000000000
|
||||||
|
vt 0.00000000000000 -0.87448954582214 0.00000000000000
|
||||||
|
vt 0.11111111193895 -0.87448954582214 0.00000000000000
|
||||||
|
vt 0.00000000000000 -0.74918210506439 0.00000000000000
|
||||||
|
vt 0.11111111193895 -0.74918210506439 0.00000000000000
|
||||||
|
vt 0.00000000000000 -0.62404942512512 0.00000000000000
|
||||||
|
vt 0.11111111193895 -0.62404942512512 0.00000000000000
|
||||||
|
vt 0.00000000000000 -0.49906313419342 0.00000000000000
|
||||||
|
vt 0.11111111193895 -0.49906313419342 0.00000000000000
|
||||||
|
vt 0.00000000000000 -0.37419420480728 0.00000000000000
|
||||||
|
vt 0.11111111193895 -0.37419420480728 0.00000000000000
|
||||||
|
vt 0.00000000000000 -0.24941366910934 0.00000000000000
|
||||||
|
vt 0.11111111193895 -0.24941366910934 0.00000000000000
|
||||||
|
vt 0.00000000000000 -0.12469206750393 0.00000000000000
|
||||||
|
vt 0.11111111193895 -0.12469206750393 0.00000000000000
|
||||||
|
vt 0.05555555596948 -0.00000000000000 0.00000000000000
|
||||||
|
vt 0.44444444775581 -0.37419420480728 0.00000000000000
|
||||||
|
vt 0.55555558204651 -0.37419420480728 0.00000000000000
|
||||||
|
vt 0.44444444775581 -0.24941366910934 0.00000000000000
|
||||||
|
vt 0.55555558204651 -0.24941366910934 0.00000000000000
|
||||||
|
vt 0.44444444775581 -0.12469206750393 0.00000000000000
|
||||||
|
vt 0.55555558204651 -0.12469206750393 0.00000000000000
|
||||||
|
vt 0.50000000000000 -0.00000000000000 0.00000000000000
|
||||||
|
vt 0.66666668653488 -0.87448954582214 0.00000000000000
|
||||||
|
vt 0.77777779102325 -0.87448954582214 0.00000000000000
|
||||||
|
vt 0.66666668653488 -0.74918210506439 0.00000000000000
|
||||||
|
vt 0.77777779102325 -0.74918210506439 0.00000000000000
|
||||||
|
vt 0.66666668653488 -0.62404942512512 0.00000000000000
|
||||||
|
vt 0.77777779102325 -0.62404942512512 0.00000000000000
|
||||||
|
vt 0.66666668653488 -0.49906313419342 0.00000000000000
|
||||||
|
vt 0.77777779102325 -0.49906313419342 0.00000000000000
|
||||||
|
vt 0.66666668653488 -0.37419420480728 0.00000000000000
|
||||||
|
vt 0.77777779102325 -0.37419420480728 0.00000000000000
|
||||||
|
vt 0.66666668653488 -0.24941366910934 0.00000000000000
|
||||||
|
vt 0.77777779102325 -0.24941366910934 0.00000000000000
|
||||||
|
vt 0.66666668653488 -0.12469206750393 0.00000000000000
|
||||||
|
vt 0.77777779102325 -0.12469206750393 0.00000000000000
|
||||||
|
vt 0.72222220897675 -0.00000000000000 0.00000000000000
|
||||||
|
vt 0.22222222387791 -0.37500000000000 0.00000000000000
|
||||||
|
vt 0.22222222387791 -0.50000000000000 0.00000000000000
|
||||||
|
vt 0.22222222387791 -0.25000000000000 0.00000000000000
|
||||||
|
vt 0.22222222387791 -0.12500000000000 0.00000000000000
|
||||||
|
vt 0.22222222387791 -0.87448954582214 0.00000000000000
|
||||||
|
vt 0.22222222387791 -0.74918210506439 0.00000000000000
|
||||||
|
vt 0.22222222387791 -0.62404942512512 0.00000000000000
|
||||||
|
vt 0.22222222387791 -0.49906313419342 0.00000000000000
|
||||||
|
vt 0.22222222387791 -0.37419420480728 0.00000000000000
|
||||||
|
vt 0.22222222387791 -0.24941366910934 0.00000000000000
|
||||||
|
vt 0.22222222387791 -0.12469206750393 0.00000000000000
|
||||||
|
vt 0.16666667163372 -0.00000000000000 0.00000000000000
|
||||||
|
vt 0.88888889551163 -0.87448954582214 0.00000000000000
|
||||||
|
vt 1.00000000000000 -0.87448954582214 0.00000000000000
|
||||||
|
vt 0.88888889551163 -0.74918210506439 0.00000000000000
|
||||||
|
vt 1.00000000000000 -0.74918210506439 0.00000000000000
|
||||||
|
vt 0.88888889551163 -0.62404942512512 0.00000000000000
|
||||||
|
vt 1.00000000000000 -0.62404942512512 0.00000000000000
|
||||||
|
vt 0.88888889551163 -0.49906313419342 0.00000000000000
|
||||||
|
vt 1.00000000000000 -0.49906313419342 0.00000000000000
|
||||||
|
vt 0.88888889551163 -0.37419420480728 0.00000000000000
|
||||||
|
vt 1.00000000000000 -0.37419420480728 0.00000000000000
|
||||||
|
vt 0.88888889551163 -0.24941366910934 0.00000000000000
|
||||||
|
vt 1.00000000000000 -0.24941366910934 0.00000000000000
|
||||||
|
vt 0.88888889551163 -0.12469206750393 0.00000000000000
|
||||||
|
vt 1.00000000000000 -0.12469206750393 0.00000000000000
|
||||||
|
vt 0.94444441795349 -0.00000000000000 0.00000000000000
|
||||||
|
vt 0.88888889551163 -0.37500000000000 0.00000000000000
|
||||||
|
vt 0.88888889551163 -0.50000000000000 0.00000000000000
|
||||||
|
vt 0.88888889551163 -0.25000000000000 0.00000000000000
|
||||||
|
vt 0.88888889551163 -0.12500000000000 0.00000000000000
|
||||||
|
vt 0.33333334326744 -0.37500000000000 0.00000000000000
|
||||||
|
vt 0.33333334326744 -0.25000000000000 0.00000000000000
|
||||||
|
vt 0.33333334326744 -0.12500000000000 0.00000000000000
|
||||||
|
vt 0.33333334326744 -0.50000000000000 0.00000000000000
|
||||||
|
vt 0.33333334326744 -0.87448954582214 0.00000000000000
|
||||||
|
vt 0.33333334326744 -0.74918210506439 0.00000000000000
|
||||||
|
vt 0.33333334326744 -0.62404942512512 0.00000000000000
|
||||||
|
vt 0.33333334326744 -0.49906313419342 0.00000000000000
|
||||||
|
vt 0.33333334326744 -0.37419420480728 0.00000000000000
|
||||||
|
vt 0.33333334326744 -0.24941366910934 0.00000000000000
|
||||||
|
vt 0.33333334326744 -0.12469206750393 0.00000000000000
|
||||||
|
vt 0.27777779102325 -0.00000000000000 0.00000000000000
|
||||||
|
vt 0.83333331346512 -0.00000000000000 0.00000000000000
|
||||||
|
vt 0.38888889551163 -0.00000000000000 0.00000000000000
|
||||||
|
vt 0.61111110448837 -0.00000000000000 0.00000000000000
|
||||||
|
vt 1.00000000000000 -0.37500000000000 0.00000000000000
|
||||||
|
vt 1.00000000000000 -0.50000000000000 0.00000000000000
|
||||||
|
vt 1.00000000000000 -0.25000000000000 0.00000000000000
|
||||||
|
vt 1.00000000000000 -0.12500000000000 0.00000000000000
|
||||||
|
vt 0.93969261646271 -0.22668159008026 0.00000000000000
|
||||||
|
vt 0.06030737981200 -0.22668159008026 0.00000000000000
|
||||||
|
vt 0.17364817857742 -0.87938523292542 0.00000000000000
|
||||||
|
vt 1.00000000000000 -0.57397794723511 0.00000000000000
|
||||||
|
vt 0.67364817857742 -0.00000000000000 0.00000000000000
|
||||||
|
vt 0.32635182142258 -0.00000000000000 0.00000000000000
|
||||||
|
vt 0.00000000000000 -0.57397794723511 0.00000000000000
|
||||||
|
vt 0.50000000000000 -1.00000000000000 0.00000000000000
|
||||||
|
vt 0.82635182142258 -0.87938523292542 0.00000000000000
|
||||||
|
# 128 texture coordinates
|
||||||
|
|
||||||
|
o Oil:Tank
|
||||||
|
usemtl Mat.2
|
||||||
|
f 135/21/4 136/22/4 64/23/4 56/24/4
|
||||||
|
f 136/22/4 137/25/4 77/26/4 64/23/4
|
||||||
|
f 137/25/4 138/27/4 78/28/4 77/26/4
|
||||||
|
f 138/27/4 30/3/4 79/13/4 78/28/4
|
||||||
|
f 30/4/10 38/29/10 80/30/10 79/14/10
|
||||||
|
f 60/31/12 83/33/12 82/34/12 81/32/12
|
||||||
|
f 35/37/6 36/38/6 86/39/6 85/40/6
|
||||||
|
f 36/38/6 37/41/6 87/42/6 86/39/6
|
||||||
|
f 37/41/6 39/43/6 104/44/6 87/42/6
|
||||||
|
f 39/43/6 40/18/6 105/10/6 104/44/6
|
||||||
|
f 42/45/14 43/46/14 66/47/14 65/48/14
|
||||||
|
f 43/46/14 44/49/14 67/50/14 66/47/14
|
||||||
|
f 44/49/14 45/51/14 68/52/14 67/50/14
|
||||||
|
f 45/51/14 46/6/14 69/7/14 68/52/14
|
||||||
|
f 46/5/15 47/53/15 70/54/15 69/8/15
|
||||||
|
f 48/55/17 49/57/17 72/58/17 71/56/17
|
||||||
|
f 40/17/28 41/75/28 107/76/28 105/9/28
|
||||||
|
f 57/77/30 58/79/30 109/80/30 108/78/30
|
||||||
|
f 65/48/36 66/47/36 89/90/36 88/91/36
|
||||||
|
f 66/47/36 67/50/36 90/92/36 89/90/36
|
||||||
|
f 67/50/36 68/52/36 91/93/36 90/92/36
|
||||||
|
f 68/52/36 69/7/36 92/15/36 91/93/36
|
||||||
|
f 69/8/37 70/54/37 93/94/37 92/16/37
|
||||||
|
f 71/56/39 72/58/39 95/96/39 94/95/39
|
||||||
|
f 55/12/45 123/102/45 47/103/45 46/20/45
|
||||||
|
f 124/104/47 125/106/47 49/107/47 48/105/47
|
||||||
|
f 85/40/53 86/39/53 33/117/53 32/118/53
|
||||||
|
f 86/39/53 87/42/53 34/119/53 33/117/53
|
||||||
|
f 87/42/53 104/44/53 54/120/53 34/119/53
|
||||||
|
f 104/44/53 105/10/53 55/11/53 54/120/53
|
||||||
|
f 166/121/54 167/90/54 168/92/54 169/122/54 170/122/55 175/92/55 174/93/55 173/123/55 172/123/55 171/93/55
|
||||||
|
f 1 1 1
|
||||||
|
f 1 1 1
|
||||||
|
f 1 1 1
|
||||||
|
f 92/16/56 93/94/56 116/125/56 115/1/56
|
||||||
|
f 94/95/58 95/96/58 118/127/58 117/126/58
|
||||||
|
f 181/24/7 182/23/7 183/38/7 184/37/7 185/38/7 180/23/7 179/26/7 178/41/7 177/26/7 176/28/7
|
||||||
|
f 1 1 1
|
||||||
|
f 1 1 1
|
||||||
|
f 1 1 1
|
||||||
|
f 105/9/64 107/76/64 123/102/64 55/12/64
|
||||||
|
f 108/78/66 109/80/66 125/106/66 124/104/66
|
||||||
|
f 111/124/72 112/121/72 136/22/72 135/21/72
|
||||||
|
f 112/121/72 113/122/72 137/25/72 136/22/72
|
||||||
|
f 113/122/72 114/123/72 138/27/72 137/25/72
|
||||||
|
f 114/123/72 115/2/72 30/3/72 138/27/72
|
||||||
|
f 115/1/73 116/125/73 38/29/73 30/4/73
|
||||||
|
f 117/126/75 118/127/75 83/33/75 60/31/75
|
||||||
|
f 79/14/81 80/30/81 41/75/81 40/17/81
|
||||||
|
f 81/32/83 82/34/83 58/79/83 57/77/83
|
||||||
|
f 186/118/89 187/117/89 188/136/89 194/137/89 195/136/90 193/117/90 192/119/90 191/138/90 190/119/90 189/120/90
|
||||||
|
f 1 1 1
|
||||||
|
f 1 1 1
|
||||||
|
f 1 1 1
|
||||||
|
f 35/140/91 85/141/91 32/142/91 42/143/91 65/141/91 88/140/91 111/144/91 135/145/91 56/141/91
|
||||||
|
f 1 1 1
|
||||||
|
f 1 1 1
|
||||||
|
f 1 1 1
|
||||||
|
f 38/6/92 139/19/92 147/20/92 80/5/92
|
||||||
|
f 81/32/93 148/32/93 144/31/93 60/31/93
|
||||||
|
f 47/6/94 141/19/94 145/20/94 70/5/94
|
||||||
|
f 71/56/95 146/56/95 142/55/95 48/55/95
|
||||||
|
f 41/6/96 140/19/96 151/20/96 107/5/96
|
||||||
|
f 108/78/97 152/78/97 143/77/97 57/77/97
|
||||||
|
f 70/6/98 145/19/98 149/20/98 93/5/98
|
||||||
|
f 94/95/99 150/95/99 146/56/99 71/56/99
|
||||||
|
f 123/6/100 155/19/100 141/20/100 47/5/100
|
||||||
|
f 48/105/101 142/105/101 156/104/101 124/104/101
|
||||||
|
f 93/6/102 149/19/102 153/20/102 116/5/102
|
||||||
|
f 117/126/103 154/126/103 150/95/103 94/95/103
|
||||||
|
f 107/6/104 151/19/104 155/20/104 123/5/104
|
||||||
|
f 124/104/105 156/104/105 152/78/105 108/78/105
|
||||||
|
f 116/6/106 153/19/106 139/20/106 38/5/106
|
||||||
|
f 60/31/107 144/31/107 154/126/107 117/126/107
|
||||||
|
f 80/6/108 147/19/108 140/20/108 41/5/108
|
||||||
|
f 57/77/109 143/77/109 148/32/109 81/32/109
|
||||||
|
f 83/6/110 161/19/110 160/20/110 82/5/110
|
||||||
|
f 49/6/111 157/19/111 159/20/111 72/5/111
|
||||||
|
f 58/6/112 158/19/112 163/20/112 109/5/112
|
||||||
|
f 72/6/113 159/19/113 162/20/113 95/5/113
|
||||||
|
f 125/6/114 165/19/114 157/20/114 49/5/114
|
||||||
|
f 95/6/115 162/19/115 164/20/115 118/5/115
|
||||||
|
f 109/6/116 163/19/116 165/20/116 125/5/116
|
||||||
|
f 118/6/117 164/19/117 161/20/117 83/5/117
|
||||||
|
f 82/6/118 160/19/118 158/20/118 58/5/118
|
||||||
|
f 88/6/119 166/19/119 171/20/119 111/5/119
|
||||||
|
f 111/5/120 171/6/121 172/19/121 173/20/120 174/20/120 175/20/120 115/5/120 114/5/120 113/5/120 112/20/120
|
||||||
|
f 1 1 1
|
||||||
|
f 1 1 1
|
||||||
|
f 1 1 1
|
||||||
|
f 115/6/122 175/19/122 170/20/122 92/5/122
|
||||||
|
f 92/5/123 170/6/123 169/19/123 168/20/123 167/5/123 166/20/123 88/20/123 89/5/123 90/20/123 91/20/123
|
||||||
|
f 1 1 1
|
||||||
|
f 1 1 1
|
||||||
|
f 1 1 1
|
||||||
|
f 56/6/91 181/19/91 176/20/91 35/5/91
|
||||||
|
f 35/5/124 176/6/124 177/19/124 178/20/124 179/20/124 180/20/124 40/5/124 39/5/124 37/5/124 36/20/124
|
||||||
|
f 1 1 1
|
||||||
|
f 1 1 1
|
||||||
|
f 1 1 1
|
||||||
|
f 40/6/125 180/19/125 185/20/125 79/5/125
|
||||||
|
f 79/28/126 185/6/126 184/19/126 183/28/126 182/28/126 181/28/126 56/26/126 64/26/126 77/26/126 78/20/126
|
||||||
|
f 1 1 1
|
||||||
|
f 1 1 1
|
||||||
|
f 1 1 1
|
||||||
|
f 32/6/91 186/19/91 189/20/91 42/5/91
|
||||||
|
f 42/6/127 189/19/127 190/20/127 191/5/127 192/20/127 193/20/127 46/5/127 45/5/127 44/5/127 43/20/127
|
||||||
|
f 1 1 1
|
||||||
|
f 1 1 1
|
||||||
|
f 1 1 1
|
||||||
|
f 46/6/128 193/19/128 195/20/128 55/5/128
|
||||||
|
f 55/6/129 195/19/129 194/20/129 188/5/129 187/5/130 186/20/130 32/20/130 33/5/130 34/20/130 54/20/130
|
||||||
|
f 1 1 1
|
||||||
|
f 1 1 1
|
||||||
|
f 1 1 1
|
||||||
|
|
||||||
|
usemtl Mat.1
|
||||||
|
f 139/29/11 144/31/11 148/32/11 147/30/11
|
||||||
|
f 161/33/13 84/35/13 100/36/13 160/34/13
|
||||||
|
f 141/53/16 142/55/16 146/56/16 145/54/16
|
||||||
|
f 157/57/18 50/59/18 73/60/18 159/58/18
|
||||||
|
f 50/59/19 51/61/19 74/62/19 73/60/19
|
||||||
|
f 51/61/20 52/63/20 75/64/20 74/62/20
|
||||||
|
f 52/63/21 53/65/21 76/66/21 75/64/21
|
||||||
|
f 53/65/22 31/67/22 76/66/22
|
||||||
|
f 84/35/24 106/68/24 101/69/24 100/36/24
|
||||||
|
f 106/68/25 126/70/25 102/71/25 101/69/25
|
||||||
|
f 126/70/26 130/72/26 103/73/26 102/71/26
|
||||||
|
f 130/72/27 31/74/27 103/73/27
|
||||||
|
f 140/75/29 143/77/29 152/78/29 151/76/29
|
||||||
|
f 158/79/31 59/81/31 110/82/31 163/80/31
|
||||||
|
f 59/81/32 61/83/32 127/84/32 110/82/32
|
||||||
|
f 61/83/33 62/85/33 128/86/33 127/84/33
|
||||||
|
f 62/85/34 63/87/34 129/88/34 128/86/34
|
||||||
|
f 63/87/35 31/89/35 129/88/35
|
||||||
|
f 145/54/38 146/56/38 150/95/38 149/94/38
|
||||||
|
f 159/58/40 73/60/40 96/97/40 162/96/40
|
||||||
|
f 73/60/41 74/62/41 97/98/41 96/97/41
|
||||||
|
f 74/62/42 75/64/42 98/99/42 97/98/42
|
||||||
|
f 75/64/43 76/66/43 99/100/43 98/99/43
|
||||||
|
f 76/66/44 31/101/44 99/100/44
|
||||||
|
f 155/102/46 156/104/46 142/105/46 141/103/46
|
||||||
|
f 165/106/48 131/108/48 50/109/48 157/107/48
|
||||||
|
f 131/108/49 132/110/49 51/111/49 50/109/49
|
||||||
|
f 132/110/50 133/112/50 52/113/50 51/111/50
|
||||||
|
f 133/112/51 134/114/51 53/115/51 52/113/51
|
||||||
|
f 134/114/52 31/116/52 53/115/52
|
||||||
|
f 149/94/57 150/95/57 154/126/57 153/125/57
|
||||||
|
f 162/96/59 96/97/59 119/128/59 164/127/59
|
||||||
|
f 96/97/60 97/98/60 120/129/60 119/128/60
|
||||||
|
f 97/98/61 98/99/61 121/130/61 120/129/61
|
||||||
|
f 98/99/62 99/100/62 122/131/62 121/130/62
|
||||||
|
f 99/100/63 31/132/63 122/131/63
|
||||||
|
f 151/76/65 152/78/65 156/104/65 155/102/65
|
||||||
|
f 163/80/67 110/82/67 131/108/67 165/106/67
|
||||||
|
f 110/82/68 127/84/68 132/110/68 131/108/68
|
||||||
|
f 127/84/69 128/86/69 133/112/69 132/110/69
|
||||||
|
f 128/86/70 129/88/70 134/114/70 133/112/70
|
||||||
|
f 129/88/71 31/133/71 134/114/71
|
||||||
|
f 153/125/74 154/126/74 144/31/74 139/29/74
|
||||||
|
f 164/127/76 119/128/76 84/35/76 161/33/76
|
||||||
|
f 119/128/77 120/129/77 106/68/77 84/35/77
|
||||||
|
f 120/129/78 121/130/78 126/70/78 106/68/78
|
||||||
|
f 121/130/79 122/131/79 130/72/79 126/70/79
|
||||||
|
f 122/131/80 31/134/80 130/72/80
|
||||||
|
f 147/30/82 148/32/82 143/77/82 140/75/82
|
||||||
|
f 160/34/84 100/36/84 59/81/84 158/79/84
|
||||||
|
f 100/36/85 101/69/85 61/83/85 59/81/85
|
||||||
|
f 101/69/86 102/71/86 62/85/86 61/83/86
|
||||||
|
f 102/71/87 103/73/87 63/87/87 62/85/87
|
||||||
|
f 103/73/88 31/135/88 63/87/88
|
||||||
|
|
||||||
|
After Width: | Height: | Size: 58 KiB |
@@ -0,0 +1,134 @@
|
|||||||
|
newmtl initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.22 0.22 0.22
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.32 0.25
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert3SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.12 0.12 0.12
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.10 0.05 0.02
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert3SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.12 0.12 0.12
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.12 0.12 0.12
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG2
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd ZWAARD.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.10 0.05 0.02
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert5SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.10 0.05 0.02
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert5SG2
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd HANDVAT.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.12 0.12 0.12
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert4SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.12 0.12 0.12
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert4SG2
|
||||||
|
illum 4
|
||||||
|
Kd 0.12 0.12 0.12
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert4SG3
|
||||||
|
illum 4
|
||||||
|
Kd 0.12 0.12 0.12
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.10 0.05 0.02
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert5SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.10 0.05 0.02
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert5SG2
|
||||||
|
illum 4
|
||||||
|
Kd 0.10 0.05 0.02
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert5SG3
|
||||||
|
illum 4
|
||||||
|
Kd 0.10 0.05 0.02
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.12 0.12 0.12
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__pasted__lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.10 0.05 0.02
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,134 @@
|
|||||||
|
newmtl initialShadingGroup
|
||||||
|
illum 4
|
||||||
|
Kd 0.22 0.22 0.22
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert2SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.50 0.32 0.25
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert3SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.12 0.12 0.12
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.10 0.05 0.02
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert3SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.45 0.45 0.45
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.12 0.12 0.12
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.12 0.12 0.12
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert4SG2
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd ZWAARD.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.10 0.05 0.02
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert5SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.10 0.05 0.02
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__lambert5SG2
|
||||||
|
illum 4
|
||||||
|
Kd 0.00 0.00 0.00
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
map_Kd HANDVAT.png
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.12 0.12 0.12
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert4SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.12 0.12 0.12
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert4SG2
|
||||||
|
illum 4
|
||||||
|
Kd 0.12 0.12 0.12
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert4SG3
|
||||||
|
illum 4
|
||||||
|
Kd 0.12 0.12 0.12
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.10 0.05 0.02
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert5SG1
|
||||||
|
illum 4
|
||||||
|
Kd 0.10 0.05 0.02
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert5SG2
|
||||||
|
illum 4
|
||||||
|
Kd 0.10 0.05 0.02
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__lambert5SG3
|
||||||
|
illum 4
|
||||||
|
Kd 0.10 0.05 0.02
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__pasted__lambert4SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.12 0.12 0.12
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
newmtl pasted__pasted__pasted__lambert5SG
|
||||||
|
illum 4
|
||||||
|
Kd 0.10 0.05 0.02
|
||||||
|
Ka 0.00 0.00 0.00
|
||||||
|
Tf 1.00 1.00 1.00
|
||||||
|
Ni 1.00
|
||||||
|
After Width: | Height: | Size: 3.0 MiB |
@@ -0,0 +1,18 @@
|
|||||||
|
# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware
|
||||||
|
# File Created: 04.05.2010 13:43:14
|
||||||
|
|
||||||
|
newmtl shipA_mat
|
||||||
|
Ns 10.0000
|
||||||
|
Ni 1.5000
|
||||||
|
d 1.0000
|
||||||
|
Tr 0.0000
|
||||||
|
Tf 1.0000 1.0000 1.0000
|
||||||
|
illum 2
|
||||||
|
Ka 0.0000 0.0000 0.0000
|
||||||
|
Kd 0.5880 0.5880 0.5880
|
||||||
|
Ks 0.0000 0.0000 0.0000
|
||||||
|
Ke 0.0000 0.0000 0.0000
|
||||||
|
map_Ka s_1024_C.tga
|
||||||
|
map_Kd s_1024_C.tga
|
||||||
|
map_Ke s_1024_I.tga
|
||||||
|
map_bump s_1024_N.tga
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# Created by Every File Explorer
|
||||||
|
|
||||||
|
newmtl GessoMat00
|
||||||
|
Ka 1 1 1
|
||||||
|
Kd 1 1 1
|
||||||
|
Ks 0.05098039 0.05098039 0.05098039
|
||||||
|
d 1
|
||||||
|
map_Kd enemy_xx01_Gesso_dif.png
|
||||||
|
|
||||||
|
After Width: | Height: | Size: 606 B |
|
After Width: | Height: | Size: 345 B |