3D view now shows lights and added double spinbox
This commit is contained in:
@ -39,8 +39,6 @@ qt_add_qml_module(appscheincommander
|
|||||||
icons/nebelmaschine.png
|
icons/nebelmaschine.png
|
||||||
icons/rgbstrahler.png
|
icons/rgbstrahler.png
|
||||||
ui-icons/MaterialIcons-Regular.ttf
|
ui-icons/MaterialIcons-Regular.ttf
|
||||||
models/cube.obj
|
|
||||||
textures/cubetexture.png
|
|
||||||
QML_FILES
|
QML_FILES
|
||||||
main.qml
|
main.qml
|
||||||
HomePage.qml
|
HomePage.qml
|
||||||
@ -63,6 +61,7 @@ qt_add_qml_module(appscheincommander
|
|||||||
AnimatedInputPanel.qml
|
AnimatedInputPanel.qml
|
||||||
AnimatedStackView.qml
|
AnimatedStackView.qml
|
||||||
Devices3dView.qml
|
Devices3dView.qml
|
||||||
|
DoubleSpinBox.qml
|
||||||
)
|
)
|
||||||
|
|
||||||
add_definitions(-DCMAKE_PROJECT_VERSION=${CMAKE_PROJECT_VERSION})
|
add_definitions(-DCMAKE_PROJECT_VERSION=${CMAKE_PROJECT_VERSION})
|
||||||
|
@ -3,63 +3,13 @@ import QtDataVisualization
|
|||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
|
|
||||||
property int selectedAxisLabel: -1
|
property int selectedAxisLabel: -1
|
||||||
property real dragSpeedModifier: 100.0
|
property real dragSpeedModifier: 25.0
|
||||||
property int currentMouseX: -1
|
property int currentMouseX: -1
|
||||||
property int currentMouseY: -1
|
property int currentMouseY: -1
|
||||||
property int previousMouseX: -1
|
property int previousMouseX: -1
|
||||||
property int previousMouseY: -1
|
property int previousMouseY: -1
|
||||||
|
property alias model: itemModelScatterDataProxy.itemModel
|
||||||
ListModel {
|
|
||||||
id: graphModel
|
|
||||||
ListElement{ xPos: 0.0; yPos: 0.0; zPos: 0.0; rotation: "@0,0,0,0" }
|
|
||||||
ListElement{ xPos: 1.0; yPos: 1.0; zPos: 1.0; rotation: "@45,1,1,1" }
|
|
||||||
}
|
|
||||||
|
|
||||||
Timer {
|
|
||||||
id: dataTimer
|
|
||||||
interval: 1
|
|
||||||
running: true
|
|
||||||
repeat: true
|
|
||||||
property bool isIncreasing: true
|
|
||||||
property real rotationAngle: 0
|
|
||||||
|
|
||||||
function generateQuaternion() {
|
|
||||||
return "@" + Math.random() * 360 + "," + Math.random() + ","
|
|
||||||
+ Math.random() + "," + Math.random()
|
|
||||||
}
|
|
||||||
|
|
||||||
function appendRow() {
|
|
||||||
graphModel.append({"xPos": Math.random(),
|
|
||||||
"yPos": Math.random(),
|
|
||||||
"zPos": Math.random(),
|
|
||||||
"rotation": generateQuaternion()
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//! [10]
|
|
||||||
onTriggered: {
|
|
||||||
rotationAngle = rotationAngle + 1
|
|
||||||
qtCube.setRotationAxisAndAngle(Qt.vector3d(1,0,1), rotationAngle)
|
|
||||||
//! [10]
|
|
||||||
scatterSeries.setMeshAxisAndAngle(Qt.vector3d(1,1,1), rotationAngle)
|
|
||||||
if (isIncreasing) {
|
|
||||||
for (var i = 0; i < 10; i++)
|
|
||||||
appendRow()
|
|
||||||
if (graphModel.count > 2002) {
|
|
||||||
scatterGraph.theme = isabelleTheme
|
|
||||||
isIncreasing = false
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
graphModel.remove(2, 10);
|
|
||||||
if (graphModel.count == 2) {
|
|
||||||
scatterGraph.theme = dynamicColorTheme
|
|
||||||
isIncreasing = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ThemeColor {
|
ThemeColor {
|
||||||
id: dynamicColor
|
id: dynamicColor
|
||||||
@ -108,6 +58,12 @@ Item {
|
|||||||
scene.activeCamera.yRotation: 45.0
|
scene.activeCamera.yRotation: 45.0
|
||||||
scene.activeCamera.xRotation: 45.0
|
scene.activeCamera.xRotation: 45.0
|
||||||
scene.activeCamera.zoomLevel: 75.0
|
scene.activeCamera.zoomLevel: 75.0
|
||||||
|
axisX.min: -10
|
||||||
|
axisX.max: 10
|
||||||
|
axisY.min: -10
|
||||||
|
axisY.max: 10
|
||||||
|
axisZ.min: -10
|
||||||
|
axisZ.max: 10
|
||||||
|
|
||||||
Scatter3DSeries {
|
Scatter3DSeries {
|
||||||
id: scatterSeries
|
id: scatterSeries
|
||||||
@ -115,25 +71,13 @@ Item {
|
|||||||
mesh: Abstract3DSeries.MeshCube
|
mesh: Abstract3DSeries.MeshCube
|
||||||
|
|
||||||
ItemModelScatterDataProxy {
|
ItemModelScatterDataProxy {
|
||||||
itemModel: graphModel
|
id: itemModelScatterDataProxy
|
||||||
xPosRole: "xPos"
|
xPosRole: "positionX"
|
||||||
yPosRole: "yPos"
|
yPosRole: "positionY"
|
||||||
zPosRole: "zPos"
|
zPosRole: "positionZ"
|
||||||
rotationRole: "rotation"
|
//rotationRole: "rotation"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//! [9]
|
|
||||||
customItemList: [
|
|
||||||
Custom3DItem {
|
|
||||||
id: qtCube
|
|
||||||
meshFile: ":/scheincommander/models/cube.obj"
|
|
||||||
textureFile: ":/scheincommander/textures/cubetexture.png"
|
|
||||||
position: Qt.vector3d(0.65,0.35,0.65)
|
|
||||||
scaling: Qt.vector3d(0.3,0.3,0.3)
|
|
||||||
}
|
|
||||||
]
|
|
||||||
//! [9]
|
|
||||||
//! [5]
|
|
||||||
onSelectedElementChanged: {
|
onSelectedElementChanged: {
|
||||||
if (selectedElement >= AbstractGraph3D.ElementAxisXLabel
|
if (selectedElement >= AbstractGraph3D.ElementAxisXLabel
|
||||||
&& selectedElement <= AbstractGraph3D.ElementAxisZLabel)
|
&& selectedElement <= AbstractGraph3D.ElementAxisZLabel)
|
||||||
@ -141,36 +85,27 @@ Item {
|
|||||||
else
|
else
|
||||||
selectedAxisLabel = -1
|
selectedAxisLabel = -1
|
||||||
}
|
}
|
||||||
//! [5]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//! [1]
|
|
||||||
MouseArea {
|
MouseArea {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
hoverEnabled: true
|
hoverEnabled: true
|
||||||
acceptedButtons: Qt.LeftButton
|
acceptedButtons: Qt.LeftButton
|
||||||
//! [1]
|
|
||||||
|
|
||||||
//! [3]
|
|
||||||
onPositionChanged: (mouse)=> {
|
onPositionChanged: (mouse)=> {
|
||||||
currentMouseX = mouse.x;
|
currentMouseX = mouse.x;
|
||||||
currentMouseY = mouse.y;
|
currentMouseY = mouse.y;
|
||||||
//! [3]
|
|
||||||
//! [6]
|
|
||||||
if (pressed && selectedAxisLabel != -1)
|
if (pressed && selectedAxisLabel != -1)
|
||||||
dragAxis();
|
dragAxis();
|
||||||
//! [6]
|
|
||||||
//! [4]
|
|
||||||
previousMouseX = currentMouseX;
|
previousMouseX = currentMouseX;
|
||||||
previousMouseY = currentMouseY;
|
previousMouseY = currentMouseY;
|
||||||
}
|
}
|
||||||
//! [4]
|
|
||||||
|
|
||||||
//! [2]
|
|
||||||
onPressed: (mouse)=> {
|
onPressed: (mouse)=> {
|
||||||
scatterGraph.scene.selectionQueryPosition = Qt.point(mouse.x, mouse.y);
|
scatterGraph.scene.selectionQueryPosition = Qt.point(mouse.x, mouse.y);
|
||||||
}
|
}
|
||||||
//! [2]
|
|
||||||
|
|
||||||
onReleased: {
|
onReleased: {
|
||||||
// We need to clear mouse positions and selected axis, because touch devices cannot
|
// We need to clear mouse positions and selected axis, because touch devices cannot
|
||||||
@ -184,7 +119,6 @@ Item {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//! [7]
|
|
||||||
function dragAxis() {
|
function dragAxis() {
|
||||||
// Do nothing if previous mouse position is uninitialized
|
// Do nothing if previous mouse position is uninitialized
|
||||||
if (previousMouseX === -1)
|
if (previousMouseX === -1)
|
||||||
@ -235,11 +169,10 @@ Item {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//! [7]
|
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
id: rangeToggle
|
id: rangeToggle
|
||||||
width: parent.width / 3 // We're adding 3 buttons and want to divide them equally
|
width: parent.width / 2 // We're adding 3 buttons and want to divide them equally
|
||||||
text: "Use Preset Range"
|
text: "Use Preset Range"
|
||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
property bool autoRange: true
|
property bool autoRange: true
|
||||||
@ -265,10 +198,9 @@ Item {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//! [8]
|
|
||||||
Button {
|
Button {
|
||||||
id: orthoToggle
|
id: orthoToggle
|
||||||
width: parent.width / 3
|
width: parent.width / 2
|
||||||
text: "Display Orthographic"
|
text: "Display Orthographic"
|
||||||
anchors.left: rangeToggle.right
|
anchors.left: rangeToggle.right
|
||||||
onClicked: {
|
onClicked: {
|
||||||
@ -283,13 +215,4 @@ Item {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//! [8]
|
|
||||||
|
|
||||||
Button {
|
|
||||||
id: exitButton
|
|
||||||
width: parent.width / 3
|
|
||||||
text: "Quit"
|
|
||||||
anchors.left: orthoToggle.right
|
|
||||||
onClicked: Qt.quit();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -119,6 +119,8 @@ ColumnLayout {
|
|||||||
Devices3dView {
|
Devices3dView {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
|
|
||||||
|
model: model
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
39
DoubleSpinBox.qml
Normal file
39
DoubleSpinBox.qml
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
|
||||||
|
SpinBox {
|
||||||
|
id: spinbox
|
||||||
|
|
||||||
|
property int decimals: 2
|
||||||
|
property real factor: 100
|
||||||
|
|
||||||
|
property real realFrom: from / factor
|
||||||
|
property real realTo: to / factor
|
||||||
|
property real realValue: value / factor
|
||||||
|
|
||||||
|
from: realFrom * factor
|
||||||
|
to: realTo * factor
|
||||||
|
value: realValue * factor
|
||||||
|
|
||||||
|
stepSize: factor
|
||||||
|
|
||||||
|
signal realValueModified
|
||||||
|
|
||||||
|
onValueModified: {
|
||||||
|
realValue = Qt.binding(function(){ return value / factor; });
|
||||||
|
realValueModified();
|
||||||
|
}
|
||||||
|
|
||||||
|
validator: DoubleValidator {
|
||||||
|
bottom: Math.min(spinbox.from, spinbox.to)
|
||||||
|
top: Math.max(spinbox.from, spinbox.to)
|
||||||
|
}
|
||||||
|
|
||||||
|
textFromValue: function(value, locale) {
|
||||||
|
return Number(value / 100).toLocaleString(locale, 'f', spinbox.decimals)
|
||||||
|
}
|
||||||
|
|
||||||
|
valueFromText: function(text, locale) {
|
||||||
|
return Number.fromLocaleString(locale, text) * 100
|
||||||
|
}
|
||||||
|
}
|
@ -7,15 +7,15 @@ GridLayout {
|
|||||||
|
|
||||||
property vector3d value
|
property vector3d value
|
||||||
onValueChanged: {
|
onValueChanged: {
|
||||||
xBox.value = value.x
|
xBox.realValue = value.x
|
||||||
yBox.value = value.y
|
yBox.realValue = value.y
|
||||||
zBox.value = value.z
|
zBox.realValue = value.z
|
||||||
}
|
}
|
||||||
|
|
||||||
signal valueModified
|
signal valueModified
|
||||||
|
|
||||||
function updateValue() {
|
function updateValue() {
|
||||||
const newValue = Qt.vector3d(xBox.value, yBox.value, zBox.value);
|
const newValue = Qt.vector3d(xBox.realValue, yBox.realValue, zBox.realValue);
|
||||||
console.log(newValue);
|
console.log(newValue);
|
||||||
if (newValue === value)
|
if (newValue === value)
|
||||||
return;
|
return;
|
||||||
@ -27,26 +27,38 @@ GridLayout {
|
|||||||
text: qsTr('x:')
|
text: qsTr('x:')
|
||||||
}
|
}
|
||||||
|
|
||||||
SpinBox {
|
DoubleSpinBox {
|
||||||
id: xBox
|
id: xBox
|
||||||
onValueModified: updateValue()
|
editable: true
|
||||||
|
realFrom: -1000
|
||||||
|
realTo: 1000
|
||||||
|
//stepSize: 0.01
|
||||||
|
onRealValueModified: updateValue()
|
||||||
}
|
}
|
||||||
|
|
||||||
Label {
|
Label {
|
||||||
text: qsTr('y:')
|
text: qsTr('y:')
|
||||||
}
|
}
|
||||||
|
|
||||||
SpinBox {
|
DoubleSpinBox {
|
||||||
id: yBox
|
id: yBox
|
||||||
onValueModified: updateValue()
|
editable: true
|
||||||
|
realFrom: -1000
|
||||||
|
realTo: 1000
|
||||||
|
//stepSize: 0.01
|
||||||
|
onRealValueModified: updateValue()
|
||||||
}
|
}
|
||||||
|
|
||||||
Label {
|
Label {
|
||||||
text: qsTr('z:')
|
text: qsTr('z:')
|
||||||
}
|
}
|
||||||
|
|
||||||
SpinBox {
|
DoubleSpinBox {
|
||||||
id: zBox
|
id: zBox
|
||||||
onValueModified: updateValue()
|
editable: true
|
||||||
|
realFrom: -1000
|
||||||
|
realTo: 1000
|
||||||
|
//stepSize: 0.01
|
||||||
|
onRealValueModified: updateValue()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,10 @@ enum {
|
|||||||
IdRole = Qt::UserRole,
|
IdRole = Qt::UserRole,
|
||||||
DeviceTypeIdRole,
|
DeviceTypeIdRole,
|
||||||
AddressRole,
|
AddressRole,
|
||||||
PositionRole
|
PositionRole,
|
||||||
|
PositionXRole,
|
||||||
|
PositionYRole,
|
||||||
|
PositionZRole
|
||||||
};
|
};
|
||||||
|
|
||||||
void DevicesModel::setController(DmxController *controller)
|
void DevicesModel::setController(DmxController *controller)
|
||||||
@ -111,6 +114,9 @@ QVariant DevicesModel::data(const QModelIndex &index, int role) const
|
|||||||
case DeviceTypeIdRole: return device.deviceTypeId;
|
case DeviceTypeIdRole: return device.deviceTypeId;
|
||||||
case AddressRole: return device.address;
|
case AddressRole: return device.address;
|
||||||
case PositionRole: return device.position;
|
case PositionRole: return device.position;
|
||||||
|
case PositionXRole: return device.position.x();
|
||||||
|
case PositionYRole: return device.position.y();
|
||||||
|
case PositionZRole: return device.position.z();
|
||||||
}
|
}
|
||||||
|
|
||||||
return {};
|
return {};
|
||||||
@ -149,7 +155,10 @@ QMap<int, QVariant> DevicesModel::itemData(const QModelIndex &index) const
|
|||||||
{ IdRole, device.id },
|
{ IdRole, device.id },
|
||||||
{ DeviceTypeIdRole, device.deviceTypeId },
|
{ DeviceTypeIdRole, device.deviceTypeId },
|
||||||
{ AddressRole, device.address },
|
{ AddressRole, device.address },
|
||||||
{ PositionRole, device.position }
|
{ PositionRole, device.position },
|
||||||
|
{ PositionXRole, device.position.x() },
|
||||||
|
{ PositionYRole, device.position.y() },
|
||||||
|
{ PositionZRole, device.position.z() }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -160,7 +169,10 @@ QHash<int, QByteArray> DevicesModel::roleNames() const
|
|||||||
{ IdRole, "id" },
|
{ IdRole, "id" },
|
||||||
{ DeviceTypeIdRole, "deviceTypeId" },
|
{ DeviceTypeIdRole, "deviceTypeId" },
|
||||||
{ AddressRole, "address" },
|
{ AddressRole, "address" },
|
||||||
{ PositionRole, "position" }
|
{ PositionRole, "position" },
|
||||||
|
{ PositionXRole, "positionX" },
|
||||||
|
{ PositionYRole, "positionY" },
|
||||||
|
{ PositionZRole, "positionZ" }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -273,7 +285,7 @@ bool DevicesModel::setData(const QModelIndex &index, const QVariant &value, int
|
|||||||
QMutexLocker locker{&m_controller->mutex()};
|
QMutexLocker locker{&m_controller->mutex()};
|
||||||
device.position = value.value<QVector3D>();
|
device.position = value.value<QVector3D>();
|
||||||
}
|
}
|
||||||
emit dataChanged(index, index, { PositionRole });
|
emit dataChanged(index, index, { PositionRole, PositionXRole, PositionYRole, PositionZRole });
|
||||||
|
|
||||||
disconnect(m_controller, &DmxController::devicePositionChanged,
|
disconnect(m_controller, &DmxController::devicePositionChanged,
|
||||||
this, &DevicesModel::otherDevicePositionChanged);
|
this, &DevicesModel::otherDevicePositionChanged);
|
||||||
@ -458,7 +470,7 @@ void DevicesModel::otherDevicePositionChanged(int row, const QVector3D &position
|
|||||||
}
|
}
|
||||||
|
|
||||||
const auto index = this->index(row);
|
const auto index = this->index(row);
|
||||||
emit dataChanged(index, index, { PositionRole });
|
emit dataChanged(index, index, { PositionRole, PositionXRole, PositionYRole, PositionZRole });
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
@ -9,6 +9,18 @@
|
|||||||
|
|
||||||
#include "projectloader.h"
|
#include "projectloader.h"
|
||||||
|
|
||||||
|
void doFun(auto &y)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
double i{-10};
|
||||||
|
for (auto &x : y.devices)
|
||||||
|
{
|
||||||
|
x.position.setX(i);
|
||||||
|
x.position.setZ(std::sin(i / 2.) * 10.);
|
||||||
|
i += 20./double(y.devices.size());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
DmxController::DmxController(ScheinCommanderSettings &settings, QObject *parent) :
|
DmxController::DmxController(ScheinCommanderSettings &settings, QObject *parent) :
|
||||||
QObject{parent},
|
QObject{parent},
|
||||||
m_settings{settings},
|
m_settings{settings},
|
||||||
@ -168,6 +180,7 @@ DmxController::DmxController(ScheinCommanderSettings &settings, QObject *parent)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
|
doFun(m_lightProject);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DmxController::start()
|
bool DmxController::start()
|
||||||
@ -243,6 +256,8 @@ bool DmxController::loadProject(const QString &name)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
doFun(m_lightProject);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
415
models/cube.obj
415
models/cube.obj
@ -1,415 +0,0 @@
|
|||||||
# Blender v2.66 (sub 0) OBJ File: 'beveled_cube.blend'
|
|
||||||
# www.blender.org
|
|
||||||
v -1.000000 -0.878027 0.878027
|
|
||||||
v -0.978771 -0.929277 0.878027
|
|
||||||
v -0.950975 -0.932562 0.932562
|
|
||||||
v -0.978771 -0.878027 0.929277
|
|
||||||
v -0.932562 -0.950975 0.932562
|
|
||||||
v -0.929277 -0.978771 0.878027
|
|
||||||
v -0.878027 -1.000000 0.878027
|
|
||||||
v -0.878027 -0.978771 0.929277
|
|
||||||
v -0.932562 -0.932562 0.950975
|
|
||||||
v -0.878027 -0.929277 0.978771
|
|
||||||
v -0.878027 -0.878027 1.000000
|
|
||||||
v -0.929277 -0.878027 0.978771
|
|
||||||
v -1.000000 -0.878027 -0.878027
|
|
||||||
v -0.978771 -0.878027 -0.929277
|
|
||||||
v -0.950975 -0.932562 -0.932562
|
|
||||||
v -0.978771 -0.929277 -0.878027
|
|
||||||
v -0.932562 -0.932562 -0.950975
|
|
||||||
v -0.929277 -0.878027 -0.978771
|
|
||||||
v -0.878027 -0.878027 -1.000000
|
|
||||||
v -0.878027 -0.929277 -0.978771
|
|
||||||
v -0.932562 -0.950975 -0.932562
|
|
||||||
v -0.878027 -0.978771 -0.929277
|
|
||||||
v -0.878027 -1.000000 -0.878027
|
|
||||||
v -0.929277 -0.978771 -0.878027
|
|
||||||
v 0.878027 -0.878027 -1.000000
|
|
||||||
v 0.929277 -0.878027 -0.978771
|
|
||||||
v 0.932562 -0.932562 -0.950975
|
|
||||||
v 0.878027 -0.929277 -0.978771
|
|
||||||
v 0.950975 -0.932562 -0.932562
|
|
||||||
v 0.978771 -0.878027 -0.929277
|
|
||||||
v 1.000000 -0.878027 -0.878027
|
|
||||||
v 0.978771 -0.929277 -0.878027
|
|
||||||
v 0.932562 -0.950975 -0.932562
|
|
||||||
v 0.929277 -0.978771 -0.878027
|
|
||||||
v 0.878027 -1.000000 -0.878027
|
|
||||||
v 0.878027 -0.978771 -0.929277
|
|
||||||
v 1.000000 -0.878027 0.878027
|
|
||||||
v 0.978771 -0.878027 0.929277
|
|
||||||
v 0.950975 -0.932562 0.932562
|
|
||||||
v 0.978771 -0.929277 0.878027
|
|
||||||
v 0.932562 -0.932562 0.950975
|
|
||||||
v 0.929277 -0.878027 0.978771
|
|
||||||
v 0.878027 -0.878027 1.000000
|
|
||||||
v 0.878027 -0.929277 0.978771
|
|
||||||
v 0.932562 -0.950975 0.932562
|
|
||||||
v 0.878027 -0.978771 0.929277
|
|
||||||
v 0.878027 -1.000000 0.878027
|
|
||||||
v 0.929277 -0.978771 0.878027
|
|
||||||
v -0.878027 0.878027 1.000000
|
|
||||||
v -0.878027 0.929277 0.978771
|
|
||||||
v -0.932562 0.932562 0.950975
|
|
||||||
v -0.929277 0.878027 0.978771
|
|
||||||
v -0.932562 0.950975 0.932562
|
|
||||||
v -0.878027 0.978771 0.929277
|
|
||||||
v -0.878027 1.000000 0.878027
|
|
||||||
v -0.929277 0.978771 0.878027
|
|
||||||
v -0.950975 0.932562 0.932562
|
|
||||||
v -0.978771 0.929277 0.878027
|
|
||||||
v -1.000000 0.878027 0.878027
|
|
||||||
v -0.978771 0.878027 0.929277
|
|
||||||
v -1.000000 0.878027 -0.878027
|
|
||||||
v -0.978771 0.929277 -0.878027
|
|
||||||
v -0.950975 0.932562 -0.932562
|
|
||||||
v -0.978771 0.878027 -0.929277
|
|
||||||
v -0.932562 0.950975 -0.932562
|
|
||||||
v -0.929277 0.978771 -0.878027
|
|
||||||
v -0.878027 1.000000 -0.878027
|
|
||||||
v -0.878027 0.978771 -0.929277
|
|
||||||
v -0.932562 0.932562 -0.950975
|
|
||||||
v -0.878027 0.929277 -0.978771
|
|
||||||
v -0.878027 0.878027 -1.000000
|
|
||||||
v -0.929277 0.878027 -0.978771
|
|
||||||
v 0.878027 0.878027 -1.000000
|
|
||||||
v 0.878027 0.929277 -0.978771
|
|
||||||
v 0.932562 0.932562 -0.950975
|
|
||||||
v 0.929277 0.878027 -0.978771
|
|
||||||
v 0.932562 0.950975 -0.932562
|
|
||||||
v 0.878027 0.978771 -0.929277
|
|
||||||
v 0.878027 1.000000 -0.878027
|
|
||||||
v 0.929277 0.978771 -0.878027
|
|
||||||
v 0.950975 0.932562 -0.932562
|
|
||||||
v 0.978771 0.929277 -0.878027
|
|
||||||
v 1.000000 0.878027 -0.878027
|
|
||||||
v 0.978771 0.878027 -0.929277
|
|
||||||
v 1.000000 0.878027 0.878027
|
|
||||||
v 0.978771 0.929277 0.878027
|
|
||||||
v 0.950975 0.932562 0.932562
|
|
||||||
v 0.978771 0.878027 0.929277
|
|
||||||
v 0.932562 0.950975 0.932562
|
|
||||||
v 0.929277 0.978771 0.878027
|
|
||||||
v 0.878027 1.000000 0.878027
|
|
||||||
v 0.878027 0.978771 0.929277
|
|
||||||
v 0.932562 0.932562 0.950975
|
|
||||||
v 0.878027 0.929277 0.978771
|
|
||||||
v 0.878027 0.878027 1.000000
|
|
||||||
v 0.929277 0.878027 0.978771
|
|
||||||
vt 0.024513 0.966281
|
|
||||||
vt 0.033719 0.975487
|
|
||||||
vt 0.033719 0.966281
|
|
||||||
vt 0.964639 0.060986
|
|
||||||
vt 0.964639 0.939014
|
|
||||||
vt 0.989386 0.939014
|
|
||||||
vt 0.939014 0.964639
|
|
||||||
vt 0.060986 0.964639
|
|
||||||
vt 0.939014 0.989386
|
|
||||||
vt 0.060986 0.060986
|
|
||||||
vt 0.060986 0.939014
|
|
||||||
vt 0.939014 0.939014
|
|
||||||
vt 0.035361 0.060986
|
|
||||||
vt 0.035361 0.939014
|
|
||||||
vt 0.010614 0.060986
|
|
||||||
vt 0.010614 0.939014
|
|
||||||
vt 0.989386 0.060986
|
|
||||||
vt 0.939014 0.035361
|
|
||||||
vt 0.060986 0.035361
|
|
||||||
vt 0.060986 0.010614
|
|
||||||
vt 0.060986 0.989386
|
|
||||||
vt 0.939014 0.060986
|
|
||||||
vt 0.966281 0.975487
|
|
||||||
vt 0.966281 0.966281
|
|
||||||
vt 0.975487 0.966281
|
|
||||||
vt 0.975487 0.033719
|
|
||||||
vt 0.966281 0.033719
|
|
||||||
vt 0.966281 0.024513
|
|
||||||
vt 0.033719 0.024513
|
|
||||||
vt 0.033719 0.033719
|
|
||||||
vt 0.024513 0.033719
|
|
||||||
vt 0.939014 0.010614
|
|
||||||
vn -0.713187 -0.495651 -0.495651
|
|
||||||
vn -0.495651 -0.495651 -0.713187
|
|
||||||
vn -0.495651 -0.713187 -0.495651
|
|
||||||
vn 0.539384 -0.823450 0.175909
|
|
||||||
vn 0.539384 -0.823450 -0.175909
|
|
||||||
vn 0.823450 -0.539384 -0.175909
|
|
||||||
vn -0.713187 0.495651 -0.495651
|
|
||||||
vn -0.495651 0.713187 -0.495651
|
|
||||||
vn -0.495651 0.495651 -0.713187
|
|
||||||
vn 0.175909 -0.823450 -0.539384
|
|
||||||
vn -0.185644 -0.825892 -0.532365
|
|
||||||
vn 0.175909 -0.539384 -0.823450
|
|
||||||
vn -0.193426 -0.961852 0.193426
|
|
||||||
vn -0.193426 -0.961852 -0.193426
|
|
||||||
vn 0.187689 -0.964110 -0.187689
|
|
||||||
vn -0.532365 -0.185644 0.825892
|
|
||||||
vn -0.532365 0.185644 0.825892
|
|
||||||
vn -0.825892 -0.185644 0.532365
|
|
||||||
vn -0.532365 0.185644 -0.825892
|
|
||||||
vn -0.532365 -0.185644 -0.825892
|
|
||||||
vn -0.825892 0.185644 -0.532365
|
|
||||||
vn 0.823450 0.175909 -0.539384
|
|
||||||
vn 0.823450 -0.175909 -0.539384
|
|
||||||
vn 0.539384 -0.175909 -0.823450
|
|
||||||
vn 0.539384 0.175909 0.823450
|
|
||||||
vn 0.539384 -0.175909 0.823450
|
|
||||||
vn 0.823450 -0.175909 0.539384
|
|
||||||
vn 0.175909 0.823450 0.539384
|
|
||||||
vn -0.185644 0.825892 0.532365
|
|
||||||
vn -0.185644 0.532365 0.825892
|
|
||||||
vn -0.185644 0.825892 -0.532365
|
|
||||||
vn 0.175909 0.823450 -0.539384
|
|
||||||
vn -0.185644 0.532365 -0.825892
|
|
||||||
vn 0.539384 0.823450 -0.175909
|
|
||||||
vn 0.539384 0.823450 0.175909
|
|
||||||
vn 0.823450 0.539384 0.175909
|
|
||||||
vn 0.187689 0.964110 0.187689
|
|
||||||
vn 0.187689 0.964110 -0.187689
|
|
||||||
vn -0.193426 0.961852 -0.193426
|
|
||||||
vn -0.193426 0.193426 -0.961852
|
|
||||||
vn 0.187689 0.187689 -0.964110
|
|
||||||
vn -0.193426 -0.193426 -0.961852
|
|
||||||
vn -0.961852 0.193426 0.193426
|
|
||||||
vn -0.961852 0.193426 -0.193426
|
|
||||||
vn -0.961852 -0.193426 0.193426
|
|
||||||
vn -0.532365 -0.825892 -0.185644
|
|
||||||
vn -0.532365 -0.825892 0.185644
|
|
||||||
vn -0.825892 -0.532365 -0.185644
|
|
||||||
vn 0.498856 0.498856 -0.708701
|
|
||||||
vn 0.498856 0.708701 -0.498856
|
|
||||||
vn 0.708701 0.498856 -0.498856
|
|
||||||
vn 0.964110 0.187689 -0.187689
|
|
||||||
vn 0.964110 0.187689 0.187689
|
|
||||||
vn 0.964110 -0.187689 0.187689
|
|
||||||
vn 0.498856 -0.498856 -0.708701
|
|
||||||
vn 0.708701 -0.498856 -0.498856
|
|
||||||
vn 0.498856 -0.708701 -0.498856
|
|
||||||
vn 0.708701 0.498856 0.498856
|
|
||||||
vn 0.498856 0.708701 0.498856
|
|
||||||
vn 0.498856 0.498856 0.708701
|
|
||||||
vn -0.495651 0.495651 0.713187
|
|
||||||
vn -0.495651 0.713187 0.495651
|
|
||||||
vn -0.713187 0.495651 0.495651
|
|
||||||
vn 0.708701 -0.498856 0.498856
|
|
||||||
vn 0.498856 -0.498856 0.708701
|
|
||||||
vn 0.498856 -0.708701 0.498856
|
|
||||||
vn -0.532365 0.825892 0.185644
|
|
||||||
vn -0.532365 0.825892 -0.185644
|
|
||||||
vn -0.825892 0.532365 0.185644
|
|
||||||
vn 0.187689 0.187689 0.964110
|
|
||||||
vn -0.193426 0.193426 0.961852
|
|
||||||
vn -0.193426 -0.193426 0.961852
|
|
||||||
vn -0.185644 -0.825892 0.532365
|
|
||||||
vn 0.175909 -0.823450 0.539384
|
|
||||||
vn 0.175909 -0.539384 0.823450
|
|
||||||
vn -0.825892 -0.532365 0.185644
|
|
||||||
vn -0.713187 -0.495651 0.495651
|
|
||||||
vn -0.495651 -0.713187 0.495651
|
|
||||||
vn -0.495651 -0.495651 0.713187
|
|
||||||
vn -0.185644 -0.532365 0.825892
|
|
||||||
vn -0.961852 -0.193426 -0.193426
|
|
||||||
vn -0.825892 -0.185644 -0.532365
|
|
||||||
vn 0.187689 -0.187689 -0.964110
|
|
||||||
vn 0.823450 -0.539384 0.175909
|
|
||||||
vn -0.193426 0.961852 0.193426
|
|
||||||
vn -0.825892 0.532365 -0.185644
|
|
||||||
vn 0.175909 0.539384 -0.823450
|
|
||||||
vn 0.539384 0.175909 -0.823450
|
|
||||||
vn 0.823450 0.539384 -0.175909
|
|
||||||
vn 0.823450 0.175909 0.539384
|
|
||||||
vn 0.175909 0.539384 0.823450
|
|
||||||
vn -0.185644 -0.532365 -0.825892
|
|
||||||
vn -0.825892 0.185644 0.532365
|
|
||||||
vn 0.964110 -0.187689 -0.187689
|
|
||||||
vn 0.187689 -0.187689 0.964110
|
|
||||||
vn 0.187689 -0.964110 0.187689
|
|
||||||
s 1
|
|
||||||
f 15/1/1 17/2/2 21/3/3
|
|
||||||
f 48/4/4 34/5/5 32/6/6
|
|
||||||
f 63/1/7 65/3/8 69/2/9
|
|
||||||
f 36/7/10 22/8/11 28/9/12
|
|
||||||
f 7/10/13 23/11/14 35/12/15
|
|
||||||
f 12/13/16 52/14/17 4/15/18
|
|
||||||
f 72/14/19 18/13/20 64/16/21
|
|
||||||
f 84/6/22 30/17/23 26/4/24
|
|
||||||
f 96/5/25 42/4/26 38/17/27
|
|
||||||
f 92/18/28 54/19/29 50/20/30
|
|
||||||
f 68/8/31 78/7/32 70/21/33
|
|
||||||
f 80/5/34 90/4/35 86/17/36
|
|
||||||
f 91/22/37 79/12/38 67/11/39
|
|
||||||
f 71/11/40 73/12/41 19/10/42
|
|
||||||
f 59/11/43 61/12/44 1/10/45
|
|
||||||
f 24/14/46 6/13/47 16/16/48
|
|
||||||
f 75/23/49 77/24/50 81/25/51
|
|
||||||
f 83/12/52 85/11/53 37/10/54
|
|
||||||
f 27/23/55 29/25/56 33/24/57
|
|
||||||
f 87/26/58 89/27/59 93/28/60
|
|
||||||
f 51/29/61 53/30/62 57/31/63
|
|
||||||
f 39/26/64 41/28/65 45/27/66
|
|
||||||
f 56/13/67 66/14/68 58/15/69
|
|
||||||
f 95/12/70 49/11/71 11/10/72
|
|
||||||
f 8/19/73 46/18/74 44/32/75
|
|
||||||
f 1/10/45 2/19/76 3/30/77
|
|
||||||
f 5/30/78 6/13/47 7/10/13
|
|
||||||
f 9/30/79 10/19/80 11/10/72
|
|
||||||
f 13/22/81 14/4/82 15/27/1
|
|
||||||
f 17/30/2 18/13/20 19/10/42
|
|
||||||
f 21/3/3 22/8/11 23/11/14
|
|
||||||
f 25/22/83 26/4/24 28/18/12
|
|
||||||
f 29/27/56 30/4/23 32/18/6
|
|
||||||
f 33/24/57 34/5/5 36/7/10
|
|
||||||
f 37/10/54 38/13/27 40/19/84
|
|
||||||
f 41/27/65 42/4/26 44/18/75
|
|
||||||
f 45/27/66 46/18/74 48/4/4
|
|
||||||
f 49/11/71 50/8/30 51/3/61
|
|
||||||
f 53/30/62 54/19/29 55/10/85
|
|
||||||
f 57/3/63 58/8/69 59/11/43
|
|
||||||
f 61/12/44 62/7/86 63/24/7
|
|
||||||
f 65/3/8 66/14/68 67/11/39
|
|
||||||
f 69/3/9 70/8/33 71/11/40
|
|
||||||
f 73/12/41 74/7/87 76/5/88
|
|
||||||
f 77/24/50 78/7/32 80/5/34
|
|
||||||
f 81/24/51 82/7/89 84/5/22
|
|
||||||
f 85/11/53 86/8/36 88/14/90
|
|
||||||
f 89/27/59 90/4/35 92/18/28
|
|
||||||
f 93/24/60 94/7/91 96/5/25
|
|
||||||
f 2/15/76 6/13/47 3/31/77
|
|
||||||
f 8/19/73 10/20/80 5/30/78
|
|
||||||
f 12/13/16 4/15/18 9/30/79
|
|
||||||
f 14/15/82 18/13/20 15/31/1
|
|
||||||
f 20/21/92 22/8/11 17/2/2
|
|
||||||
f 24/14/46 16/16/48 21/3/3
|
|
||||||
f 26/4/24 30/17/23 29/26/56
|
|
||||||
f 32/6/6 34/5/5 33/24/57
|
|
||||||
f 36/7/10 28/9/12 27/23/55
|
|
||||||
f 38/17/27 42/4/26 41/27/65
|
|
||||||
f 44/32/75 46/18/74 45/27/66
|
|
||||||
f 48/4/4 40/17/84 39/26/64
|
|
||||||
f 50/20/30 54/19/29 51/29/61
|
|
||||||
f 56/13/67 58/15/69 53/30/62
|
|
||||||
f 60/16/93 52/14/17 57/1/63
|
|
||||||
f 62/16/86 66/14/68 63/1/7
|
|
||||||
f 68/8/31 70/21/33 65/3/8
|
|
||||||
f 72/14/19 64/16/21 69/3/9
|
|
||||||
f 74/9/87 78/7/32 77/24/50
|
|
||||||
f 80/5/34 82/6/89 81/25/51
|
|
||||||
f 84/6/22 76/5/88 75/24/49
|
|
||||||
f 86/17/36 90/4/35 89/27/59
|
|
||||||
f 92/18/28 94/32/91 93/28/60
|
|
||||||
f 96/5/25 88/6/90 87/25/58
|
|
||||||
f 55/10/85 67/11/39 56/13/67
|
|
||||||
f 61/12/44 59/11/43 62/7/86
|
|
||||||
f 71/11/40 19/10/42 72/14/19
|
|
||||||
f 13/22/81 61/12/44 14/4/82
|
|
||||||
f 23/11/14 7/10/13 24/14/46
|
|
||||||
f 1/10/45 13/22/81 2/19/76
|
|
||||||
f 11/10/72 49/11/71 12/13/16
|
|
||||||
f 59/11/43 1/10/45 60/14/93
|
|
||||||
f 67/11/39 79/12/38 68/8/31
|
|
||||||
f 73/12/41 71/11/40 74/7/87
|
|
||||||
f 83/12/52 31/22/94 30/4/23
|
|
||||||
f 25/22/83 73/12/41 76/5/88
|
|
||||||
f 35/12/15 23/11/14 36/7/10
|
|
||||||
f 19/10/42 25/22/83 20/19/92
|
|
||||||
f 79/12/38 91/22/37 90/4/35
|
|
||||||
f 85/11/53 83/12/52 82/7/89
|
|
||||||
f 95/12/70 43/22/95 42/4/26
|
|
||||||
f 37/10/54 85/11/53 88/14/90
|
|
||||||
f 47/22/96 35/12/15 34/5/5
|
|
||||||
f 31/22/94 37/10/54 40/19/84
|
|
||||||
f 91/22/37 55/10/85 54/19/29
|
|
||||||
f 49/11/71 95/12/70 94/7/91
|
|
||||||
f 7/10/13 47/22/96 46/18/74
|
|
||||||
f 43/22/95 11/10/72 10/19/80
|
|
||||||
f 3/31/77 5/30/78 9/29/79
|
|
||||||
f 40/17/84 48/4/4 32/6/6
|
|
||||||
f 22/8/11 20/21/92 28/9/12
|
|
||||||
f 47/22/96 7/10/13 35/12/15
|
|
||||||
f 52/14/17 60/16/93 4/15/18
|
|
||||||
f 18/13/20 14/15/82 64/16/21
|
|
||||||
f 76/5/88 84/6/22 26/4/24
|
|
||||||
f 88/6/90 96/5/25 38/17/27
|
|
||||||
f 94/32/91 92/18/28 50/20/30
|
|
||||||
f 78/7/32 74/9/87 70/21/33
|
|
||||||
f 82/6/89 80/5/34 86/17/36
|
|
||||||
f 55/10/85 91/22/37 67/11/39
|
|
||||||
f 73/12/41 25/22/83 19/10/42
|
|
||||||
f 61/12/44 13/22/81 1/10/45
|
|
||||||
f 6/13/47 2/15/76 16/16/48
|
|
||||||
f 31/22/94 83/12/52 37/10/54
|
|
||||||
f 66/14/68 62/16/86 58/15/69
|
|
||||||
f 43/22/95 95/12/70 11/10/72
|
|
||||||
f 10/20/80 8/19/73 44/32/75
|
|
||||||
f 4/13/18 1/10/45 3/30/77
|
|
||||||
f 8/19/73 5/30/78 7/10/13
|
|
||||||
f 12/13/16 9/30/79 11/10/72
|
|
||||||
f 16/18/48 13/22/81 15/27/1
|
|
||||||
f 20/19/92 17/30/2 19/10/42
|
|
||||||
f 24/14/46 21/3/3 23/11/14
|
|
||||||
f 26/4/24 27/27/55 28/18/12
|
|
||||||
f 30/4/23 31/22/94 32/18/6
|
|
||||||
f 34/5/5 35/12/15 36/7/10
|
|
||||||
f 38/13/27 39/30/64 40/19/84
|
|
||||||
f 42/4/26 43/22/95 44/18/75
|
|
||||||
f 46/18/74 47/22/96 48/4/4
|
|
||||||
f 52/14/17 49/11/71 51/3/61
|
|
||||||
f 56/13/67 53/30/62 55/10/85
|
|
||||||
f 60/14/93 57/3/63 59/11/43
|
|
||||||
f 64/5/21 61/12/44 63/24/7
|
|
||||||
f 68/8/31 65/3/8 67/11/39
|
|
||||||
f 72/14/19 69/3/9 71/11/40
|
|
||||||
f 74/7/87 75/24/49 76/5/88
|
|
||||||
f 78/7/32 79/12/38 80/5/34
|
|
||||||
f 82/7/89 83/12/52 84/5/22
|
|
||||||
f 86/8/36 87/3/58 88/14/90
|
|
||||||
f 90/4/35 91/22/37 92/18/28
|
|
||||||
f 94/7/91 95/12/70 96/5/25
|
|
||||||
f 6/13/47 5/30/78 3/31/77
|
|
||||||
f 10/20/80 9/29/79 5/30/78
|
|
||||||
f 4/15/18 3/31/77 9/30/79
|
|
||||||
f 18/13/20 17/30/2 15/31/1
|
|
||||||
f 22/8/11 21/3/3 17/2/2
|
|
||||||
f 16/16/48 15/1/1 21/3/3
|
|
||||||
f 27/27/55 26/4/24 29/26/56
|
|
||||||
f 29/25/56 32/6/6 33/24/57
|
|
||||||
f 33/24/57 36/7/10 27/23/55
|
|
||||||
f 39/26/64 38/17/27 41/27/65
|
|
||||||
f 41/28/65 44/32/75 45/27/66
|
|
||||||
f 45/27/66 48/4/4 39/26/64
|
|
||||||
f 54/19/29 53/30/62 51/29/61
|
|
||||||
f 58/15/69 57/31/63 53/30/62
|
|
||||||
f 52/14/17 51/3/61 57/1/63
|
|
||||||
f 66/14/68 65/3/8 63/1/7
|
|
||||||
f 70/21/33 69/2/9 65/3/8
|
|
||||||
f 64/16/21 63/1/7 69/3/9
|
|
||||||
f 75/23/49 74/9/87 77/24/50
|
|
||||||
f 77/24/50 80/5/34 81/25/51
|
|
||||||
f 81/25/51 84/6/22 75/24/49
|
|
||||||
f 87/26/58 86/17/36 89/27/59
|
|
||||||
f 89/27/59 92/18/28 93/28/60
|
|
||||||
f 93/24/60 96/5/25 87/25/58
|
|
||||||
f 67/11/39 66/14/68 56/13/67
|
|
||||||
f 59/11/43 58/8/69 62/7/86
|
|
||||||
f 19/10/42 18/13/20 72/14/19
|
|
||||||
f 61/12/44 64/5/21 14/4/82
|
|
||||||
f 7/10/13 6/13/47 24/14/46
|
|
||||||
f 13/22/81 16/18/48 2/19/76
|
|
||||||
f 49/11/71 52/14/17 12/13/16
|
|
||||||
f 1/10/45 4/13/18 60/14/93
|
|
||||||
f 79/12/38 78/7/32 68/8/31
|
|
||||||
f 71/11/40 70/8/33 74/7/87
|
|
||||||
f 84/5/22 83/12/52 30/4/23
|
|
||||||
f 26/4/24 25/22/83 76/5/88
|
|
||||||
f 23/11/14 22/8/11 36/7/10
|
|
||||||
f 25/22/83 28/18/12 20/19/92
|
|
||||||
f 80/5/34 79/12/38 90/4/35
|
|
||||||
f 86/8/36 85/11/53 82/7/89
|
|
||||||
f 96/5/25 95/12/70 42/4/26
|
|
||||||
f 38/13/27 37/10/54 88/14/90
|
|
||||||
f 48/4/4 47/22/96 34/5/5
|
|
||||||
f 32/18/6 31/22/94 40/19/84
|
|
||||||
f 92/18/28 91/22/37 54/19/29
|
|
||||||
f 50/8/30 49/11/71 94/7/91
|
|
||||||
f 8/19/73 7/10/13 46/18/74
|
|
||||||
f 44/18/75 43/22/95 10/19/80
|
|
Binary file not shown.
Before Width: | Height: | Size: 10 KiB |
Reference in New Issue
Block a user